Blog Home  Home Feed your aggregator (RSS 2.0)  
World Rally, finally - Manuel Abadia's ASP.NET stuff
 
# Monday, 05 May 2008

This post is first in English and then in Spanish
Esta noticia está primero en inglés y luego en español

If you have tried to execute World Rally since it was added to MAME you have seen the precarious state of the driver. The protection of World Rally is double:

Encrypted Video RAM:

The encrypted Video RAM transforms a 32 bits value written to it to another value that is really complex to derive from the original value. This protection was also used in Thunder Hoop and Squash. Mike Coates connected a fluke to his PCBs and got a 4 GB file will all possible combinations (2^32) for Thunder Hoop and Squash.  Using that file, the encryption process was replicated.  However, it was not very practical to require a 16 GB file to run the game. Nicola Salmoria studied the file and generated some code (about 400 lines) that replicated the original encryption. That’s why you can play Thunder Hoop and Squash.

Why World Rally encryption is incomplete? All of us wanted to see World Rally running before any other game, so we started studying World Rally before Squash and Thunder Hoop. In that time, we thought that the encryption was only performed in 16 bits, not 32. Unfortunately, when Mike got all decrypted values (2^16), the code was clearly showing that the decrypted values were not correct in most cases (for example, one of the methods that draws the tiles uses a decrypted value for the number of tiles to draw. That’s why the power on self test results and other screens look horrible right now).  After we find that out, the decryption efforts were centered in the other games. As World Rally was not going to be playable unless the dallas code was dumped (something that seemed unlikely), it has remained that way.

Dallas DS5002FP secure MCU:

The Dallas MCU in the Gaelco games has some critical code that handles inputs, objects manipulation and other complex calculations that prevent the game from working properly (Take a look at World Rally 2 if you don’t know what I mean). The DS5002FP MCU has been one of the best chips for protecting information on its era making emulation of these games impossible for now. There are some specialized labs that claim to be able to get the code from a DS5002FP but it is an incredibly expensive process we can’t afford.

I have to admit that I thought that I’d never see World Rally emulated, as I approached some people at Gaelco and Zigurat for the Dallas code without luck. However, the other day I received an email that changed my mind. Miguel Angel Horna (ElSemi) did a talk at Lleida Lan Party about emulation. At the party he met one of the Gaelco founders (Javier Valero) that was there to speak about the arcade game industry. ElSemi and Javier talked about the protection in some Gaelco games and Javier was kind enough to provide the dallas code for World Rally. With the internal code of the DS5002FP it is just a matter of time to finally have a working driver in MAME.

I have been completely inactive from MAME development for a while but as I worked on the drivers of all the Gaelco 2D games (except Master Boy) and I spent a lot of time and money on them, I thought it was a good time to resume my work on MAME.

Mike Coates is trying to get all the possible values from World Rally Video RAM so we can advance in that area too.

Currently I am writing a DS5002FP core to run the dallas code. The DS5002FP is just a 8051 MCU with some additions and as MAME already has a 8051 core things are going fast. For example, the initial coprocessor test works (although it is a trivial test to pass without the dallas code):

Also, adding the Power Fail Interrupt of the dallas I managed to see this screen that is supposed to be seen when the dallas is dying:

After the both protections are emulated the driver will need more work as probably the video hardware emulation isn’t complete and needs some tweaks here and there but I’m confident that World Rally will be playable in a not so distant future. I don’t know if Javier will give us more dallas code or not, but hats off to him for this one. Also, thanks a lot to ElSemi for being able to get the dallas code from him.

Update: more progress has been made. You can read about it here


Si has tratado de ejecutar el World Rally desde que fue añadido al MAME habrás visto el estado tan precario del driver. La protección del World Rally es doble:

Memoria de Video Encriptada:

La memoria de video encriptada transforma los valores de 32 bits que se escriben en ella, de forma que el valor resultante es extremadamente difícil de obtenerlo dado el valor original. Esta protección también se utilizó en el Thunder Hoop y en el Squash. Mike Coates conecto un fluke a su placa y obtuvo un archivo de 4 GB con todas las combinaciones posibles (2^32). Usando ese archivo, se pudo replicar la encriptación. Sin embargo, no era muy práctico necesitar un archivo de 16 GB para ejecutar el juego. Nicola Salmoria estudió el archivo y obtuvo un código (cerca de 400 líneas) que obtenía los mismos valores de la encriptación. Por ello se puede jugar al Thunder Hoop y al Squash actualmente.

¿Por qué la encriptación del World Rally está incompleta? Todos queríamos ver el World Rally funcionando antes que cualquier otro juego, por lo que empezamos a estudiar el World Rally antes que el Squash y el Thunder Hoop. En esa época, pensábamos que la encriptación solo era de 16 bits, no de 32. Cuando Mike obtuvo los valores desencriptados (2^16) pudimos comprobar la cruda realidad. El código mostraba claramente que los valores desencriptados no eran correctos en la mayoría de los casos (por ejemplo, uno de los métodos que dibuja los fondos de las pantallas usa un valor desencriptado como el número de bloques a dibujar. Por eso la carta de ajuste inicial que muestra los resultados de los tests iniciales se ve tan mal actualmente). Después de percatarnos de nuestro error, los esfuerzos se centraron en el resto de juegos. Como el World Rally no iba a ser jugable a no ser que el código del dallas se obtuviera  (cosa que parecía altamente improbable), se ha mantenido como estaba.

Microcontrollador Dallas DS5002FP:

El Microcontrolador Dallas en los juegos de Gaelco contiene código crítico que maneja la entradas de los jugadores, la manipulación de objetos u otros cálculos complejos que hacen que los juegos no funcionen correctamente (prueba el World Rally 2 si no sabes a lo que me refiero). El DS5002FP ha sido uno de los chips con más éxito a la hora de proteger información en su época, haciendo que la emulación de estos juegos fuera imposible. Hay laboratorios especializados que presumen de poder obtener el código de un DS5002FP pero es un proceso increíblemente caro que no nos podemos permitir.

Debo admitir que pensé que nunca vería el Word Rally emulado, ya que contacté con varias personas de Gaelco y Zigurat preguntando por el código del Dallas pero no hubo suerte en ese momento. Sin embargo, el otro día recibí un email que me hizo cambiar de opinión. Miguel Angel Horna (ElSemi) dio una charla en la Lleida Lan Party sobre emulación. En la party conoció a uno de los fundadores de Gaelco (Javier Valero) que estaba allí para hablar acerca de la industria de los juegos recreativos. ElSemi y Javier hablaron sobre la protección en algunos juegos de Gaelco y Javier tuvo el detalle de dar el código del dallas que usa el World Rally. Con el código interno del DS5002FP es sólo una cuestión de tiempo de que finalmente el juego pueda funcionar correctamente en el MAME.

He estado completamente inactivo en el desarrollo de cosas para el MAME bastante tiempo, pero como trabajé en los drivers de todos los juegos 2D de Gaelco (excepto el Master Boy) y me he dejado un montón de tiempo y dinero en ellos, he pensado que sería un buen momento para trabajar un poco más en el MAME.

Mike Coates está tratando de obtener los posibles valores de la memoria encriptada del World Rally para ir avanzando en ese aspecto.

Por mi parte, estoy escribiendo un core para el procesador DS5002FP de forma que se pueda ejecutar el código del dallas en MAME. El DS5002FP es un microcontrolador 8051 con ligeros cambios, y como ya hay un core del 8051 en MAME, la cosa avanza rápido. Por ejemplo, las comprobaciones iniciales del coprocesador funcionan (aunque es un test tan sencillo, que se puede parchear sin tener el código del dallas, pero bueno):

Emulando la interrupción de fallo de tension del dallas, he conseguido ver esta pantalla que se muestra cuando se le acaba la pila al dallas y su contenido deja de funcionar:

Después de que ámbas protecciones hayan sido emuladas el driver necesitara un poco más de trabajo porque probablemente la emulación de video requiera unas mejoras pero estoy convencido de que el World Rally será jugable en un futuro no muy lejano. No se si Javier nos pasará más códigos del dallas para otros juegos o no, pero me quito el sombrero por lo que ya nos ha dado. Muchísimas gracias a ElSemi por conseguir el código del Dallas.

Actualización: se ha avanzado un poco más. Puedes leer sobre ello aquí

Monday, 05 May 2008 21:19:39 (Romance Daylight Time, UTC+02:00)  #    Comments [18]   Games | MAME  | 
Copyright © 2017 Manuel Abadia. All rights reserved.
DasBlog 'Portal' theme by Johnny Hughes.