Bueno, como me estoy alargando mucho y no consigo resultados, publico lo que me funciona.
En el zip encontrarás un fichero .bit para programar el core por jtag, y si lo prefieres un .ZX1 para grabar desde bios.
Nota: Como es un core de Spectrum, no funciona si lo pones como core por defecto. Hay que abrir el menú de cores al arranque con BloqMays y seleccionarlo.
De momento sólo me funciona 1 canal estéreo en la memoria externa, más 1 canal en memoria interna, mono.
En el zip hay dos programas para seleccionar ficheros wav y reproducirlos. Uno carga en memoria externa, y el otro en la interna.
Con WAVBACKG.tap puedes seleccionar un .wav de la SD. Lo carga en la memoria externa y lo reproduce. Si sales del programa mientras está reproduciendo (por reset del Z80 o saliendo al menú NMI), el wav se sigue reproduciendo en bucle, por lo que puedes cargar un juego que tenga musica AY, y se oirá la mezcla con el wav. Este programa admite WAVs estéreo. Puedes detener la reproducción pulsando una tecla, y seleccionar otro fichero.
PLAYWAV.tap es muy similar al anterior, sólo que comienza a reproducir inmediatamente (sin la espera de cargar a sram), y lee continuamente de la SD mientras está reproduciendo. Es decir, usa dos búferes pequeños en memoria interna de la fpga, y mientras se está reproduciendo uno, en el otro se están cargando los datos siguientes a reproducir.
Por lo que si sales de este programa mientras está reproduciendo, se quedará loopeando un trozo de wav de menos de un segundo, y además se quedará el turbo x4 puesto. Por lo que no es recomendable salir del programa (pulsa una tecla para detener la reproducción) Sin embargo puedes cargar un wav en la memoria externa y después reproducir otro con este programa, sonarán a la vez.
Los wav han de ser en formato PCM 8 bits sin signo (unsigned 8 bit PCM). Pueden ser de cualquier frecuencia. Pueden ser estéreo para el canal de memoria externa.
Incluyo unos cuantos wavs de ejemplo en el zip.
Los programas imprimen información de lo que ocurre en cada momento. La selección de fichero a cargar es gráfica, con un menú similar al de NMI.
El código está aquí:
Código del core:
https://github.com/yomboprime/zxuno-add ... ter/wavuno
Código de los programas:
https://github.com/yomboprime/ZXYLib
Los programas están muy verdes y no lo he organizado como librería aún, mientras consigo reproducir más de un canal desde la memoria externa.
Además no he puesto aún la última versión del mixer del core de Spectrum.
Quiero agradecer a mcleod_Ideafix y al resto del equipo el entorno de ZX-Uno, que me ha servido para aprender mucho. Y lo que me queda...