Habi Hablóg
Declaro:
XML válidoXHTML válido800x600 +
RSS válidoCSS válidoNavegador digno
  Blog   Archivo   Contacto   Administración  

Acerca de

Matemático, informático, aficionado a la electrónica, friki... y otras cosas que no vienen a cuento ni pasan los filtros de palabras.

¿Queríais un blog? Ahí va.

Red antisocial

¡Me van a volver loca! 2.0
La Fragata Portuguesa

Z
¡Me van a volver loca!

Últimos posts

Sublime
Experimentos… ¿inútiles?
El expediente X que nadie pidió
eNigma
La cuadratura del píxel

Últimos comentarios

Habi
NoSupoResolverLaFuncion
Edu
Habi
EnriqueGG

Calendario

No hay fechas.

Categorías

Chorradas
Paranoias
Posts lúcidos
Tecnoesoterismo
Yuyus

Cenas de Abj

Abj debe 7 cenas.

Frase célebre

Azahara dice: no, prefiero conducir yo bebida que ser llevada por hernan sobrio

Recapitulando (I)

Habi - 28/11/2009 15:04:47 - Tecnoesoterismo

Me falla la memoria; haciendo un post nuevo, me he puesto a buscar otro que creía haber escrito en este blog, cuando no lo hice aquí. En fin, copiaré una parte del mismo actualizada para que se quede en este sitio para la posteridad (la caché de Google).

El post es sobre un juego antiguo, una de esas historias interactivas eroge tan comunes en Japón y una de las pocas en ser traducidas al inglés. Su nombre es Nocturnal Illusion (Mugen Yasoukyoku).

Normalmente suelo pasar de este tipo de juegos, pues no suelen ser más que una excusa para mostrarte imágenes hentai. Sin embargo este tiene una muy buena historia de fondo y las escenas cerdas metidas como con calzador. Me dijeron que me iba a gustar y no se equivocaron. En esta línea de juegos de misterio (aunque con toque gore en este caso) podemos encontrar más recientemente a otros como el DiviDead (pobre perro ¿Saburo se llamaba?), pero eso es otra historia.

Le eché una ojeada por dentro, y me di cuenta de algo: no es más que una máquina virtual, los verdaderos scripts son independientes de la plataforma. Considerando los inconvenientes del juego (es un ejecutable de 16 bits NE, pero con un segmento de 32 bits para las operaciones gráficas) me decidí a analizarlo y generar de nuevo la máquina virtual.

Tal cual está no funciona en ninguna versión de Windows de 64 bits (pues ya no existe la máquina virtual de 16 bits). Tampoco es fácil debugearlo, pues está dentro de la VM de 16 bits, y la mayoría de los debuggers asumen siempre código de 32 bits, y aunque no sea así saltamos al código de la VM a la mínima. Sólo hay un desensamblador (que no debugger) que funciona bien, el IDA, con esta mezcla 16 bits / 32 bits.

Así que lo primero que hice fue desensamblarlo enterito, y después de agrupar código y datos, quitar basura, renombrar las cosas, identificar estructuras, etc, acabé con un librito de sólo 170 páginas en Courier de 8 puntos, doble columna y doble cara.

 

Más tarde, y tras buscar durante bastante tiempo, fui capaz de encontrar el original japonés para PC98.

¿Qué es un PC98? Es la abreviatura de PC-9801 y de los PC-9821, unas máquinas autóctonas de Japón fabricadas mayormente por NEC aunque hubo clones. Mientras aquí teníamos PCs, ellos tenían sus propias arquitecturas y no fue hasta la salida de Windows 95 que las empezaron a dejar de usar.

Estaban basados en x86 (8086, NEC v30 en principio; 80286 y 80386 más adelante, y después son básicamente PCs), con sus chips PIC y DMA pero en otras direcciones de hardware. Distintas BIOS con su soporte de kanas y kanjis y hardware de video y sonido dedicados. Aunque había otros competidores (x68000 (Sharp) y FM Towns (Fujitsu), por citar algunos), este fue el más extendido.

Tenían su versión de DOS y todo, similar al DOS/V pero con los kanas en BIOS, y usaban los mismos formatos de disquete y casi los mismos de disco duro (aunque con algunos cambios; hasta 16 particiones en vez de 4, unidad de arranque siempre A en vez de A ó C, arranque desde cualquier unidad (disquete, HD, MO, CD-ROM, ...), proceso de arranque estandarizado). Por eso es que es relativamente fácil entender sus programas, salvando accesos a hardware y llamadas BIOS.

En cualquier caso, las fases del proyecto con el Mugen son:

  1. Desensamblado (100%).
  2. Análisis (100%).
  3. Creación de la máquina virtual (75%).
  4. Creación de herramientas de manipulado de scripts (ensamblado / desensamblado) (0%).
  5. Modificaciones al programa (0%):
    1. Traducirlo al castellano.
    2. Añadirle el texto original japonés (y creo que también salió en chino, si alguien lo sabe que me lo confirme).
    3. Poner un modo sin escenas cerdas.

De momento está parado, hasta que me dé el yuyu algún día. Pero está bastante avanzado, funcionan perfectamente todos los menús y muchas partes del juego, y es compatible con los juegos guardados que se tengan.

Su VM trabaja con palabras de 16 bits, y tiene alineado su código y hasta sus datos a nivel de direcciones. Consta de unos 100 opcodes distintos, con funciones tanto de bajo como de alto nivel.

Particularmente me costó la rutina de decodificar las imágenes, una mezcla de códigos de longitud variable y diccionario rotatorio. Un formato japonés conocido simplemente como PI.

También hice una herramienta que manipula los archivos empaquetados, extrae, quita y pone ficheros, y navega por las imágenes y scripts mostrándolos.

Y ya vale de post, que bastante he escrito para ser una recapitulación.



Post cerrado