5 de mayo de 2017

"Creo que acabaré diseñando una placa FPGA orientada a sistemas arcade". Hablamos con Jose Tejada, autor de cores de chips Yamaha para FPGA

De un tiempo a esta parte las FPGA se han puesto a la orden del día en nuestro mundillo retro. Poder recrear las máquinas de nuestra infancia de esta manera, es por un lado un reto para quellos que se embarcan en el proyecto, y por otro un sueño para el usuario cuando disfruta de aparatos como el ZX-UNO. Pepe Tejada lleva mucho en la comunidad retro, y sus últimas aportaciones han revolucionado de alguna manera el mundo de las FPGA gracias a sus cores de chips Yamaha, tal y como os contamos en nuestra crónica de RetroPixel 2017.

En Málaga Pepe (jotego) impartió una interesantísima charla sobre los sistemas de sonido más habituales en los videojuegos de los 80-90, poniendo especial enfásis en la creación de los instrumentos que luego se sintetizaban mediante diferentes técnicas. El repaso por los sistemas PSG, FM, etc. encandiló al público, toda vez este apasionado del hardware retro presentaba en la zona de exposición su core del chip de sonido de Mega Drive para FPGA.

Hola Pepe, en primer lugar, muchas gracias por responder a nuestras preguntas. Nos gustaría conocerte un poco más. ¿A qué te dedicas en la actualidad?

jotego: En la actualidad soy ingeniero microelectrónico. Diseño el soporte analógico para microcontroladores de ultra bajo consumo. En un chip pequeñito, de menos de 4mm x 4mm caben al menos un procesador de 32 bits, con una cantidad de memoria similar a lo que llevaba un Amiga 1200 o un Atari Falcon. Además metemos muchos periféricos que harían llorar de gusto a cualquier ingeniero de los años 80/90. Así es la electrónica y la ley de Moore: cada año que pasa más por menos.



¿Cuándo comenzaste a interesarte por los videojuegos y cual ha sido en resumidas cuentas tu progresión en el mundillo?

jotego: Comencé en la informática porque con unos 10 años, supongo, a mi padre se le ocurrió comprarme un Amstrad CPC. Con ese ordenador jugué mucho y también aprendí BASIC. Mi primera frustración informática fue enfrente de ese ordenador. Recuerdo llorar porque no veía dónde podía estar el fallo en un programa despertador que estaba haciendo. ¡Y la inmensa alegría cuando por fin funcionó!

En estos momentos te conocemos más por tus trabajos con las FPGA, pero anteriormente ya habías participado en proyectos como MAME y otros emuladores ¿De dónde nacen tus inquietudes por conocer como funcionan las cosas?

jotego: Yo me metí aquí seguramente por culpa del Ghosts’n Goblins. En su momento me tuve que conformar con la versión de Amstrad CPC (la TOS de mi Atari ST era incompatible con ese juego) y lo poco que pude ver de la recreativa me encandilaba. Allá por el año 1996, cuando la ROM estaba disponible en Internet /para los que reparaban PCBs de recreativa) fui, junto a Roberto Ventura y Paul Leaman una de las tres personas que lo emuló. Lo hicimos los tres en paralelo, y aunque cada uno hizo su emulador nos ayudamos entre nosotros.

Tuve el gusto de formar, si se puede llamar así, a Manuel Abadía en el mundo de la emulación. Él fue más tarde un contribuidor fundamental a MAME porque desencriptó la llamada CPU KONAMI, que era un chip tipo Motorola 6809 con los códigos de operación cambiados. Gracias a él podemos jugar a maravillas como Typhoon o Haunted Castle. Estuve unos años apartado del mundillo, hasta que las FPGA me han dado una razón para volver.

«Fui, junto a Roberto Ventura y Paul Leaman una de las tres personas que lo emuló. Lo hicimos los tres en paralelo, y aunque cada uno hizo su emulador nos ayudamos entre nosotros»

Las FPGA son grandes desconocidas para la mayoría del público, y aunque quizás ZX-UNO ha hecho bastante para descubrirnos sus entresijos, ¿Nos podrías explicar brevemente en que consisten estos dispositivos?

jotego: Una FPGA es un chip electrónico moderno cuyo contenido son muchos circuitos digitales sencillos cuya conexión la determina el usuario. Es como un LEGO electrónico. Si veis placas PCB de recreativa, como las piratas (bootleg) de Ghosts’n Goblins o la de Spy Hunter de Recreativos Franco, por ejemplo, veréis que hay muchísimos chips pequeñitos conectados entre sí. Pues la FPGA es como una caja donde hay un montón de esos chips pequeñitos y el usuario elige cómo los conecta. Es decir, podemos montar el circuito de una de esas PCB dentro de un chip y que funcione tal cual. Esa es su gracia: no es emulación software, es electrónica como la original haciendo las mismas funciones que el original.

¿Y qué hay para el usuario? Bueno, pues hoy día que todo está ya casi hecho con los emuladores las FPGA devuelven ese sentido de dispositivo real. Podemos conectarlos —potencialmente— a periféricos de la época y que sean en efecto clones de nuestros equipos viejos que no nos van a traicionar una mañana porque se les haya roto un condensador.

¿Por tanto, hablamos de simulación de otros dispositivos o sería mejor emplear otro término?

jotego: La FPGA nunca simula o emula. Siempre es un dispotivo electrónico digital como era la máquina original. Sin embargo, ese dispositivo puede ser más o menos fidedigno con el circuito original. El que esté hecho en FPGA no garantiza que se haya hecho un trabajo decente de réplica del circuito original. Por ejemplo, el core (la reproducción lógica en una FPGA de un sistema) de Amstrad CPC para MiST está basado en emuladores, no en el circuito original. Sin embargo el core de Amstrad CPC para ZX-UNO está hecho por McLeod midiendo los chip originales que llevaba el Amstrad y por tanto puede ofrecernos la misma experiencia que un Amstrad original. Hasta el mínimo detalle. Así que, no es simulación pero la calidad del trabajo final es variable según el autor.

Este YM2151está dispuesto a que le miren las tripas...


¿Hasta donde crees que pueden llegar las FPGA? ¿Tienen límite?

jotego: Las FPGA creo que tendrán su límite en la generación del Virtua Fighter, o sea algo menos que una Playstation 1 o una Saturn. ¿Por qué? Pues porque lo que hace que una sola persona trabajando a ratos libres, como Quest (Samuel) de ZX-UNO o yo mismo, pueda estar montando ordenadores y chips enteros en FPGAs es que nosotros usamos herramientas de desarrollo del siglo XXI para hacer electrónica de hace 30 años. Lo que antes requería un equipo de ingenieros grande lo podemos hacer con esas herramientas. Pero conforme pasaron los años esos ingenieros del pasado también empezaron a tener herramientas semejantes y entonces ya no tendremos esa ventaja y lo que necesitaba de 20 ingenieros trabajando un año, también nos costará lo mismo. Pero en la escena no seremos capaces de juntarnos 20 personas para hacer un chip gráfico tipo Voodoo o un procesador como los de la Saturn. Ahí llegará el límite, no por tecnología sino por los recursos humanos que la escena es capaz de proporcionar.

¿Cuál es el problema más acuciante? ¿Velocidad? ¿Espacio?
 
jotego: En la actualidad el problema no está aún ahí. Todavía no hemos visto máquinas arcade como Gryzor o Ghosts’n Goblins en FPGA. Aun menos algo tipo Street Fighter II. Queda mucho recorrido aún, y mucha diversión tanto para quien quiera desarrollar como para quien quiera usarlos. El problema actual es que las dos plataformas más vendidas para hacer desarrollo retro FPGA no están diseñadas para sistemas arcades y presentan limitaciones de velocidad en el acceso a memoria. Eso sí, son muy buenas para ordenadores de 8 bits y 16 bits.

«En la escena no seremos capaces de juntarnos 20 personas para hacer un chip gráfico tipo Voodoo o un procesador como los de la Saturn. Ahí llegará el límite, no por tecnología sino por los recursos humanos que la escena es capaz de proporcionar»

¿Por qué crees que se presentan como una alternativa más que interesante para el mundo retro?

jotego: Son interesantes porque son dispositivos dedicados: enchufas y listo. De cara al usuario le devuelven la experiencia del hardware original y de poder volver a usar periféricos originales. De cara al desarrollador abre la puerta a lo que más nos gusta: seguir trasteando. Tanto haciendo cores FPGA, como nuevas placas FPGA, como expansiones para las existentes o adaptadores.

Hay multitud de esquemas eléctricos en Internet de máquinas recretivas y ordenadores clásicos. Usándolos es factible hacer una recreación exacta de un aparato. Es algo muy goloso. Con un emulador nunca llegas a eso por una parte y por otra parte, lo que aprendas haciendo un core clásico en FPGA te sirve para hacer cualquier producto moderno en FPGA y éstas están en alza. Intel compró Altera hace unos años y está empezando a incluir FPGAs como parte de los procesadores. Cadence utiliza tarjetas PCI con FPGAs programables por el usuario para hacer aceleración por hardware. Para un público más joven, con menos interés en el tema retro, aprender FPGAs es importante y la temática retro les da un marco para experimentar. De hecho me han contactado de universidades extranjeras solicitando usar mis cores de chips de Yamaha y eran estudiantes jóvenes que no habían escuchado sonido FM en su vida pero en la clase les pedían como trabajo hacer un arcade en FPGA.

Una FPGA de Altera. Imagen: Wikipedia


Hablemos de tu proyecto en concreto: ¿se trata de implementar el chip de Yamaha de Mega Drive a un FPGA? En RetroPixel 2017 mostraste un sintetizador Yamaha conectado a una MiST (una FPGA) corriendo Sonic y sonando a todo trapo. Explícanos por favor que era todo aquel 'tinglado'.

jotego: Yo me quedé en su día sin hacer el sonido de ninguno de mis emuladores por falta de información. Así que cuando vi el movimiento FPGA pensé en quitarme esa espina que tenía clavada. Además, la gente en general ha hecho cores de sistemas a partir de cores de chips que otros han hecho. Así que yo pensé en contribuir con cores de audio para que otros vinieran y los usaran en sus cores de sistemas.

Comencé con el YM2151, el chip de audio arcade por autonomasia. Es el sonido de los recreativos: 8 canales con 16 bits de resolución (65536 niveles de volumen distintos, mientras que en sistemas domésticos lo común era 16 niveles de volumen. ¡Qué diferencia!) Y por supuesto, sonido FM que era agradable para el oído, no como los pitidos de mi querido Amstrad o Atari.

No quería basarme en emuladores así que compré algunos YM2151 y me monté una placa para medidas. Fue una odisea. La placa me dió muchos problemas y cuando ya empecé a entender como montar el JT51 (así llamé a mi core) ¡me encontré con que necesitaba para meterlo tres FPGAs como la que tenía! Eso lo volvía inútil. Si la gente no podía usarlo como una fracción de su FPGA, nadie lo usaría. Fue un fin de semana de reinventarse y al final de dos días muy intensos tenía un core que cabía en un 20% de la FPGA. Había reducido el tamaño en 30 veces. Actualmente ocupa algo menos del 10% de la FPGA.

Aunque nadie había usado el JT51, había conseguido llamar la atención en foros y me contactaron para hacer lo mismo con el YM2612. Sí, la bestia dentro de la Mega Drive. Esperé primero a ver si los otros iban en serio y cuando me enseñaron al Sonic moviéndose en el MiST me puse las pilas. Actualmente el JT12 (mi core del YM2612) está casi listo. Faltan un par de detalles. Pero el proyecto de la Mega Drive en MiST (FPGAgen) está algo parado. Tenemos problemas para meterlo todo en la FPGA del MiST y además tiene un cuello de botella importante en la memoria. No sé si llegaremos a acabar el FPGAgen para MiST pero el JT12 sí lo acabaré en breve.

Pepe usa estas placas para las mediciones de los chips


Imaginamos que lo que intentas es ser lo más fiel posible al original. Como amplio conocedor de la técnica que existe tras el sonido, su propagación, etc. y los diferentes chips y sistemas que se han utilizado/utilizan en el mundo de los videojuegos. ¿Cómo conseguir esa fidelidad? ¿Hasta donde podrás llegar?

jotego: Hay aspectos en los que los originales eran productos de muy poca calidad. El chip de audio de la Master System tenía una variación en el volumen de ±1dB. Eso quiere decir que a lo mejor tu Master System se oía 2dB más fuerte que la mía, o que cuando el programador quería hacer un cambio de volumen fino en algunas consolas no sonara tan fino. O un chip mejor, como el YM2612 sacrifica 5 bits de resolución de sonido en el último paso —antes de sacar el sonido por el DAC— sencillamente para hacer el producto más barato. Yo creo que tenemos que respetar estas decisiones de diseño originales porque dieron al final un sonido que es el que recordamos y con el que se compuso la canción pero sin obsesionarse tampoco. Es tontería medir la respuesta en frecuencia de una Mega Drive cuando no sabes la del televisor que vas a usar y aun menos la del televisor que usaste de niño o adolescente.

¡Pura magia!



Por otro lado, suponemos que la intención será aprovechar todo lo que estás investigando en desarrollar y depurar otros chips de sonido que puedan ser implementados en una FPGA. ¿Es así? ¿En qué otros 'experimentos' te has metido?

jotego: Tengo interés en sacar también un core del YM3812 —el chip de la Sound Blaster— y del chip de la Master System japonesa, que era un sintentizador FM abaratado al límite (a base de quitar funcionalidad). Con un poco de suerte a lo largo de este año acabaré esos dos chips. La otra estrella es el FM de la Neo Geo. Y por supuesto el YM2203, que es el padre del de la Mega Drive y se usa en las recreativas de 8 bits. Si añado esos chips a la serie JT ya habré cubierto el espectro FM bastante bien.

Estoy intentando conseguir una placa pirata de Ghosts’n Goblins también para extraer el esquemático y convertirla a FPGA. La placa pirata no usa ningún chip a medida —como la original— si no sólo componentes estándar. Así que es posible replicarla exacta. Me hace mucha ilusión ese trabajo así que espero poder conseguir la placa. Por cierto, este juego lleva dos YM2203.

Finalmente y a más largo plazo, si nadie mueve ficha creo que acabaré diseñando una placa FPGA orientada a sistemas arcade. Una en la que pueda correr una Neo Geo. El proyecto de documentar los chips de Neo Geo está bastante avanzado, pero falta hacer algo con toda esa información.

«A más largo plazo, si nadie mueve ficha creo que acabaré diseñando una placa FPGA orientada a sistemas arcade. Una en la que pueda correr una Neo Geo»

Para los más curiosos, posees un repositorio en Github desde donde descargar el código de tus avances. ¿Qué necesitan saber para utilizarlo? ¿Qué requisitos necesitan?

Mi usuario de github es jotego. Pueden encontrar varios repositorios ahí, sobre todo el JT51 y el JT12. Para empezar con esto de las FPGAs hay algunos vídeos por Internet, pero quizá lo más fácil es cogerse un simulador de electrónica digital, como el iVerilog, y tratar de hacer funcionar estos chips en el ordenador. La electrónica digital es más fácil de aprender y más barata de hacer que la analógica así que para el quiera aprender a trastear con aparatos reales estos proyectos en FPGA son una buena opción.

¿Cuáles son los retos a los que te enfrentas?

jotego: Quizá el mayor reto de todos los que estamos en este mundillo, tanto usuarios como desarrolladores, autores de podcast, y de ti mismo como autor es la falta de tiempo. Esta es una actividad relajante en general. Lo hacemos por gusto y supongo que por eso le dedicaríamos más horas de calidad, en vez de ese ratito por las noches o por las mañanas.

Muchísimas gracias por tu atención, y un saludo grande!

jotego: Muchas gracias por vuestro interés en este tema tan nicho —dentro de que lo retro es ya un nicho. Espero que os haya resultado interesante. Un abrazo y seguid con vuestro gran trabajo.

Sigue la cuenta de José Tejada en twitter

Accede a su repositorio en Github

3 comentarios:

  1. ¡Super interesante! Desconocía un poco este mundillo, así que agradezco mucho la labor de Jose y también que podamos conocerla a través de esta web.

    ResponderEliminar
  2. Muchas gracias por compartir tus conocimientos Pepe. Asistí a tu charla en RetroPixel y la verdad es que me encantó. ¡Sigue con tu trabajo y aquí estaremos pendientes de como evoluciona! Un saludo desde Granada.

    ResponderEliminar
  3. Me parece excelente que hayan personas como Pepe en la retroscene, aplicar sus conocimientos para hacer crecer la comunidad.

    ResponderEliminar