Gracias
Sheva
El problema que Facundo mencionaba con los textos in-game era el mísmo que atravesó el grupo de estadounidenses en su momento al intentarlo en la PSX:
Los textos en japonés están ubicados en ciertos archivos, una frase a continuación de la otra. El problema está en que muchas veces al traducir algo, el texto resultante es de mayor tamaño que el original. Este es un gran problema si no se pueden acomodar los marcadores(punteros) del juego que indican dónde arranca cada frase. Si uno no logra encontrar un
workaround al problema, no se podrá lograr la traducción.
El equipo estadounidense estuvo mucho tiempo trabado en este punto, hasta que
slowbeef dió con una solución. Propuso que ya que los marcadores a los textos no podían cambiarse por estar todos entremezclados a lo largo de todo el juego y entre código binario, casi imposibles de distinguir, una solución posible sería modificar los textos con información que ahora no sería sólo texto, sino que se agregarían caracteres especiales, que servirían para generar saltos, esquivar partes de texto, etc. De esta forma, tal vez saltando, tal vez esquivando, uno podía en los archivos reacomodar los textos de forma tal que pudiesen meterse frases más largas que las originales. Claro que no bastaba sólo con eso. También habría que interceptar la/s subrutina/s que interpretaran dicho texto, para que aprendieran y
parsearan correctamente las nuevas modificaciones hechas a los textos, con mezcla de texto y comandos ahora.
Al igual que
slowbeef, es mi primer ROMHacking, y no pensé que iba a ser tan complicada la modificación necesaria.
Lo primero que me interesaba sobremanera era cuántos comandos habían creado los yanquees, y cómo estaba conformado cada uno. Gracias a herramientas que heredamos del equipo original, y a un ex-compañero del equipo de PSX actual que está trabajando en la traducción y doblaje de la versión en inglés de PSX al español, pude ver el código fuente del programa que se encarga de extraer los textos en japonés, editarlos en otro idioma, y volver a meterlos en los archivos, pero esta vez con esa mezcla de comandos y textos diseñada por el equipo original.
Allí pude aprender y ver cómo debía hacer la subrutina de lectura de textos modificada, que necesitaría para que la Saturn interprete correctamente la nueva información híbrida. Ahora sólo me restaba, encontrar un emulador que tuviera el debugger más completo y respetable(yabause ha sido la elección y es el que estaba usando Facundo).
Bueno, luego debíamos encontrar dónde se llamaba a la subrutina de lectura y cómo hacer para desviarla a la subrutina alternativa que deberíamos escribir de cero para la Saturn. Siguiendo los pasos que
slowbeef menciona en su bitácora (http://lparchive.org/Policenauts/Update%2043/), rastreando el texto BEYOND logramos encontrar la subrutina encargada de copiar las frases de textos in-game desde los archivos a la RAM, para luego ser procesadas, pasadas por la tipografía, y finalmente enviada a la unidad gráfica de la Saturn para ser mostrada en pantalla.
El problema de escribir código para la Saturn, era que no sólo nunca lo habíamos hecho sino que, además, no exísten las mísmas herramientas que para la PSX. Las existentes no son tan buenas como las disponibles para la PSX lamentablemente. En este punto creo que los yanquees la tuvieron un poco más fácil que nosotros.
Luego de estudiar mucho cómo debería ser la subrutina, llamada DATCH, generé un diagrama de flujo de la mísma, el cual pongo para que quede al alcance del público y para futuros dementes como nosotros que quieran modificar/agregar o solo husmear cómo funciona esto.
Ahora, para los programadores, una aproximación más real a las entrañas del DATCH: