Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - pastbytes

Páginas: 1 [2]
16
General / Carga de programas por RS232 en Commodore 64
« en: Marzo 14, 2016, 13:10:36 »
Esto es un poco de soft y otro de hard, y es un proyecto derivado del desarrollo del sintetizador de voz para C64.
Para poder usar el sintetizador de voz con PIC en juegos, se me ocurrio controlarlo a 57600 bps, para que el envio de un byte tomara la menor cantidad de tiempo posible y dejara tiempo para el codigo del juego. Esto lo pude hacer perfectamente, pero despues se me ocurrio ver si el C64 podia leer datos desde el sintetizador, y al haber elegido esa velocidad para el envio, no quedaba otra que experimentar para ver si era posible.
Las pruebas con el sintetizador anduvieron bien, pero en el sintetizador todo funciona con situaciones controladas, se emite un byte y luego se recibe respuesta, el sintetizador no envia nada sin que antes envie el C64.
Para probar que tan lejos se podia llegar recibiendo datos a esa velocidad, me arme una interfaz RS232 para C64, ya que no tenia una, para poder probar la comunicacion con el PC, y ahi la recepcion ya no era tan buena. La placa que arme es un poco improvisada, pero dado que nunca envio y recibo a la vez, no deberia haber problemas de interferencias entre señales. La placa es un modulo para la placa de sintetizador de voz, ya que no tengo mas conectores para el puerto del usuario, decidi reemplazar el modulo con el PIC y poner el modulo RS232 en su lugar. Hay un monton de componentes que no tenia porque justamente son los que mas uso y arme demasiadas placas con esos, asi que no pude usar un MAX232 (por falta de capacitores de 1uF), y decidi armar la adaptacion de voltajes con un 7404, 4 resistencias y un diodo 1N4148, tal como hice en la placa para PC. En este caso no se alimenta del RS232 sino del puerto del usuario.
Van unas fotos, la placa grande es la del sintetizador de voz, que es modular, en las placas chicas normalmente va el PIC con el filtro de salida de audio, el resto (leds, jumpers, cristal) esta en la placa grande, porque es comun a todas las versiones. Yo aca estoy usando de eso nada mas que el conector para el puerto del usuario, y las señales RX, TX y masa.

17
General / Proyecto de sintetizador de voz por hard
« en: Enero 11, 2016, 00:56:46 »
El mes pasado empece un nuevo sintetizador de voz, que aunque ya tiene una minima funcionalidad, aun tiene mucho camino por delante antes de estar terminado. Ya habia publicado algunos videos de los otros dos sintetizadores que pude probar con Commodore (ademas de con otros 8 y 16 bits), para el que no los vio, son estos hilos:
http://retroinvaders.com/commodoremania/foro/index.php/topic,1170.0.html
http://retroinvaders.com/commodoremania/foro/index.php/topic,1228.0.html

Estos sintetizadores estan implementados usando microcontroladores PIC, un 16F648A en el caso del HR4, y un 16F886 en el caso del HR5. Reciben los comandos en modo texto a 1200, 4800, 9600 o 19200 bps, en los C64, C128 y Plus/4 se lo conecta al puerto del usuario, y se usan los comandos del BASIC para abrir el puerto RS232, en C64 hay que usar 1200 bps porque al estar implementado por soft no es conveniente usar una velocidad mas alta. En el Plus/4, que tiene un puerto RS232 por hard, se puede usar 19200 bps sin problemas.
El nuevo sintetizador HD1 mejora drasticamente la inteligibilidad de la voz, se entiende mucho mas sin tener que mostrar el texto en pantalla, y por ahora esta hecho con el PIC y la placa de un HR5, por lo que es compatible con el soft que utilizar los HR4 y HR5, pero esto no sera asi por mucho tiempo.
Mi intencion es que este sintetizador se conecte directamente al puerto de cartuchos, y funcione como un chip de sonido, con 3 canales de sonido musicales y 1 canal de voz. Tambien es probable que le agregue un zocalo para manejar una tarjeta SD, donde se pueda precargar audio de 8 bits para que el chip lo reproduzca, o wavs de instrumentos, ya que el chip esta basado en tablas de ondas. Vendria a ser algo intermedio entre un SID y Paula.
Como ademas el PIC tiene hard extra que va a estar ahi sin usar, y varios pines libres, seguramente voy a agregar algunas funciones mas en el futuro.
El problema importante que voy a tener, es que hay que hacer versiones para cada sistema, ya que los buses de expansion son distintos en C64, C128, Plus/4, etc. Si bien en C128 es compatible con C64, yo me estoy refiriendo especificamente al modo 128. Por todo esto, dudo que este proyecto este terminado antes de 1 año.

Pero todo empieza en alguna parte, y por ahora hice las primeras pruebas de sintesis de voz, enviandole textos desde PC por RS232, enviando un texto con la descripcion tecnica del sintetizador (para probar el nivel de inteligibilidad de la voz), y luego dos textos para probar la entonacion, para darle mas naturalidad a la voz, un fragmento del Martin Fierro, y el texto de apertura de la serie Star Trek:

Sintetizador de voz HD1 (2016)

Tambien reemplace el chip HR5 por el HD1 y pude probar la aventura conversacional Neutronia en C128, aunque hice un video solo de la version MSX, que es la ultima y tiene el texto mejor pronunciado (la version para C128 fue la primera), ademas de otro juego tambien adaptado para los sintetizadores HR:

Prueba de sintetizador HD1 en MSX

Ese es el estado actual del proyecto, ahora sigue mejorar la voz, y despues rehacer la parte del sintetizador musical. Tambien el chip va a aceptar directamente castellano escrito (ahora hay que escribirlo foneticamente), como primer paso para que en el futuro se pueda adaptar algun motor de aventuras conversacionales para que lea el texto de la pantalla, y asi no tener que almacenar el texto para el sintetizador aparte del texto de pantalla.
Por un tiempo va a estar controlado por RS232, pero cuando ya este usable el sintetizador musical, voy a empezar a probarlo directamente en el puerto de expansion del C64.

18
Commodore Amiga / Gráficos de Amiga y C64 por Jim Sachs
« en: Marzo 03, 2015, 14:51:26 »
No lo vi mencionado en el foro asi que no se si ya es sabido por aqui, pero el autor del juego de C64, Saucer Attack, es muy conocido en el mundo amiguero por sus graficos, aqui se puede ver un resumen de sus trabajos en su sitio:  http://www.fish-byte.com/AboutAuth.htm
En su canal de youtube se pueden ver algunas animaciones:  https://www.youtube.com/user/JDSachs/videos
Esta es una demo que envio a Disney para un juego que pensaba hacer y nunca se llego a concretar, dice en el video que todos esos graficos estan hechos en Amiga:

20KL Late
La demo de la CD32 tiene algunos homenajes con graficos actualizados, por ejemplo del Saucer Attack.

CD32 Demo
En su sitio menciona un juego para C64 que nunca salio, Time Crystal, del que esta disponible una demo:  http://gamebase64.com/game.php?id=7950&d=18&h=0
Tambien hay un video en youtube:

Jim Sachs Time Crystal demo

Aca hay una entrevista con algunas imagenes:  http://www.pcmuseum.ca/sachs1.asp
Y en este sitio hay una galeria con mas imagenes:  http://amiga.lychesis.net/artist/JimSachs.html

19
Desde hace tiempo queria concretar algunas cosas independientes que ahora con este proyecto se logran todas juntas.
Hace bastante que deje de comprar ordenadores porque habia conseguido unos cuantos y nunca tuve tiempo de usarlos, asi que en cierto momento decidi que trataria de usarlos, en la medida de lo posible programandolos en asm, sino en BASIC, o por lo menos probando soft o hard. Esa es la razon por la que entre otras cosas porte mi sintetizador de voz por soft a varias plataformas para las que no habia programado nunca.
Y en este caso son varias las cosas que queria realizar, primero queria conectar el Commodore 128 por RGBI para ver 80 columnas en colores, ya tenia un cable armado para verlas por video compuesto, pero no era lo mismo. Otra cosa que queria probar era lo de controlar los dos chips de video a la vez, tambien por supuesto programar algo en el BASIC del C128, que tendria que funcionar en 80 columnas para que fuera algo que no pareciera un programa de C64. Y la ultima cosa que queria hacer era adaptar una aventura conversacional para que usara mi chip de voz.
Si bien ya hace unos meses vengo preparando textos, armando placas, investigando cosas, nunca tuve tiempo para ponerme manos a la obra, y en los ultimos dias decidi dedicarme a esto para que no pasara mas tiempo.
Lo que hice fue adaptar una aventura conversacional que a su vez fue adaptada antes para MSX-BASIC, "La nave espacial condenada", hacerle unos cambios para que funcionara en el C128 en 80 columnas, darle un poco de color y formato, y agregarle luego los comandos de voz.
Lo primero fue armar de nuevo una placa para el modulo de voz, y probarla en el C128:





Despues me arme el cable RGBI para conectar el monitor Commodore 2002 y ver las 80 columnas como corresponde:



Como siguiente paso adapte la aventura editando el programa en un editor de texto y pegando el codigo en VICE para tener un entorno de desarrollo mas comodo, pero con el problema de que no podia probar los comandos de voz, por lo que aproveche para experimentar con doble pantalla. Use la pantalla de 80 columnas para mostrar el texto normal de la aventura, y la pantalla de 40 columnas para imprimir los comandos foneticos que irian al modulo de voz, como puede verse aqui:



Pantalla con el texto final de la aventura:



Pantalla con el texto fonetico para el modulo de voz:



Video de la prueba con monitor dual:

Prueba de Commodore 128 con dos monitores

Una vez probado todo eso, solo quedaba adaptar la aventura reemplazando los comandos del segundo monitor por los que envian el texto al modulo de voz, y aqui se ve el resultado final, primero corriendo el programa para ver el funcionamiento de la placa, y luego un poco de la partida con la camara fija apuntando al monitor:

Aventura conversacional hablada con módulo de voz HR5 en Commodore 128

Como comente en mi sitio, falta agregar algunos textos, pero la modificacion del programa, a pesar de estar basado en variables y lineas DATA, resulto ser mas simple de lo que esperaba. Tal vez algun dia lo complete, pero dudo que haya muchos interesados en aventuras conversacionales que tengan C128, monitor para 80 columnas y modulo de voz HR4 o HR5, asi que es un mercado mas que reducido.  ;)

20
Commodore 16 / Plus 4 / Prueba de juego en BASIC con modulo de voz HR4
« en: Septiembre 28, 2014, 18:20:16 »
Hace tiempo que queria probar un juego de accion con el modulo sintetizador de voz y no encontraba alguno adecuado. Tenian que cumplirse varias condiciones para encontrar un juego donde se complementara bien, no tenia que ser simplemente un extra que no aportara mucho, y tenia que conservarse la velocidad del juego, aunque en BASIC ya es bastante poca.
Despues de un par de dias probando voces opte por usar mas voz robotica y eco que voz natural (es decir acentuada), revise algunos juegos en BASIC que habia descargado para Plus/4 e hice textos de prueba con el sintetizador antes de ponerme a modificar un juego. Por fin me decidi a hacer algo parecido al Parsec de Texas Instruments TI-99/4A, para el que no lo conoce, ese juego solo y el modulo de voz de Texas justifican la compra del TI-99/4A.
Encontre un juego con ese estilo que estuviera hecho en BASIC, es este: http://plus4world.powweb.com/software/Guerra_Galactica
Como ya habia hecho los mensajes que se iban a usar, en unos minutos quedo listo, luego de dos intentos porque hice las modificaciones en VICE sin poder usar el modulo de voz, y luego debia probarlo en el Plus/4 para sincronizar el sonido con el juego. Capture un video directamente desde la salida de video compuesto del Plus/4, y como el juego tenia sonido (disparos y algunos tonos), capture en estereo usando el canal izquierdo para el Plus/4 y el derecho para el modulo de voz, la primera prueba la hice usando unos altavoces de PC para el sintetizador y escuchando al Plus/4 por los altavoces del monitor Commodore.
Este es el video de la prueba:

Guerra galactica en Commodore Plus/4 con modulo de voz HR4

Iba a alterar un poco el texto del juego pero al final lo deje como estaba originalmente, y adapte la voz lo mejor que pude a eso, aunque la voz por supuesto habla en español rioplatense.

21
Esto esta relacionado con el tema http://retroinvaders.com/commodoremania/foro/index.php/topic,576.msg10123.html#msg10123 pero como no tiene que ver con Commodore 64 lo publico en este foro.
Resumo para el que no sabe de que se trata, hace un tiempo hice un sintetizador de voz con un microcontrolador PIC16F648A, a medida que fue avanzando el proyecto se agrego la posibilidad de cantar, y luego se le agregaron funciones de sintetizador musical. Las funciones de ruido y sonido son realmente muy basicas, porque el PIC solo dispone de 4K de programa y 256 bytes de RAM, ni siquiera cabian en la memoria inicialmente, y solo despues de varias optimizaciones se pudieron agregar.
Si bien ya hice muchas pruebas enviandole comandos para generar voz y musica, tenia curiosidad de saber que tan bien podria funcionar como sintetizador musical controlado en tiempo real, por lo cual se me ocurrio hacer un programa para MSX, ya que el BASIC es potente y permitia desarrollar algo rapidamente. Aun asi tuve bastantes complicaciones, la principal es la repeticion automatica de las teclas, ya que la idea era disparar un sonido cuando se presionara una tecla, y detenerlo cuando se liberara. Con la auto repeticion lo que ocurria era que automaticamente se liberaba y presionaba la tecla desde el sistema repetidamente, lo que llevo a usar algunos trucos para detectar cuando estaba realmente presionada.
Una vez que quedo el programa funcionando, se me ocurrio probarlo en el Plus/4, que tiene un buen BASIC y una UART, asi que hice una adaptacion del programa para MSX, y tenia el mismo problema de la repeticion, que por suerte se puede deshabilitar con un POKE. El nuevo problema luego de deshabilitar la repeticion de teclas fue que la instruccion GET ya no lee mas teclas mientras esta presionada, es decir solo lee la tecla cuando se presiona, y despues no se puede saber en que momento se libera. Para esto tuve que recurrir a leer una direccion de memoria para darme cuenta cuando no habia ninguna tecla presionada. El programa funciono muy bien, pero tanto en la version para MSX como en la version para Plus/4 hay un retardo entre tecla y tecla, que los hace impracticos para tocar musica, sin embargo sirven para experimentar con distintos parametros del sintetizador.
Esta es una captura de la version para MSX, donde se tiene que usar un solo color de texto para toda la pantalla, a menos que se use un modo bitmap:



Y esta es una captura de la version para Plus/4:



Hice un video probando el programa, de musica no se nada asi que solo pruebo notas al azar cambiando distintos parametros, volumen, octava, instrumento, modo de modulacion, tipo y duracion de envolvente. Como dije, las funciones musicales son muy basicas, el programa del PIC esta dedicado en su mayoria a sintetizar voz, si algun dia tengo tiempo lo usare en algun juego.

Sintetizador HR4 controlado desde Commodore Plus/4

22
General / Presentacion y nuevo programa para C64
« en: Enero 14, 2012, 12:55:26 »
Saludos a todos desde Argentina, hacia unas semanas que intentaba registrarme, siguiendo una invitacion por parte de josepzin, pero por alguna razon no me aceptaba el registro. Como sea ya estoy aqui, estuve mirando un poco el foro y por lo que vi parece que no se estila aqui presentarse antes de publicar algo, pero por si acaso va presentacion y publicacion todo en uno.
Soy Jorge Castillo, uno de los administradores de retrocomputacion.com, mi usuario alla tambien es pastbytes, que viene de mi sitio pastbytes.com, bastante abandonado hace años pero que un dia de estos volvera a actualizarse, espero.
Se podria decir que soy coleccionista porque tengo unas cuantas maquinas (que en este sitio serian mas bien ordenadores), pero prefiero considerarme mas bien usuario, ya que si es una coleccion es mas por cantidad que por calidad, en el sentido de que me interesa mas probar distintas plataformas, software y accesorios que en su tiempo no pude, mas que tener algo inconseguible y guardarlo en caja cerrada sin haberlo usado nunca.
La primera maquina que vi en persona fue una TK85 (clon brasilero de 16K del ZX81), en una feria de ciencias cuando estaba en el ultimo año de la primaria, alla por 1985, fue impresionante ver corriendo un simulador de vuelo en una maquina que controlaba lo que se veia en el TV.  :o
Tal fue el impacto que tuvo en mi ese evento que al año siguiente me compraron un Commodore 64 (Drean 64C) y empece un curso de programacion BASIC, por suerte era el momento justo en el pais, 1986, cuando se podian comprar maquinas de Drean (todos clones de Commodore) a credito, junto con otras como las Talent MSX o Atari 800XL. Por suerte en el curso (que empece antes de tener una maquina) usaban C64s con disketeras 1541, y C128 con 1571 y monitor 1902, asi que termine eligiendo Commodore. En ese momento por las publicidades en las revistas K64 que empece a comprar, no me decidia entre C64 y Atari 800XL, menos mal que no elegi Atari, porque tal vez no hubiera llegado muy lejos.
De 1986 hasta 1991 fui usuario y programador de C64, ya en el ultimo año hacia todo en GEOS con mi 1541 que aun conservo aunque ya sin funcionar, e imprimia con una interfaz Centronics en mi Epson LX-810, no habia PC que pudiera competir contra un documento hecho combinando GeoWrite y GeoPaint. 8)
En 1992 se termino para mi el mundo C64 pero no por la compra de un PC, ya que nunca me llamaron la atencion, en lugar de eso tuve mi primer Amiga, un A2000 con flickerfixer, 1MB chip, 512K fast, reloj y monitor 1950, con eso no habia PC que pudiera competir. Si bien use PC (286) desde el 93 por cuestiones de trabajo (empece a programar PIC), recien compre un 486 en 1994 cuando lo necesitaba para la universidad, para correr Unix y Visual Basic, desde ahi use Amiga y PC en conjunto, conectados por RS232 o usando diskettes para intercambiar informacion.
Los ultimos 2 o 3 años de los 90s ya no estaba usando nada mas que PC, pero en el 2000 descubri la perdicion (ebay) y empece a comprar maquinas, programas y accesorios que siempre quise y no se me habia ocurrido que podria volver a encontrar. A partir de ahi es que volvi al C64 y tambien descubri plataformas que solo habia visto en revistas, asi que si bien mis maquinas preferidas son C64 y Amiga, y son sin duda las que mas uso y conozco, estoy bastante diversificado. Me parece que cada plataforma tiene algo interesante para destacar, y en los ultimos meses pude comprobarlo un poco mas en profundidad, ya que estuve convirtiendo un programa que hice a varios sistemas de 8 bits.
Bueno, terminada la presentacion un tanto extensa, les dejo el programa al que hacia referencia, un sintetizador de voz que use como experimento para darme el gusto de programar en distintas plataformas que habia usado poco y nada, empece con una version primitiva para C64 en BASIC, y como sonaba mejor de lo esperado, despues de un tiempo decidi hacer una version completa en ensamblador. Cuando tuve hecha esa version empece a convertirlo a sistemas con Z80, lo que me sirvio como excusa para aprender ensamblador de Z80, algo que de otro modo probablemente no hubiera ocurrido nunca.
El programa lo pueden encontrar aqui: http://www.pastbytes.com/apps/tav/
Hay un enlace para descargar todas las versiones disponibles y algun manual que no esta del todo actualizado. El programa logicamente esta diseñado para el idioma castellano, aunque no para procesar la gramatica del lenguaje, hay que escribir mas bien foneticamente, eso esta explicado en el manual, donde sale una tabla con los comandos que se pueden usar para representar los fonemas.
La version para C64 viene en una imagen D64, que al arrancar carga el programa que se puede probar de inmediato ingresando texto, y va escribiendo los comandos a medida que se ejecutan. Ademas de esta version hay otra en el mismo disco, que consiste en dos partes, una en codigo maquina que debe cargarse con ,8,1 y se ubica a partir de la direccion 49152, y otra en BASIC que sirve de ejemplo de uso y cumple la misma funcion que el programa integrado. El que tiene la interfaz integrada se carga en el espacio del BASIC y por lo tanto no sirve para usarlo desde un programa BASIC, el que se carga en 49152 si puede ser usado desde BASIC, asignando un texto a la variable ZZ$ y llamando al programa con SYS 49152.
Los sonidos son generados digitalmente, algunos estan almacenados en memoria, otros generados por programa, y otros combinando ambos metodos, las primeras versiones eran "analogicas", es decir que usaban las voces del SID para generar los sonidos. Todo el programa esta hecho para ocupar menos de 4K, y como se carga fuera del area del BASIC, no le resta memoria de programa al usuario.
La pagina esta en construccion, asi que aun falta explicar todo el desarrollo desde que converti el programa a sonido digital, que es como funciona actualmente.

Páginas: 1 [2]