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

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

Pofo

  • Visitante
Re:CPU Kabuki
« Respuesta #15 en: 14 de Mayo de 2014, a las 10:00 horas »
Edcros, el algoritmo para cifrar lo has echo tu basandote en el cifrado y el deco, o lo viste por algun lado.

Puedes comentar algo de esto?

Marcos75

  • Socio
  • ****
  • Mensajes: 3046
  • Arcadero de los 80s
Re:CPU Kabuki
« Respuesta #16 en: 14 de Mayo de 2014, a las 10:09 horas »
Entonces, ¿has sido capaz de desencriptar ya el Pang y que corra con un Z80 normal? ¿Teniendo en cuenta que los opcodes se encriptan de una manera y los datos de otra?

Si es así, entonces ya tenemos el primer problema resuelto, el de no tener que usar EPROMs del doble de tamaño del original. ¿Lo has probado en MAME?

Un saludo.


ArcadeHacker

  • Con experiencia
  • ***
  • Mensajes: 650
  • .
Re:CPU Kabuki
« Respuesta #17 en: 14 de Mayo de 2014, a las 10:13 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...

El cifrado tiene mas ingredientes que un caldo.... para no liarme lo resumiré en esto:

-Para los opcodes: Un calculo en base a la posición en memoria de cada byte + una de las llaves de cifrado. Para los datos:  lo anterior + un XOR
-Para opcodes y datos: Unas 7 operaciones de desplazamiento de bits [Editado: Son bits no bytes] utilizando dos de las llaves de cifrado y un XOR utilizando otra de las llaves de cifrado

Ademas de esto existe el retorcimiento de que con lo de arriba acabas con dos cifrados diferentes, uno para opcodes y otro para los datos usados por los opcodes... Entonces tienes que mezclar todo milimetricamente en un solo fichero para que luego pueda ser ejecutado correctamente en un entorno real (MAME o Hardware)

Partiendo de las rutinas de descifrado no se puede hacer una rutina de cifrado revertiendo el proceso ya que existe perdida de información en lo descrito arriba. Por lo tanto el cifrado se basa en el descifrado + calculo de tablas calculando todas las combinaciones posibles por cada byte.

Siento el rollo, pero no se como resumirlo mejor.

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

Marcos75

  • Socio
  • ****
  • Mensajes: 3046
  • Arcadero de los 80s
Re:CPU Kabuki
« Respuesta #18 en: 14 de Mayo de 2014, a las 10:17 horas »
Ademas de esto existe el retorcimiento de que con lo de arriba acabas con dos cifrados diferentes, uno para opcodes y otro para los datos usados por los opcodes... Entonces tienes que mezclar todo milimetricamente en un solo fichero para que luego pueda ser ejecutado correctamente en un entorno real (MAME o Hardware)

Hola de nuevo, edcross. Este punto me interesa mucho, porque es el punto débil que yo veía en el proceso. De hecho, cuando estuve liado con System 16, Ricky se acordará, mi principal problema era, una vez que tenía desencriptado código por un lado y datos por otro, como entrelazarlo. Veo que tú ya lo tienes resuelto. Cuando tengas un hueco te agradecería mucho que me dieses alguna pista de cómo hacerlo para trasladarlo a system 16

Muchas gracias.

Un saludo.


ArcadeHacker

  • Con experiencia
  • ***
  • Mensajes: 650
  • .
Re:CPU Kabuki
« Respuesta #19 en: 14 de Mayo de 2014, a las 10:18 horas »
Entonces, ¿has sido capaz de desencriptar ya el Pang y que corra con un Z80 normal? ¿Teniendo en cuenta que los opcodes se encriptan de una manera y los datos de otra?

Si es así, entonces ya tenemos el primer problema resuelto, el de no tener que usar EPROMs del doble de tamaño del original. ¿Lo has probado en MAME?

Un saludo.

Descifrado si, mapa de opcodes y datos del juego original no. Es por esto que hice mi Hello World, para olvidarme de ese problema hasta que sepa si he acertado con el estado del Kabuki.

Despues acierte o no tengo pensado meterme a construir ese mapa para fusionar el codigo de Pang ejecutado en un solo archivo. Seguramente comenzaré modificando el mame para que me ayude a construir ese mapa, me esperan unas cuantas horas de juego  ;D
Busco placa de Taito: Chack'n Pop.

ArcadeHacker

  • Con experiencia
  • ***
  • Mensajes: 650
  • .
Re:CPU Kabuki
« Respuesta #20 en: 14 de Mayo de 2014, a las 10:20 horas »
Ademas de esto existe el retorcimiento de que con lo de arriba acabas con dos cifrados diferentes, uno para opcodes y otro para los datos usados por los opcodes... Entonces tienes que mezclar todo milimetricamente en un solo fichero para que luego pueda ser ejecutado correctamente en un entorno real (MAME o Hardware)

Hola de nuevo, edcross. Este punto me interesa mucho, porque es el punto débil que yo veía en el proceso. De hecho, cuando estuve liado con System 16, Ricky se acordará, mi principal problema era, una vez que tenía desencriptado código por un lado y datos por otro, como entrelazarlo. Veo que tú ya lo tienes resuelto. Cuando tengas un hueco te agradecería mucho que me dieses alguna pista de cómo hacerlo para trasladarlo a system 16

Muchas gracias.

Un saludo.

Creo que mi última respuesta contesta el tema, te pasaré lo que acabe haciendo en el mame para dibujar el mapa de relaciones. Seguramente el mapa nunca será 100% (no creo que sea posible hacer que el juego pase por absolutamente todas sus rutinas). Para completar cualquier rom habrá que meter trabajo manual si o si.
Busco placa de Taito: Chack'n Pop.

Pofo

  • Visitante
Re:CPU Kabuki
« Respuesta #21 en: 14 de Mayo de 2014, a las 10:24 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...

El cifrado tiene mas ingredientes que un caldo.... para no liarme lo resumiré en esto:

-Para los opcodes: Un calculo en base a la posición en memoria de cada byte + una de las llaves de cifrado. Para los datos:  lo anterior + un XOR
-Para opcodes y datos: Unas 7 operaciones de desplazamiento de bytes utilizando dos de las llaves de cifrado y un XOR utilizando otra de las llaves de cifrado

Ademas de esto existe el retorcimiento de que con lo de arriba acabas con dos cifrados diferentes, uno para opcodes y otro para los datos usados por los opcodes... Entonces tienes que mezclar todo milimetricamente en un solo fichero para que luego pueda ser ejecutado correctamente en un entorno real (MAME o Hardware)

Partiendo de las rutinas de descifrado no se puede hacer una rutina de cifrado revertiendo el proceso ya que existe perdida de información en lo descrito arriba. Por lo tanto el cifrado se basa en el descifrado + calculo de tablas calculando todas las combinaciones posibles por cada byte.

Siento el rollo, pero no se como resumirlo mejor.

Gracias edcross.

Marcos75

  • Socio
  • ****
  • Mensajes: 3046
  • Arcadero de los 80s
Re:CPU Kabuki
« Respuesta #22 en: 14 de Mayo de 2014, a las 10:27 horas »
Ok, ahora te entiendo. Prepárate, porque ahora viene el trabajo duro :)

Aquí es donde yo te decía que si alguien no había hecho ya esa labor de entrelazado, es porque será realmente complicada. Por ejemplo en System 16 los dos o tres juegos que he conseguido descifrar ha sido con inspección manual, y relativamente sencilla (digamos 4 ó 5 horas). Pero con el Enduro Racer no pude, porque el grado de entrelazado era brutal. Ahí harán falta esas ayudas de las que hablas (mapas de memoria).

Mucha suerte, estaremos pendientes.

Un saludo.


Andreas Naive

  • Recien llegado
  • Mensajes: 49
Re:CPU Kabuki
« Respuesta #23 en: 14 de Mayo de 2014, a las 10:52 horas »
Citar
Hola de nuevo, edcross. Este punto me interesa mucho, porque es el punto débil que yo veía en el proceso. De hecho, cuando estuve liado con System 16, Ricky se acordará, mi principal problema era, una vez que tenía desencriptado código por un lado y datos por otro, como entrelazarlo.

Marcos, llevo varias semanas liado a muerte con el FD1094, así que te puedo dar una pista sobre cómo mejorar el proceso; Chris Hardy me hizo notar que las zonas de datos van marcadas con un identificador especial (no recuerdo si una palabra o dos); él se programó en su momento una utilidad para recuperarlas; tampoco recuerdo si valía para todos los FD1094 o sólo para algunos. Si tienes interés te busco la información.

Yo estoy intentando recuperar las claves completas para los 2 juegos que aún no la tienen; en el proceso, he tenido que crearme herramientas para estimar automáticamente qué es código y qué no. El resultado tiene ruido, pero es bastante potable. Si tienes necesidad, me dices un juego concreto y te genero un mapa para que te ayude. El estimador se basa en el hecho de que sólo el código va cifrado; es por ello que no creo que funcione con Kabuki. Lo siento, edcross.

Marcos75

  • Socio
  • ****
  • Mensajes: 3046
  • Arcadero de los 80s
Re:CPU Kabuki
« Respuesta #24 en: 14 de Mayo de 2014, a las 10:59 horas »
Andreas, te agradezco mucho tu comentario. No sabía que estabas metido en temas de FD1094. ¡Muchos ánimos!

Eso que dices del identificador especial lo he notado en algunos juegos pero, en el caso concreto con el que me atasqué (el Enduro Racer - FD1089), no vi ningún identificador ni patrón que me permitiese ver dónde acaba un área de código y dónde empieza una de datos. Quizá se me pasó por alto. Como te digo, en otros juegos sí lo he visto... Finalmente con el Enduro Racer desistí, aunque he conseguido las ROMs desencriptadas por otra vía.

Muchas gracias por ofrecerme tu ayuda. Estoy seguro de que ese estimador que te has fabricado me hubiera ayudado a no perder tantas horas de sueño en el pasado :) Ahora mismo no tengo necesidad de desencriptar ningún juiego, porque todos los que tengo en la colección los tengo ya desencriptados.

Eres muy amable ofreciendo tu ayuda desinteresada. Muchas gracias.

Un saludo.


Andreas Naive

  • Recien llegado
  • Mensajes: 49
Re:CPU Kabuki
« Respuesta #25 en: 14 de Mayo de 2014, a las 11:10 horas »
edcross, me retracto; mi herramienta sí que puede servirte para estimar dónde está cada cosa; bastaría aplicar el descifrado de datos a todo el contenido y después pasar el estimador. ¿Tienes interés?

ArcadeHacker

  • Con experiencia
  • ***
  • Mensajes: 650
  • .
Re:CPU Kabuki
« Respuesta #26 en: 14 de Mayo de 2014, a las 11:19 horas »
edcross, me retracto; mi herramienta sí que puede servirte para estimar dónde está cada cosa; bastaría aplicar el descifrado de datos a todo el contenido y después pasar el estimador. ¿Tienes interés?

Pues si gracias!, todo lo que ayude a terminar el trabajo es bienvenido. En 1 o 2 semanas podré hacer las pruebas sobre el HW real, y ver que pasa. Te escribo en caso de superar esa fase.
Busco placa de Taito: Chack'n Pop.

Marcos75

  • Socio
  • ****
  • Mensajes: 3046
  • Arcadero de los 80s
Re:CPU Kabuki
« Respuesta #27 en: 14 de Mayo de 2014, a las 12:04 horas »
Andreas, he estado revisando mis notas. En Passing Shot, que fue el último que desencripté en su día, la separación venía marcada por fedc 9801 (encriptado). En Wonder Boy III y Dynamite Düx no tengo nada apuntado, pero puede ser que ni siquiera me diese cuenta, y sí tengan un separador.

Un saludo.

EDITO: Por cierto, ¿cuáles son los dos juegos sobre los que estás trabajando?


Andreas Naive

  • Recien llegado
  • Mensajes: 49
Re:CPU Kabuki
« Respuesta #28 en: 14 de Mayo de 2014, a las 13:35 horas »
Sí, eso debía ser.

Los juegos en los que trabajo son las dos variantes que quedan sin clave en system16: aceattac y altbeastj1
También hay un system24 pendiente, pero ese tendrá que esperar, porque system24 hace un mejor uso de los estados de la protección y mis herramientas fallan (aún así creo que se puede hacer, pero necesitaré hacer algo más).

Rockman

  • Con experiencia
  • ***
  • Mensajes: 1281
Re:CPU Kabuki
« Respuesta #29 en: 14 de Mayo de 2014, a las 14:53 horas »
Aquí hay nivel...... :-)

Enhorabuena edcross con tu pedazo de proyecto! A ver si llega a buen puerto.

PD: A ver si consigo ponerme un poco al dia para poder seguiros.... que llegarán los examenes de Junio y voy a catear assembler del Z80 (ya no digo nada de la encriptación jajajja).
« última modificación: 14 de Mayo de 2014, a las 14:55 horas por Rockman »
RESUMEN: Proyecto de incluir versiones españolas de juegos a Mame (Oficial): http://www.aumap.org/foro/index.php?topic=1270.0