De la máquina a MAME

Imprimir
berger
Author: berger
Moderador del foro y colaborador de la web.

 

MAMELogoR
Desde que comencé a colaborar con el equipo de desarrollo de MAME, son muchas las consultas que he recibido sobre algún aspecto del proceso de emulación, por parte de aficionados a las computadoras de ajedrez. Este proceso no es siempre el mismo, pues depende del tipo de computadora, de los datos disponibles, de si hay o no una computadora similar ya emulada, etc.

En este artículo intentaré explicar, con ayuda de documentación gráfica, todos los pasos del proceso de emulación en MAME. Para ello aprovecharé una computadora sobre la que he trabajado recientemente y que, por su ‘relativa’ sencillez, creo que será un buen ejemplo. Se trata de la SciSys/Novag Super System III.

Comencemos...

¿Cuál es el objetivo de la emulación en MAME?

En primer lugar aclararé algo que suele crear confusión: MAME originalmente significaba “Multiple Arcade Machine Emulator”, pero en 2015 absorbió el proyecto hermano MESS (Multi Emulator Super System), por lo que en la actualidad MAME documenta una amplia variedad de computadoras antiguas, consolas de videojuegos y calculadoras, además de los videojuegos de Arcade que fueron su objetivo inicial.

El objetivo de MAME es salvaguardar décadas de historia de software y hardware, evitando que se pierda y se olvide. Para ello se realiza una copia del software (proceso llamado ‘volcado’), y se documenta el hardware así como su funcionamiento. A continuación se programa la emulación (creación de un nuevo driver), con el propósito de comprobar que todo el proceso se ha realizado correctamente. El propio código fuente de MAME sirve como documentación.

A partir de aquí, todo depende del uso que cada cuál quiera dar a la emulación.

Para saber más, recomiendo visitar la página oficial de MAME: www.mamedev.org

1. Preparación:

Aunque lo ideal es disponer de una unidad operativa, no siempre es posible. En caso de no funcionar, yo primero suelo realizar la reparación, porque facilita el trabajo posterior. Pero si no fuera posible, ¡hay que aprovechar lo que se tiene! En algunas ocasiones, con el ‘volcado’ de la ROM y unas buenas fotos de ambos lados de la placa madre el equipo de desarrollo de MAME ya es capaz de realizar una primera emulación, que se puede ir perfeccionando con la aportación de datos posteriores.

En el caso que nos ocupa, un aficionado alemán me envió su Super System III para colaborar con el proyecto MAME.

Novag SS3 01

Después de comprobar que funcionaba, comencé a desmontarla completamente para tener acceso a todos los elementos.

Novag SS3 02
2. Volcado de la ROM:

En primer lugar me centré en la placa de proceso, para realizar el ‘volcado’ de la ROM.

Novag SS3 03
Se llama ‘volcado’ a la creación de una imagen de la memoria de solo lectura (Read Only Memory), que almacenamos en un archivo binario en este proceso. La ROM es un tipo de memoria no volátil, es decir, los datos que almacena no pueden ser modificados electrónicamente después de su fabricación. Existen algunos tipos como las EPROM (Erasable programmable read-only memory) que se pueden borrar y reprogramar, pero esto es algo fuera del alcance de este artículo.

En una computadora de ajedrez, la ROM contiene como mínimo el programa que le permite funcionar y jugar, pero también puede contener el libro de aperturas, problemas para analizar, partidas famosas, etc. La ROM puede estar en uno o varios chips dentro de la computadora, en un cartucho externo, o bien dividida: una parte en el interior (normalmente el programa principal y el motor) y otra en un cartucho (normalmente el libro de aperturas, o algún otro tipo de ampliación).

En la Super System III nos encontramos con dos chips, ubicados en la placa principal, del tipo Mask-ROM (a diferencia de la EPROM, aquí los datos fueron programados en fábrica, y no pueden ser borrados ni modificados).

Novag SS3 04


Para realizar el volcado, necesitamos saber las características técnicas de estos chips Mask-ROM. En este caso no lo tenemos fácil, porque la información impresa fue ‘personalizada’ por SciSys. Veamos:

              • En la parte superior tenemos el logo del fabricante del chip: Synertek

              • A continuación, tras el logo, la fecha de fabricación: semana 48 de 1979 en un chip, y semana 11 de 1980 en el otro.

              • En la línea central tenemos una referencia que no pertenece a Synertek, sino a SciSys.

          • Lo mismo sucede con la última línea, en la que claramente se identifica ‘SS-3’ (Super System III), ‘HROM’ (High memory address part) y ‘LROM’ (Low memory address part).

Con estos datos no sabemos las características técnicas de los chips, pero conociendo el fabricante gracias al logo, el año de fabricación, y el número de pins (contactos) del chip, podemos hacernos una idea de su referencia real. También ayuda el analizar las conexiones en la placa de circuito impreso.

En este caso, llegué a la conclusión de que se trataba de dos ‘Synertek 2332’ de 4 KB (La ROM tiene un tamaño total de 8 KB). Al ser unos chips tan antiguos, que no cumplen el estándar JEDEC, ninguno de mis ‘lectores/programadores de ROM’ comerciales podían realizar el ‘volcado’. Así que con ayuda de la hoja de especificaciones técnicas, utilicé un método que ya he probado con éxito en situaciones similares: la utilización de un pequeño microcontrolador ARM (como los usados en las placas Arduino), que puedo programar a mi antojo, para cumplir con la operativa de lectura específica de ésta y de otras ROMs de los años 70.

Novag SS3 romdump 01
Los datos se vuelcan en la ‘memoria flash’ el microcontrolador, de ahí se envían vía comunicación serie (RS232) a un PC, donde se realiza una primera verificación de integridad con un editor hexadecimal.

Novag SS3 romdump 02
A continuación esta imagen se graba en un archivo binario, y así ya hemos completado el proceso de ‘volcado’ de la ROM. En este caso con el resultado de dos archivos binarios de 4 KB cada uno.

3. Realización de Ingeniería Inversa:

Me centré de nuevo en la placa de proceso, que contiene microprocesador, RAM, ROM y circuitos digitales principales, realizando un netlist (listado de nodos) necesario para la posterior creación del esquema electrónico.

Novag SS3 03
Pero en esta computadora existe una segunda placa que contiene la fuente de alimentación, interruptores de control y, lo más importante en cuanto a emulación se refiere, los circuitos de control del Display. A excepción de la fuente de alimentación, el resto también se ha de analizar para completar el netlist.

Novag SS3 06

Novag SS3 10
También el teclado se ha de estudiar, realizando un esquema detallado del mismo.

Novag SS3 05
Y el Display, del cual se ha de aislar y documentar cada ‘segmento’.

Novag SS3 LCD
El Display en esta computadora me dio bastante trabajo. En primer lugar el desmontaje sin provocar daños, ya que la cubierta protectora está pegada a la PCB, porque el plástico fue derretido en diferentes puntos a modo de remache.

Novag SS3 07
Y por otro lado porque el chip de control (MD4332) no lo conocía y además no realiza el control de todo el LCD, sino que se utilizan también 6 chips con 4 puertas lógicas cada uno.

Novag SS3 08

Novag SS3 09
Una vez tenemos el netlist finalizado, ya se puede dibujar el esquema electrónico:

Novag SS3 schematic
Por último, vuelvo a ensamblar la computadora para poder tomar algunas medidas críticas con el analizador lógico y el osciloscopio, que no siempre son fáciles de deducir a partir del esquema, como son las distintas señales de reloj, de sincronismo, señal IRQ (utilizada normalmente para el Control de Tiempo), etc. Señales que son imprescindibles para realizar en MAME una emulación lo más precisa posible.

Novag SS3 11

Novag SS3 12

Novag SS3 13
4. Creación del driver de MAME:

Todos estos datos se los hago llegar a un programador del equipo de desarrollo de MAME de alias hap, con el que colaboro desde hace años. Pero hay muchos otros programadores en el equipo de desarrollo de MAME, algunos especializados en Arcade, otros en consolas de videojuegos, etc.

hap no lo tuvo fácil, pues fue necesario interpretar todos estos datos, y convertirlos en un driver para MAME, que se compilaría en la siguiente versión del programa. La programación se realiza en lenguaje C++

Novag SS3 driver 01

Novag SS3 driver 02
En este caso, el driver resultante tiene más de trescientas líneas de código, pero además hap tuvo que realizar la emulación del controlador de Display MD4332 mencionado anteriormente, ya que no se había utilizado hasta ahora en MAME, y por lo tanto no estaba integrado en su kernel.

Novag SS3 MD4332
Tras varios días de trabajo, todo el código estaba escrito, y ya se podía compilar MAME para probar la nueva emulación, con este resultado:

Novag SS3 MAME 01

Novag SS3 MAME 02

Novag SS3 MAME 03
5. Utilizando la emulación de Super System III en MAME:

En este punto ya se puede jugar con la computadora emulada, como si de la real se tratase, gracias al artwork integrado.

Novag SS3 MAME 04
Pero la cosa no acaba aquí. Gracias al trabajo de otras personas, como Franz Huber con su compilación CB-Emu, ya es posible jugar con muchas computadoras de ajedrez emuladas incluso desde Arena Chess GUI! Y los fabulosos artworks de Luis Ángel, Volodymyr, etc. permiten disfrutar de artworks más realistas y en 3D. Pero todo esto da para escribir otro artículo completo. 

Tags: