Para variar un poco, queria probar algun juego en BASIC pero en PC, y que tuviera algo de graficos. Ademas buscaba que corriera en una XT de 4,77 MHz, lo cual limitaba mucho las posibilidades. No encontre juegos de naves que era lo que me parecia que iba a quedar mejor (esta lleno de juegos de aventuras y de estrategia, todo en modo texto), hasta que di con el juego de Bill Gates: donkey.bas. No es un gran juego, pero cumple con las condiciones: va bien en una XT original, tiene algo de graficos, y se adapta al agregado de voz y efectos de sonido. En un rato de modificarlo ya estuvo andando, lo probe en mi Fujitsu PoqetPC Plus, primero a 4 MHz para aproximar la velocidad a una IBM XT, ya que la maquina tiene un NEC V30 que puede funcionar en 4 velocidades: 2, 4, 8 y 16 MHz. El video es CGA pero en pantalla LCD monocromo (y con los "colores" invertidos). La prueba la hice con la placa del sintetizador que se alimenta del puerto RS232, pero en este caso actualizada a HR6. Despues probe el juego con DOSBox en la PC con Linux, y selecciono el audio original del juego y el audio del sintetizador, que en esta ocasion es el HD1. El video tiene notas que van explicando lo que se hace.
Esto de retro tiene poco y nada, pero necesitaba probar el puerto RS232 en una Raspberry Pi 3 y aproveche para hacerlo con la placa del sintetizador HD1 para MSX. Solo tiene conectadas las lineas TX, masa y 3,3V, en lugar de los 5V que le daria el puerto de joystick de la MSX. Cuando la Pi arranca no se si es que genera ruido en el puerto o envia informacion de debug, porque empieza a hablar cualquier cosa. Aca se ve la prueba en un video, controlandolo desde GTKTerm, no hay mucho para ver pero es lo que hay, ultimamente estoy haciendo algunas cosas de los sintetizadores pero me queda poco tiempo para terminarlas.
Hace tiempo que vengo planificando unas rutinas para controlar los sintetizadores de voz desde la C64 como tarea de fondo, implementando un buffer de envio y enviando en cada interrupcion (50 o 60 veces por segundo) un byte del buffer, pero a 57600 bps. Segun mis calculos 50 o 60 caracteres por segundo debian ser suficientes para que el programa pudiera hablar fluidamente, y a la vez el enviarlos a 57600 bps minimizaria el tiempo utilizado en la interrupcion. Todo esto era teoria, y nunca implemente las rutinas porque habia que resolver la forma de uso desde el BASIC y asm de manera de que se pudiera llamar desde los dos sin tener que esperar a que se liberara el buffer. Es todo un problema de sincronizacion entre clientes para hacer mas practico el uso en juegos. Sin embargo las rutinas para enviar y recibir a 57600 bps estaban hechas y probadas, asi que se me ocurrio hacer una rutina de interrupcion simple que no sirviera mas que para pruebas, y asi es que cargue un texto en el buffer que se va enviando de a 1 byte por interrupcion de video (60 bytes por segundo en mi caso, que tengo una C64 NTSC), y cuando termina vuelve a repetirse indefinidamente. El resultado se puede ver en este video:
La rutina de interrupcion se ejecuta en la linea 251 del video, asegurandose de esa manera que no va a ser interrumpida por el video, ya que cae en el borde inferior, donde ya no se leen graficos desde la memoria. El envio de un byte tarda alrededor de 170 microsegundos, y la rutina cambia el color del borde a amarillo durante el envio, por lo que quedan en amarillo casi 3 lineas de video, durante el resto del borde inferior y luego el borde superior se puede agregar mas codigo para procesar un juego. Como mi rutina solo roba menos de 200 microsegundos 60 veces por segundo, no se nota lentitud en el BASIC, y hasta se puede consultar el directorio de la SD2IEC y ejecutar programas. Lo que tambien se puede apreciar es que el buffer del sintetizador esta siempre lleno (led azul encendido), por lo que 60 caracteres por segundo sobra para la voz, hay que ver si pasa lo mismo para enviar comandos musicales, que requieren una cantidad mayor de caracteres. Pero al menos ya esta probado que tiene posibilidades para usarse en un juego en asm, ahora solo queda implementar el codigo para que sea facil de usar.
Está buenísimo y la voz es muy entendible. Estaría bueno ponerla en un tema de música. Es muy fascinante todo el tema de síntesis de voz.
uctumi
El sintetizador este es experimental y todavia le falta mucho para estar terminado, pero esta listo el HR4 si queres armarte una placa, vas a necesitar un PIC16F648A y un grabador de PIC, aunque no tiene la misma calidad de voz. El circuito usado es este:
Es muy piola, mas allá del desarrollo de la sintesis de voz, el manejo que hiciste para poder transmitir datos a 57600 bps en una modorco estandar !
Beamrider
Me parece que se puede enviar a 115200 bps, pero no hay manera de recibir a esa velocidad, y el sintetizador tampoco la tiene habilitada. En una C128 a 2MHz tiene que poderse enviar y recibir a 115200 bps.