CURSILLO DE TRADUCCIÓN 

PARTE 5: Punteros

Un puntero es un indicador que le "dice" a la ROM dónde está el texto. Normalmente se encuentran en tablas de punteros encima o debajo del texto. Hay de dos tipos: los de 2 bytes (por ejemplo, CF89) y los de más de 2 (normalmente 3, por ejemplo CF89EA). Yo como nunca me he encontrado con los de más de 2, voy a explicar los de 2 bytes. Ejemplos de juegos en los que aparecen son Chrono Trigger (además del DTE), Revelations, y, en definitiva, casi todos los juegos tienen.

Ahora bien, vamos traduciendo tan tranquilos y se repente nos aparece en un lugar de la ROM un texto diciendo "Hi.". ¿Cómo podemos traducirlo por "Hola." si sólo caben 3 carácteres? Pues mientras que con la edición normal tendríamos que dejarlo como "Hol", con punteros podemos poner "Hola." y mucho más (aunque, claro, lleva un cierto trabajillo que más tarde explicaré).

Los punteros de 2 bytes apuntan normalmente a la posición de la ROM donde empieza una frase, la cual tiene un byte final (suele ser el FF o el 00) para indicar a la ROM que deje de leer. Así, si tenemos un texto de la siguiente manera...

(POSICIÓN 12AE89) Hi.[00]How are you?[00]

...el byte 00 sería el final de la frase, pero ahora nos interesa averiguar el puntero. Esto se hace cogiendo la POSICIÓN (offset) actual y dejando sólo los dos últimos bytes (en nuestro caso AE89). A continuación le restamos el header o cabezal de la ROM (en las de Super Nintendo es 200 bytes y en Game Boy (al menos en el Revelations) creo que es 600 bytes). Así pues, ahora obtendremos AC89. Giramos los dos bytes, de manera que quede 89AC. 89AC es el puntero que debemos buscar en la ROM (puedes buscar con el Hexpose y su función Search HEX). Normalmente lo encontraremos junto con otros punteros, así que ya se ve dónde está la tabla. Un ejemplo podría ser el siguiente:

00AC 18AC 3AAC 59AC 67AC 7DAC 89AC A1AC BCAC...

Ahora sólo nos queda escribir en la ROM "Hola." a partir del lugar donde empieza el "Hi." y nos saltamos el byte final (00). La frase siguiente debería ponerla más corta y cambiar el puntero que apunta hacia ella, pues te comerás dos letras suyas. No olvides poner 00 (el byte final) al final de "Hola.", o sino leerá "Hola.ow are you?. Pero también podemos aprovechar (y ahora viene lo mejor) los espacios vacíos en la ROM (lugares repletos de FFs o 00s) para poner nuestro texto allí y direccionando al puntero hacia allí. Si tienes suerte, al final del bloque de texto encontrarás 00s o FFs, así que úsalos para poner más texto.

Ah, y no te preocupes si te cuesta entender esto, a mí me costó un año (no es broma) =). De todas formas, aquí te adjunto el documento de Xcalibur que a mí me hizo entender todo esto...

Documento de Xcalibur original
Documento de Xcalibur traducido al español