Autor Tema: CPU Kabuki  (Leído 28797 veces)

0 Usuarios y 1 Visitante están viendo este tema.

ArcadeHacker

  • Con experiencia
  • ***
  • Mensajes: 650
  • .
CPU Kabuki
« en: 11 de Mayo de 2014, a las 14:09 horas »
Buenas,

Hoy he mirando una Pang original que compré hace un tiempo sabiendo que no funcionaba. La placa está claramente suicidada, tiene el nivel de batería a 0.8v.  :'(

Este sistema usa una cpu variante del z80 llamada Kabuki, y por lo que he visto tiene una ram interna con los datos necesarios para desencriptar el código de las roms. Al caer el nivel de batería por debajo de un umbral determinado los datos de la ram interna se pierden y con ello el juego deja de funcionar.



He visto aquí una solución para revivirla que no parece nada complicada, trata de modificar la placa para que el Kabuki se comporte como un z80 normal, tocar varios jumpers y un par de roms nuevas con codigo desprotegido.

http://www.arcadecollecting.com/dead/pre-cps.html

Lo que más me ha llamado la atención es la falta de información que existe sobre la CPU, su funcionamiento, pinout, o si es posible volver a cargarle los datos necesarios para desencriptar el codigo de las roms...

El cifrado que se usa es conocido, entiendo que se ha sacado por medio de bruteforcing al codigo de las roms, y las rutinas para descifrar los datos las incorpora un driver del mame. Ojo, este driver no emula la cpu, simplemente desencripta el codigo rom y luego usan un driver de z80 normal para ejecutarlo.

http://mamedev.org/source/src/mame/machine/kabuki.c.html

Alguien sabe algo más sobre la CPU Kabuki o donde encontrar información? Me gustaría poder revivir esta placa dejandola como estaba sin tener que recurrir a desuicidarla.

Un saludo.
« última modificación: 11 de Mayo de 2014, a las 14:24 horas por edcross »
Busco placa de Taito: Chack'n Pop.

Marcos75

  • Socio
  • ****
  • Mensajes: 3046
  • Arcadero de los 80s
Re:CPU Kabuki
« Respuesta #1 en: 11 de Mayo de 2014, a las 15:30 horas »
Hola edcross. No voy a resolver tu duda, porque no conozco a fondo (EDITO: no la conozco, a secas :) ) esta CPU. Pero como el sistema de encriptación sea similar al del FD1094 de las System 16, eso que comentas es imposible.

En ese sistema FD1094 la llave de encriptación está en una RAM interna alimentada por la batería. A los pads de la batería tienes acceso, pero no así a la RAM (no puedes "enchufarle" de nuevo los datos que se han borrado, no hay forma "física" de hacerlo.

Como bien dices, revivir ese Pang te resultará muy sencillo. Yo lo he hecho ya en varias ocasiones con Pang y Super Pang.

Un saludo.

EDITO: Igual que he visto bastantes Segas system 16 que han llegado a nuestros días vivas, no he visto NINGÚN Pang o Super Pang que no haya muerto suicidado.

« última modificación: 11 de Mayo de 2014, a las 15:32 horas por Marcos75 »


ArcadeHacker

  • Con experiencia
  • ***
  • Mensajes: 650
  • .
Re:CPU Kabuki
« Respuesta #2 en: 11 de Mayo de 2014, a las 15:35 horas »
Pregunta inocente: Pero en algún momento alguien o algo ha de cargar en la ram la información necesaria? Esto no se puede volver a hacer? En el de Sega que ocurre? Hay un fusible de seguridad?

Y aunque haya un fusible o similar, cuando la ram se ha borrado, que ocurre con los bytes? Se van a 00? a FF??

En ese caso, no sería posible modificar las rom desencriptadas para encryptarlas con un cifrado que funcione con esos datos de la ram a cero?
Busco placa de Taito: Chack'n Pop.

Marcos75

  • Socio
  • ****
  • Mensajes: 3046
  • Arcadero de los 80s
Re:CPU Kabuki
« Respuesta #3 en: 11 de Mayo de 2014, a las 17:31 horas »
Bueno, no quiero hablar mucho del tema porque realmente lo desconozco. Pero entiendo que durante el proceso de fabricación es relativamente sencillo cargar la RAM. Reproducir eso a nivel "amateur" dudo que sea posible. En SEGA no hay fusible de seguridad ni nada por el estilo. Simplemente la RAM es un trocito de silicio minúsculo únicamente con conexiones internas.

Cuando una RAM se borra no sé si va a 00 ó a FF. Puede incluso que dependa de la tecnología. En cualquier caso, no estoy seguro de que sea posible hacer lo que dices. Además, no sé si podemos estar 100% seguros de a qué valores va a quedar la RAM. En este caso, puestos a modificar el juego, creo que es preferible desencriptar y poner un 68K normal que reencriptar.

Además en el caso del Pang incluso puedes reutilizar el Kabuki...

Cuando desencriptas las ROMs de Sega System 16 lo haces de manera más limpia que en el caso de los Pangs: En el Pang tú grabas en una misma ROM dos versiones del código, la encriptada y la desencriptada. El motivo es que el procesador espera que las instrucciones estén encriptadas, y el área de datos esté desencriptada. De esa forma cuando la CPU va a buscar un dato, fuerzas a que lo haga en la parte alta de la ROM, y cuando va a buscar una instrucción, fuerzas a que lo haga en la parte baja.

Eso funciona bien, pero es más elegante entrelazar en una única ROM, del tamaño de la ROM original, el código y los datos. Eso, evidentemente, lleva muchísimo más trabajo.

Entiendo que si en el Pang nadie lo ha hecho es porque será imposible. En Sega System 16 se puede hacer más o menos de forma sencilla.

Un saludo.


Pofo

  • Visitante
Re:CPU Kabuki
« Respuesta #4 en: 11 de Mayo de 2014, a las 19:05 horas »
En el pang yo nuncs lo vi marcos, en las system16 como sabes es ir mirando donde estan los datos y donde las instrucciones e ir entrelazando, creo aue tu te curraste un programin para "semi automatizarlo".

Lo de meter una eprom doblads de tamaño y hacerle la ñapa es poco elegante, la verdad es que repele, pero funciona.

ArcadeHacker

  • Con experiencia
  • ***
  • Mensajes: 650
  • .
Re:CPU Kabuki
« Respuesta #5 en: 12 de Mayo de 2014, a las 10:23 horas »
Gracias de nuevo Marcos.  Investigare un poco mas este tema.
Busco placa de Taito: Chack'n Pop.

ArcadeHacker

  • Con experiencia
  • ***
  • Mensajes: 650
  • .
Re:CPU Kabuki
« Respuesta #6 en: 14 de Mayo de 2014, a las 01:23 horas »
Bueno.... conociéndome y como era de esperar, el "investigaré un poco más el tema" se ha convertido en "misión a muerte".

Avances:

A partir del código de descifrado del mame he construido un programa para encriptar código compatible con el cifrado del Kabuki.

Tambien he programado un "Hello World" que funciona en la plataforma del pang y he conseguido satisfactoriamente correrlo en el Mame cifrandolo con las llaves originales.

Siguientes pasos:

Rezar a que me llegue el borrador de eproms desde china -pronto-.
Crear multiples versiones cifradas del Hello World para comprobar mi teoría de lo que le pasa al Kabuki al perder la batería. (las llaves de cifrado se van a cadenas formadas por bytes 00 o FF o algo similar).

Si esto sale bien todos tendremos un Pang rescatable sin modificar hardware. Más noticias en 1 o 2 semanas.


« última modificación: 14 de Mayo de 2014, a las 01:26 horas por edcross »
Busco placa de Taito: Chack'n Pop.

ricky2001

  • Moderador 2
  • **
  • Mensajes: 1446
  • Arcade Adicto
Re:CPU Kabuki
« Respuesta #7 en: 14 de Mayo de 2014, a las 02:51 horas »
Impresionante edcross, me quito el sombrero, ojalá lo consigas.

Saludos

Pofo

  • Visitante
Re:CPU Kabuki
« Respuesta #8 en: 14 de Mayo de 2014, a las 08:53 horas »
Jo*** macho, eres la caña.

Pon un tuto de como lo has conseguido para dummies si no te importa.

ArcadeHacker

  • Con experiencia
  • ***
  • Mensajes: 650
  • .
Re:CPU Kabuki
« Respuesta #9 en: 14 de Mayo de 2014, a las 09:16 horas »
Prometo ir a fondo con los detalles me de o no con el muro. A las malas intentaré mejorar lo que hay hoy con el tema de tener que grabar eproms de doble tamaño, pudiendo usar las que lleva de fabrica.
Busco placa de Taito: Chack'n Pop.

Marcos75

  • Socio
  • ****
  • Mensajes: 3046
  • Arcadero de los 80s
Re:CPU Kabuki
« Respuesta #10 en: 14 de Mayo de 2014, a las 09:18 horas »
Hola edcross.

Buen trabajo, la cosa marcha. Una cosa, ¿no podrías emular todo en MAME, sin necesidad de recurrir a la placa físicamente? Por ejemplo, cuando me lie con la encriptación de Sega System 16 me compilé una versión de MAME anulando la rutina de desencriptación, así podía probar las EPROMs desencriptadas. ¿No podrías hacer tú algo parecido, tocando el fuente de MAME, para que la llave de encriptación sea 00 00 00 ... 00 ó FF FF FF ... FF, o lo que sea? Así te ahorraras mucho jaleo borrando EPROMs y demás (ahora entiendo tu otro post ;) ).

Un saludo.


ArcadeHacker

  • Con experiencia
  • ***
  • Mensajes: 650
  • .
Re:CPU Kabuki
« Respuesta #11 en: 14 de Mayo de 2014, a las 09:21 horas »
Hola edcross.

Buen trabajo, la cosa marcha. Una cosa, ¿no podrías emular todo en MAME, sin necesidad de recurrir a la placa físicamente? Por ejemplo, cuando me lie con la encriptación de Sega System 16 me compilé una versión de MAME anulando la rutina de desencriptación, así podía probar las EPROMs desencriptadas. ¿No podrías hacer tú algo parecido, tocando el fuente de MAME, para que la llave de encriptación sea 00 00 00 ... 00 ó FF FF FF ... FF, o lo que sea? Así te ahorraras mucho jaleo borrando EPROMs y demás (ahora entiendo tu otro post ;) ).

Un saludo.

Buenas Marcos, eso es justamente lo que he hecho con el Hello World, ya puedo descifrar y cifrar con cualquier juego de llaves que yo quiera. El siguiente paso ya es el hardware real y la incognita de que hay en la memoría del kabuki cuando pierde la batt.
Busco placa de Taito: Chack'n Pop.

Marcos75

  • Socio
  • ****
  • Mensajes: 3046
  • Arcadero de los 80s
Re:CPU Kabuki
« Respuesta #12 en: 14 de Mayo de 2014, a las 09:23 horas »
Entonces supongo que para averiguar qué hay en la memoria del Kabuki vas a liarte con prueba y error, y lo harás vía "MAME", ¿no?

Con lo cual, si no te he entendido mal:

- Tu idea es desencriptar el código del juego
- Averiguar la llave que queda en el Kabuki cuando muere
- Reencriptar el código con esa nueva llave.

¿Es así?

Un saludo.


Pofo

  • Visitante
Re:CPU Kabuki
« Respuesta #13 en: 14 de Mayo de 2014, a las 09:40 horas »
Edcross, cual es la rutina de cifrado?, es sencillamente una algoritmo que pilla llave y datos o es dinamica?

Si no te importa explicar un poco como lo has echo...

ArcadeHacker

  • Con experiencia
  • ***
  • Mensajes: 650
  • .
Re:CPU Kabuki
« Respuesta #14 en: 14 de Mayo de 2014, a las 09:56 horas »
Entonces supongo que para averiguar qué hay en la memoria del Kabuki vas a liarte con prueba y error, y lo harás vía "MAME", ¿no?

Con lo cual, si no te he entendido mal:

- Tu idea es desencriptar el código del juego
- Averiguar la llave que queda en el Kabuki cuando muere
- Reencriptar el código con esa nueva llave.

¿Es así?

Un saludo.

Con Mame ya he terminado. Soy capaz de desencriptar codigo con las llaves conocidas, y tambien encriptarlo con cualquier juego llaves que yo defina.

Las pruebas reales con el Kabuki son basicamente como tu dices, prueba y error. Ni idea de lo que tiene dentro o de si hay más elementos afectados en la perdida de batería más allá de las llaves de cifrado (17bytes).

Estas son las claves originales: 0x01234567,0x76543210,0x6548,0x24

Mi plan es cifrar mi codigo de Hello World con varias combinaciones de llaves diferentes: eg: 0000000.. 010101001..... FEFEFEFE..... FFFFFFF.... y ver si suena la flauta.
Busco placa de Taito: Chack'n Pop.