Por DaRKWiZaRDX
Pues ya hemos modificado la primera ROM con codificación propia (es decir, no
ASCII), esta lección se dedicará a develar qué hacen ciertos caracteres hex que
vimos en el ejemplo anterior (el pokémon silver).
A éstos caracteres se les denomina "códigos de control", y justamente hacen eso,
controlan la salida de texto,
veamos qué pasa en el caso del pokémon silver, aquí tenemos una imagen del
trabajo de la sección anterior:
Como ves, después del signo de interrogación de la primera frase (el de después
de "Wha...?") hay un caracter hex que no tenemos en la tabla, la mejor forma de
saber qué representa (o mas bien que HACE) este caracter es mirando en la ROM:
Podemos ver que después del signo de interrogación el juego baja una línea,
entonces sabemos que ése byte es usado para bajar una línea de texto, miramos en
el editor qué valor hex tiene, en este caso es $4F y lo agregamos a la tabla de
la siguiente forma:
*43 <-- Éstos códigos (los que bajan una
línea) se denominan "line break"
No hay que agregarlo de la forma normal ( 43=* ) ya que sino lo tomaría como el
caracter '*', si usamos editor hex para traducir no será mucho problema, pero si
traducimos con scripts (eso lo veremos más tarde) en lugar de mostrar un salto
de línea mostrará un asterisco ( * ) y eso nos hará la traducción bastante tediosa.
También tenemos otro valor desconocido: El que está después de "you woke me up!"
(o "Me despertaste!" si lo traduciste), vemos en la ROM lo que hace... El texto
queda en pantalla hasta que pulsamos un botón, y luego avanza para mostrar el
texto que falta.
NOTA IMPORTANTE: La mayoría de editores hex no manejan un código especial para
realizar esto, como sí lo hacen por ejemplo para el salto de línea (como
acabamos de ver), yo recomiendo hacer lo siguiente:
Si vas a traducir utilizando editor hex (como lo he estado demostrando en lo que
va de la guía), asígnale un caracter que uses muy poco, para usarlo
específicamente para esta tarea, por ejemplo, un guión bajo _ ).
En cambio, si vas a traducir utilizando scripts, recomiendo que lo agregues como
(## es el código hex):
##=(NEXT)\n
y utilices para extraer los scripts algún programa que admita el "\n" como salto
de línea (RomJuice es uno de ellos). Es tu decisión.
En fin, volviendo al tema, el código hex es $51, así que lo agregamos a la tabla
como prefiramos.
Por ahora lo haremos como:
51=_ <-- Éstos códigos (los que esperan
pulsación de botón para seguir mostrando texto) se denominan "section break"
Agregamos esos caracteres a la tabla y abrimos el editor en el offset del
texto:
Como ves reemplaza los caracteres por asteriscos y guiones bajos (esto supongo que ya
lo sabrías...), ahora pulsa la barra espaciadora en la 'Z' y vuelve a pulsar en
el '!' y escribe algo como: "Fin linea*Fin mensaje_Hola!
" en el editor (sólo para probar :D)
Probamos la Rom en el emulador y vemos qué pasó:
¡Weee! ¡Modificamos los códigos de control! Éstos códigos te ayudarán a hacer
una traducción de mejor calidad, ya que el espacio que te sobra en una línea lo
puedes usar en la siguiente, así traducciones cortas ocupan menos y las
traducciones más largas pueden ocupar ese espacio.
Ahora nos queda un código más por agregar a la tabla... ¿Cómo sabe el juego en dónde acaba un diálogo y comienza en siguiente, que se dará en otra parte del juego? Mediante un código especial, denominado "message break", para encontrarlo debemos buscar el valor hex que está después de la última letra que sale por pantalla, en nuestro caso, viene después de "Hola! " y es el código hex $00. Deberás agregarlo a la tabla de la siguiente manera:
/00
Quizás si traduces en editor hex no encuentres diferencia entre darle este caracter (la barra) o darle otro, pero sí hace una gran diferencia al momento de traducir con scripts. Algunos traductores prefieren usar este código para los section break, es tu decisión. Yo recomiendo agregar los caracteres a la tabla como lo expliqué aquí.
Pues bueno, fue bastante corta esta sección, supongo que habrá quedado claro, cualquier cosa que no se entienda puedes preguntarme a mi mail. ¡Nos vemos en la siguiente lección!