¡Por fin! Música del Contra arcade en FPGA+YM2151

Foro dedicado a máquinas recreativas de salón, máquinas de construcción propia y réplicas.
Avatar de Usuario
jotego
Atari 1040 STf
Atari 1040 STf
Mensajes: 642
Registrado: 16 Ene 2013, 23:25
Sistema Favorito: Atari ST
primer_sistema: Amstrad CPC
consola_favorita: Sony PlayStation 2
Primera consola: Atari Lynx
Ubicación: Valencia (España)
Gracias dadas: 24 veces
Gracias recibidas: 29 veces

¡Por fin! Música del Contra arcade en FPGA+YM2151

Mensajepor jotego » 31 Ene 2015, 16:40

Por fin he conseguido sacar sonido a los chip YM2151 que compré. Ha costado mucho porque la documentación es pésima y hay mil cosas en que equivocarse. Lo que he hecho ha sido meter en una FPGA un 6809 usando uno de los módulos disponibles en opencores. Le he puesto también la RAM y "ROM". Cargo el programa a través del puerto serie. Una vez arranca le envío los comandos a través del puerto serie también. En la máquina original el procesador principal enviaba comandos a este 6809 y le disparaba una interrupción. Yo hago lo mismo desde el PC. La salida del YM2151 entra a la FPGA donde he implementado un equivalente al YM3012 (el DAC que usaba). Podéis oirlo en youtube, donde he subido un vídeo del milagro retro del día:



Avatar de Usuario
Tolaemon
Atari 1040 STf
Atari 1040 STf
Mensajes: 1017
Registrado: 16 May 2004, 22:29
Gracias dadas: 1 vez
Gracias recibidas: 2 veces

Re: ¡Por fin! Música del Contra arcade en FPGA+YM2151

Mensajepor Tolaemon » 31 Ene 2015, 17:09

Oleeee!! =D> =D> =D> =D> Que crack, ya te hare alguna pregunta "técncia" tengo algunos chips FM de Yamaha en casa! ¿ No te seria mas sencillo trabajar con un microcontrolador en lugar de con una FPGA ?

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5310
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 46 veces
Contactar:

Re: ¡Por fin! Música del Contra arcade en FPGA+YM2151

Mensajepor mcleod_ideafix » 31 Ene 2015, 18:11

Tolaemon escribió:¿ No te seria mas sencillo trabajar con un microcontrolador en lugar de con una FPGA ?

Con permiso, ya te respondo yo: Son bestias diferentes, y cada una es buena en su terreno. Lo que este hombre ha hecho con la FPGA es implementar un DAC que funciona con números en punto flotante que le proporciona el chip de sonido YM2151. No sé a qué frecuencia le envía los datos el YM, pero probablemente necesites un microcontrolador mejor que decentito para poder emular el funcionamiento del DAC en tiempo real. Con la FPGA la frecuencia de funcionamiento es la misma que la del chip original (o como mucho el doble, por aquello de seguir teniendo un sistema 100% síncrono)
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Conectado
Avatar de Usuario
PabloMarmol
Amstrad PCW 8256
Amstrad PCW 8256
Mensajes: 143
Registrado: 03 Sep 2012, 17:32
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
Primera consola: Nintendo NES/Clónica
Ubicación: León, España
Gracias dadas: 6 veces
Gracias recibidas: 6 veces

Re: ¡Por fin! Música del Contra arcade en FPGA+YM2151

Mensajepor PabloMarmol » 31 Ene 2015, 18:45



Avatar de Usuario
Tolaemon
Atari 1040 STf
Atari 1040 STf
Mensajes: 1017
Registrado: 16 May 2004, 22:29
Gracias dadas: 1 vez
Gracias recibidas: 2 veces

Re: ¡Por fin! Música del Contra arcade en FPGA+YM2151

Mensajepor Tolaemon » 02 Feb 2015, 16:08

mcleod_ideafix escribió: Lo que este hombre ha hecho con la FPGA es implementar un DAC que funciona con números en punto flotante que le proporciona el chip de sonido YM2151.


Ahh interesante. Es cierto, no recordaba que el YM2151 ( y casi todos los chips FM de Yamaha ) usaba un DAC externo. Pensaba que la FPGA solo la usaba para hacer de interfaz con el micro.

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5310
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 46 veces
Contactar:

Re: ¡Por fin! Música del Contra arcade en FPGA+YM2151

Mensajepor mcleod_ideafix » 02 Feb 2015, 18:44

jotego, una pregunta: el core AY-3-8910 que tienes hecho, ¿da la salida "mezclada" de los tres canales, o cada canal tiene salida aparte, como en el chip original? ¿Qué licencia de uso tiene este core? Es para usarlo en sustitución del core que tengo ahora mismo en el ZX-Uno, si el tuyo tiene las tres salidas independientes. Las licencias que son compatibles con el proyecto ZX-Uno son la GPL y la CC-by-SA
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
Lex Sparrow
Amiga 2500
Amiga 2500
Mensajes: 2770
Registrado: 28 Dic 2005, 12:26
Sistema Favorito: Amstrad CPC
primer_sistema: Amstrad CPC
consola_favorita: Nintendo NES/Clónica
Primera consola: TV Games/Pong Clone
Gracias dadas: 187 veces
Gracias recibidas: 28 veces
Contactar:

Re: ¡Por fin! Música del Contra arcade en FPGA+YM2151

Mensajepor Lex Sparrow » 02 Feb 2015, 19:05

Pues muchas gracias, @jotego. La música del Contra es una de mis preferidas.

Avatar de Usuario
jotego
Atari 1040 STf
Atari 1040 STf
Mensajes: 642
Registrado: 16 Ene 2013, 23:25
Sistema Favorito: Atari ST
primer_sistema: Amstrad CPC
consola_favorita: Sony PlayStation 2
Primera consola: Atari Lynx
Ubicación: Valencia (España)
Gracias dadas: 24 veces
Gracias recibidas: 29 veces

Re: ¡Por fin! Música del Contra arcade en FPGA+YM2151

Mensajepor jotego » 02 Feb 2015, 22:24

mcleod_ideafix escribió:jotego, una pregunta: el core AY-3-8910 que tienes hecho, ¿da la salida "mezclada" de los tres canales, o cada canal tiene salida aparte, como en el chip original? ¿Qué licencia de uso tiene este core? Es para usarlo en sustitución del core que tengo ahora mismo en el ZX-Uno, si el tuyo tiene las tres salidas independientes. Las licencias que son compatibles con el proyecto ZX-Uno son la GPL y la CC-by-SA


Repito la respuesta del privado:

Sí, el módulo principal saca las tres salidas independientemente. El fichero es sqmusic.v. El primer módulo es un adaptador para la placa 1942, el módulo que a ti te interesa se llama SQMUSIC. En el mismo fichero están los otros módulos accesorios. Son las tres salidas en 4 bits, o sea escala logarítmica. Para pasarlo a lineal usa el módulo SQM_LOG que está en sqm_amp.v. Ahí hay un sumador SQM_AMP que las linealiza y suma, puedes cambiar la suma para sacarlas independientemente. Es trivial. La conversión a lineal es muy sencilla, no sé porqué se complicaron tanto la vida en la implementación que habéis estado manejando.

La licencia es GPL.

Para descargarlo:

Código: Seleccionar todo

svn co http://opencores.org/ocsvn/sqmusic/sqmusic/trunk


Mira en la carpeta trunk/sqm

Yo en ese proyecto usé un PWM. Creo que tu tienes un sigma delta. No te costará nada enchufarlos. La salida de cada canal es de 12 bits.

Me alegro de que le podáis sacar partido. Estos proyectos si no se usan no dan alegrías.

-- Actualizado 02 Feb 2015, 23:27 --

Tolaemon escribió:Oleeee!! =D> =D> =D> =D> Que crack, ya te hare alguna pregunta "técncia" tengo algunos chips FM de Yamaha en casa! ¿ No te seria mas sencillo trabajar con un microcontrolador en lugar de con una FPGA ?


Se podría haber hecho con un microcontrolador ARM o Cortex, supongo. Pero el objetivo final es clonar el chip de Yamaha en la FPGA. Esto ha sido un paso intermedio para verificar que el chip original que uso como modelo funcionaba. Cuando haya clonado el chip y publique el código con licencia GPL se abrirán la puerta a clonar en FPGA muchísimos arcades y ordenadores como el X68000. Si aun sigo con ánimo, no debería costarme mucho clonar los otros dos principales chips de Yamaha para permitir clonar la Megadrive y el Ghosts&Goblins de máquina, por ejemplo. Aunque al paso que voy igual tardo un año en completar el primero.

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5310
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 46 veces
Contactar:

Re: ¡Por fin! Música del Contra arcade en FPGA+YM2151

Mensajepor mcleod_ideafix » 03 Feb 2015, 00:09

jotego escribió:Yo en ese proyecto usé un PWM. Creo que tu tienes un sigma delta. No te costará nada enchufarlos. La salida de cada canal es de 12 bits.

Estupendo! Lo de necesitar los tres canales por separado es para poder implementar cosas como el pseudoestéreo ACB, ABC o cosas así. Como son dos AY's, pues tengo que sumar más cosas al mezclador, pero más que nada es eso. Al estar en Verilog "nativo" (no t raducido de VHDL) me cuesta bastante menos entender qué hace.

Ahora, me pasa como a ti: que necesito tiempo para volver a meterle mano al core del ZX-Uno :)

jotego escribió:Me alegro de que le podáis sacar partido. Estos proyectos si no se usan no dan alegrías.

Esperemos poder dar alegrías en estéreo y a 6 canales (el Turbo Sound) :D
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista


Volver a “Máquinas recreativas”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados