Traducir ROMs
paso a paso
·················································
Tutorial por JONAS_
y MUSI
Bueno,
una vez con todos los programas bajados, y de haberos aprendido
la teoría, ahora es el momento de la práctica. Antes de empezar,
hemos de deciros que casi todas las roms usan el código HEX, sobre todo los RPG, y muy pocas roms usan el
ASCII.
Y
tenemos que deciros también que traducir una rom no es como traducir
un libro, sino que, aunque no es muy difícil, traducir
una rom es un proceso largo, y requiere tiempo, paciencia,
y bastante habilidad.
Bueno,
para que lo vayáis entendiendo, utilizaremos de ejemplo una ROM,
para pillarle el tranquillo rápidamente. Cogeremos el RPG
de SNESChrono Trigger,
que tiene texto en HEX, y empezaremos.
Lo haremos paso a paso, y pondremos imágenes y snapshots para que
lo veáis.
Lo
primero que haremos es ejecutar el emulador
de SNES, y cargar la ROM. Dejaremos ir la rom un ratito, hasta
que veamos el primer texto que queramos traducir, por ejemplo, la
pantalla de elegir entre "ACTIVE" o "WAIT"
del Chrono Trigger. Cogemos papel y lápiz y apuntamos
excactamente el texto en inglés.
Apunta el texto de abajo en un papel
Ahora
salimos del emulaador, y ejecutamos el Searchr
1.0 (o el 2.0), buscando una palabra, por ejemplo "ready".
Le ponemos el comando:
searchr ready
chrono.smc
y lo
empieza a buscar. La ventana MS-DOS quedaría así:
Ya tenemos
la palabra "ready" localizada,
en "003fd19a". Ejecutamos el UltraEdit 32
y buscamos la columna esta que nos ha dicho el Searchr. Ahora
os encontraréis con un pequeño inconveniente.
Cada
columna acaba en "0h", y
esto acaba en "a". Bien, tenéis que ir hasta la columna 003fd190h, y contad hasta que lleguéis a la "a". os lo explicaré. Cada columna tiene 16 signos,
formados por 2 caracteres. Cada uno forma un código HEX,
y equivale a una letra. Los códigos HEX
van del 0 al 9, y de la A a la F. En total, 16 parejas de números
en cada columna.
O
sea, que tenéis que ir a la columna 003fd190h,
y ahí, contad hasta que lleguéis a la "A": 0, 1, 2, 3,
4, 5, 6, 7, 8, 9, A. En total, hasta la 11 pareja de caracteres.
Aquí
os he puesto un trozo de la pantalla del UltraEdit, concretamente
la de la columna de la palabra "ready".
Os he marcado en amarillo la fila, y en azul el código HEX
correspondiente a la "r" de "ready",
y al caracter en código ASCII, una
Ë, así, con diéresis.
Ahora
os debéis preguntar si "eso" es una "r".
Pues sí, es una "r". Veréis,
el código HEX puede ser el genérico, y se verían las letras
reales en la zona de ASCII. Eso significaría
que la rom estaría en ASCII, y no en HEX,
por lo que sería infinitamente más fácil traducir esa rom.
En
estos momentos, y aunque os parezca raro,
ya sabéis las letras minúsculas, TODAS. Y es porque todas
los códigos HEX son ordenados, es decir,
que irá del 00 al FF, haciendo
00, 01, 02, 03... 09, 0A, 0B... 0F, 10, 11, 12... hasta el FF.
En total, 255 códigos HEX.
Bien,
pues sabiendo que la "r"
de Chrono Trigger cada juego usaría
el suyo casi siempre), que es CB, sabemos,
pues, que la "q", la letra
anterior, estaría en CA, y la "s",
la letra posterior, estaría en CC,
y así hasta tener todas las minúsculas.
Nos
faltan las mayúsculas,
y eso se puede descubrir con un sistema un poco pillín, ya que el
SearchrR no hace distinciones entre mayúsculas y minúsculas.
Lo que tenéis que hacer es encontrar una palabra de principio de frase, y buscarla
con el SearchR de diferente manera.
Por
ejemplo, si buscáis la palabra "Enemies",
que es la palabra de principio de frase del Chrono con la
que estamos haciendo la prueba, tendremos que hacer "
searchr
nemies chrono.smc
Ahora
nos buscará todas las "nemies"
que encuentre, y cuando nos encuentre la que buscamos, que es la
que lleve la "E" delante,
pues muy fácil: localizamos la "n"
de "nemies", y miramos el
código anterior a la "n". ¡Ya tenemos la "E"!
Y
ahora, con el mismo método de descubrir las minúsculas, apuntamos
en un folio todos los códigos de las mayúsculas. Y luego,
id probando códigos posteriores a la "z" (minúscula),
para encontrar los signos de puntuación, los
números, y de paso, los HEX que vosotros habéis cambiado por las
vocales acentuadas, la "ñ", y demás.
Perfecto.
Ahora ya sabéis las minúsculas. Ahora, para comprobar si ese es
el código del Chrono Trigger realmente, deberíais hacer una
prueba, consistente en poner una chorrada, por ejemplo, en vez de
poner "ready", que ponga
"rrrrr". Es decir, toda la palabra "ready" la cambiáis por 5 códigos CB.
Ahora
grabais eso en un archivo SMC que lo
crearéis ahora, por ejemplo, "pruebachrono.smc", y ejecutáis el emulador,
y esa nueva ROM. Si salen las 5 r,
habéis descubierto el código del Chrono Trigger.
¡¡¡¡¡Perfecto,
hemos descubierto el còdigo del Chrono Trigger!!!!!!! Ahora "sólo"
falta traducir toda esa frase, y si queréis, con el NAGA, o con
el X-Late, o con el Sprite Editor, editar el código fuente del Chrono,
y crear la "ñ", las vocales acentuadas, y los signos de
interrogación y admiración principales "¿" y "¡".
Para
que os hagáis una idea, os pongo el snapshot de mi traducción del
chrono, para que os hagáis una idea de cómo podría quedar.
Ahora
ya tenéis una frase hecha. Ahora os falta todo el juego de rol que
es el Chrono Trigger, aunque yo os recomendaría empezar por
juegos cortitos. Si empezáis por los largos y complicados, como
los RPG, podéis llegar a aburrir la traducción de roms.
Hay
unos códigos HEX que son especiales, pues no
son ningún signo, ni ninguna letra. Son códigos que sirven
para indicar a la rom que se ha acabado la línea, o que se
ha acabado el texto, y que el siguiente debe empezar por
el principio, sobreponiéndose del texto.
Por
ejemplo, en el Chrono, el código para decirle que pase línea,
es el C7, mientras que el que sirve
para decirle que se ha acabado el párrafo es el 00.
Una
última cosa antes de acabar este apartado. Teneis que limitaros
al espacio que os dan en el archivo SMC cuando entréis en él por el UltraEdit.
Me explico. Si en la rom sale NEW GAME,
son 8 letras, mientras que NUEVO
JUEGO son 11. No podéis pasar
del límite inpuesto por la rom, porque si lo hacéis, os comeréis
códigos HEX que significan instrucciones
de la rom. Y eso implicaría un mal funcionamiento de la rom, o la
inutilización de la misma.
Eso sí,
lo que podéis intentar (no sé si funciona en todas las roms) es
apuntaros los códigos que no sean letras (eso hacerlo en juegos
con ASCII, mejor, eh?), y acabar la
frase. Entonces, a continuación, apuntar los códigos no-texto a
continuación. Aunque eso sí, eso implica que una de las siguientes
frases deberás hacerla en muy pocos códigos, para hacer caber todo
correctamente.