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  | 
Tuesday, 06 May 2008 01:21:09 (Romance Daylight Time, UTC+02:00)
Oh this amazes me! Thanks for this valuable info and progress!

Esto me impresiona! Gracias por esta importante información y progreso!

Un saludo desde America.
fritz b. m.
Tuesday, 06 May 2008 12:51:51 (Romance Daylight Time, UTC+02:00)
Gracias al esfuerzo de ustedes podemos jugar de nuevo a estas maravillas, Un saludo y mil gracias desde españa.
alco1301
Tuesday, 06 May 2008 18:00:11 (Romance Daylight Time, UTC+02:00)
Me alegro y les felicito por los logros conseguidos. Mucha gente desea este juego emulado pues como yo jugaban de pequeño y les trae maravillosos momentos a la cabeza. Un saludo y mil gracias.
felix
Tuesday, 06 May 2008 18:31:03 (Romance Daylight Time, UTC+02:00)

Por fin se avanza algo !!!!

recuerdo hace unos años...todo el mundo decia que era muy probable que jamas podriamos verlo en mame. ahora hay una paqueña esperanza.
por curiosidad...¿cuanto cobraba ese laboratorio por sacar la información del dallas??
Rober
Tuesday, 06 May 2008 20:34:48 (Romance Daylight Time, UTC+02:00)
Thats awesome!
I love Elsemi...
Ceto
Tuesday, 06 May 2008 23:19:55 (Romance Daylight Time, UTC+02:00)
Rober,

por ser para el MAME, la repercusión que a ellos les supondría desproteger muchos tipos de chips y ser amigables con los emuladores en general, hicieron un precio de ganga a $7500 para unos cuantos chips protegidos. Sin embargo, ninguno de los dallas estaba en el paquete, aunque se supone que en otro envío los podrían desproteger, pagando una cantidad no concretada aún por ello, pero ya puedes ver que las cifras que se manejan no son pequeñas.
Wednesday, 07 May 2008 10:05:03 (Romance Daylight Time, UTC+02:00)
Desde la asociación RetroAcción esperamos poder ofreceros dentro de un tiempo el vídeo completo de la mesa redonda que mantuvimos con Javier Valero, ElSemi y David Guaita. La verdad es que mereció mucho la pena. :)

Más información muy pronto en http://www.retroeuskal.org/
Wednesday, 07 May 2008 21:27:16 (Romance Daylight Time, UTC+02:00)
7500 .... bueno.....tampoco me parece excesivo si todos ponemos nuestro granito de arena...pero si...las cifras son altas.

no se cuanto se podria llegar a conseguir entre todos los interesados. pero seguro que al menos 6000 se conseguian.

bueno , afortunadamente para world rally quiza ya no haga falta soltar un duro
Rober
Thursday, 08 May 2008 16:35:51 (Romance Daylight Time, UTC+02:00)
Estas compañias cobran por adelantado y si despues no funciona QUE?????
yo
Thursday, 08 May 2008 19:26:13 (Romance Daylight Time, UTC+02:00)
bueno....entonces si que habria sido una perdida de tiempo y dinero....
Rober
Friday, 09 May 2008 11:30:56 (Romance Daylight Time, UTC+02:00)
Joer, ami lo que mas me impresiona de todo esto es que en españa estemos destacados en algo que no sea garrulismo, vandalismo, adicciones varias y paletofurbol...

De este tipo de cosas si que se enorgullece uno.

Lo mas "bonito" de todo es que por ser como somos la gente que vale tanto este tan desaprovechada... y los que ocupan cargos altos o medioaltos en cualquier ambito del trabajo (y se podria extender a otros lugares) sean unos mindundis del 15.

Un animo a los del proyecto MAME (a mi integrista juicio, el unico megaproyecto de software libre que ha demostrado al 100% ser util y añadir algo nuevo a lo que ya habia).

Como curiosidad final, yo siempre me he preguntado por que MAME no puede ser modularizable en librerias y hacer que el ejecutable sea mucho menor en tamaño y consumo de memoria... Ya se que cuando fueras a cargar un juego nuevo, se zamparia todo lo que tuviera que zampar, y que para auditar un conjunto e juegos incluso seria mucho peor, pero de arranque seria menos agresivo con los recursos, no?

Un saludo.
Jota.Ce
Saturday, 10 May 2008 20:58:05 (Romance Daylight Time, UTC+02:00)
Creo que interiormente puedes pensar que destacamos en algo, pero no lo digas a nadie, como bien sabes en este caso destacamos como CRAKERS, y para mi personalmente no es ningun motivo de satisfacción.
anonimo
Saturday, 10 May 2008 21:44:11 (Romance Daylight Time, UTC+02:00)

destacar como crackers??

no entiendo esa respuesta ¿que se ha crackeado??

que yo sepa nada...

destacar en algo??? si , en que una compañia española de videojuegos haya pensado en poner un dallas para proteger sus juegos...y lo ha conseguido...mejor que otras compañias.

eso es destacar en algo
Rober
Monday, 12 May 2008 11:36:13 (Romance Daylight Time, UTC+02:00)
Javier,

será estupendo poder ver el video de la mesa redonda.

Muchas gracias por vuestra labor.
Monday, 12 May 2008 19:35:45 (Romance Daylight Time, UTC+02:00)
Jota.Ce,

El MAME no es modularizable porque se centra en la preservación de juegos. Los desarrolladores prefieren emplear su tiempo en añadir o corregir juegos en vez de hacer que funcione con una máquina menos potente. Además, con lo barata que está la memoria y los procesadores multicore cada vez es menos problema tanto el tema de la memoria consumida como la velocidad del MAME.
Tuesday, 13 May 2008 00:26:49 (Romance Daylight Time, UTC+02:00)
Gracias por la contestacion.

Pero como programador, para mi el reto es hacer que una cosa funcione bien y con el minimo consumo. Para un programa no miro al micro en el que se ejecuta, miro que sea donde sea, vaya lo mas rapido posible. Pero vamos, es un punto de vista compulsivo mio xD

De todas formas, con esto de la preservacion me extraña mucho que sigan esos sets de CPS3/NoCD, teniendo en cuenta la filosofia MAME (y durante un tiempo hasta estuvo el mismisimo sfzch).

Y por otra parte, MAME cambia tantas veces internamente que en una de ellas se podria atacar lo de la modularidad sin prioblemas. Anda que se ponen algunas veces a reescribir nucleos completos de funcionamiento tan panchos.

En todo caso, la verdad es que os mereceis una estatua, porque sin MAME no seria lo mismo este mundo de juegos de cuando eramos pequeños (poco mas que seguiriamos con el Callus y parches para hacer funcionar sobre el hasta la CPS3 xDDDDDD).

Ya he visto como chuta el World Rally ahora :o

Un saludo y un utra-animo nuevamente.
Jota.Ce
Tuesday, 13 May 2008 00:49:58 (Romance Daylight Time, UTC+02:00)
Jota.Ce,

te comprendo perfectamente. Normalmente los que programamos y disfrutamos con ello somos enfermizamente perfeccionistas.

Alguna vez se ha propuesto hacer algo así, pero ten en cuenta que es difícil cambiar algo cuando si la gente no está muy de acuerdo con lo que vas a hacer, y siempre salen voces discordantes, diciendo que si se complicaría el código para ahorrar un poco de memoria o cualquier otra historia que puede hacer suponer que el que se atreva a realizar semejante tarea puede comerse su propio trabajo, por lo que nadie se atreve. Si lo que quieres es ejecutar algún juego con menos memoria, haciendo un tiny compile puedes incluir solo el driver y los cores que necesites.
Tuesday, 13 May 2008 17:46:45 (Romance Daylight Time, UTC+02:00)
Gracias por contestar de nuevo.

Ya si que no replico mas, porque soy un tabarras xD

Y nada mas, solo agradeceros vuestro trabajo. No hay dinero en el mundo que pague eso.
Jota.Ce
All comments require the approval of the site owner before being displayed.
Name
E-mail
Home page

Comment (Some html is allowed: a@href@title, strike) where the @ means "attribute." For example, you can use <a href="" title=""> or <blockquote cite="Scott">.  

[Captcha]Enter the code shown (prevents robots):

Live Comment Preview
Copyright © 2017 Manuel Abadia. All rights reserved.
DasBlog 'Portal' theme by Johnny Hughes.