Pues el proceso para el Tales of Phantasia fue un poco curioso: me puse en contacto con Dejap y, en vista de que no obtuve respuesta en unos meses, me puse a extraer y analizar la rutina de descompresión del texto para ver cómo funcionaba. Cuando ya la tuve entendida por completo, me puse en contacto con DarkForce (romhacker, genio y fundador de Dejap) para mostrarle mis avances y "restregarle" que había conseguido yo sólo hackear el juego y lo iba a traducir sin su ayuda. Entonces sí me contestó y me dijo que había hecho méritos para prestarme sus herramientas para traducir el juego. Luego ya añadí un montón de hacks por mí mismo para arreglar cosas que Dejap no había introducido en el parche en inglés (como por ejemplo, el listado en 1 columna y con ancho completo del texto de los objetos, cuando estás en batalla).
Normalmente, el proceso para traducir un juego complicado como éste y como el Seiken Densetsu 3 es:
1- Mediante savestates de los emuladores buscas la posición del texto en pantalla en la memoria RAM de la consola.
2- Trazas el código ensamblador del juego mediante debuggers hasta encontrar qué rutina escribe en esa posición de RAM donde está el texto que se muestra por pantalla.
3- Haces ingeniería inversa desde ese punto para atrás hasta localizar las rutinas que leen el texto de ROM; en el caso del SD3 el texto está comprimido con Huffman como primera capa, y con diccionario en segunda capa. Si no sabes esto a priori, has de descubrir qué está haciendo la rutina hasta averiguar qué algoritmo de descompresión se está usando. El del SD3 se suele llamar LZH, es decir, LZ+Huffman.
4- Luego, localizas y analizas las rutinas que usan ese texto leído (y descomprimido) de ROM para formar las letras en pantalla. Esa rutina se modifica para añadir la ñ y demás símbolos y para hacer la fuente de ancho variable (también llamada VWF) para que quede más bonita y quepa más texto por línea en pantalla.
5- Con todos estos datos, te haces un programa en C que extraiga todo el texto. Si el texto está en bloques y sólo hay texto en él, ya está todo hecho. Si además de texto hay mezclado comandos (como en el SD3 y SoM), hay que analizar todos y cada uno de ellos para saber qué hacer. Eso es lo más coñazo de todo el proceso.
6- Cuando está extraído, te haces en C un insertor que incorpore el algoritmo de compresión del texto inverso al analizado en el punto 3. Te las has de ingeniar para que comprimas exprimiendo al máximo el algoritmo existente, porque si no te cabe el texto al reinsertarlo, hay que acortar texto o bien rediseñar la rutina de descompresión del juego y la correspondiente de compresión en el programa en C.
7- Cuando el texto extraído con tu programa extractor y vuelto a insertar con tu programa insertor coincide, ya das por bueno el compresor y te puedes poner a traducir el texto.
8- Luego tienes que meterte con los menús, que suele ser más cuestión de ingenio y habilidad que de conocimientos de ensamblador, ya que muchas veces hay que abreviar demasiado el texto que aparece en ellos, o cambiar 1 carácter japonés que significa "Inteligencia" por las 11 letras en castellano, cosa casi imposible de hacer, así que te has de diseñar un iconito que lo represente.
9- Luego queda la depuración o beta-testeo, que suele ser divertido pero terminas aborreciendo el juego. Si el juego es demasiado no-lineal como el SD3, hay que contar con ayuda externa para que depure cada una de las posibilidades del juego. En nuestro caso, fuimos 6 betatesters trabajando en paralelo.
Y más o menos en todo ese proceso te puedes tirar 2 ó 3 años, lo que pasa es que se suele ir viendo avances durante todo el tiempo, lo cual lo hace más ameno y llevadero...