Para traducir roms antes que nada es necesario tener las siguientes utilidades:
Editor Hexadecimal sirve cualquiera como Ultraedit, Hexposure, etc. Sin embargo yo uso Hex Workshop y es el que servira como referencia en esta guia.
Searchr este programa sirve para encontrar el texto que queremos cambiar en la rom.
Editor de Sprites sirve para encontrar las fuentes y los graficos en los juegos, nuevamente tenemos varias opciones, ya que existen varios editores de sprites. Sin embargo los más conocidos son Naga, X-Late, SNES Sprite Editor . En esta guia se usaran X-Late y SNES Sprite Editor indistintamente.
Snestool Version 1.2 este programa nos sirve para crear los IPS o parches para los juegos que estamos traduciendo.
Por ultimo lo que mas se necesita en esto de la traduccion es paciencia, constancia y mucho tiempo, ya que este es un proceso lento y que en algunos momentos puede llegar a ser tedioso. Esto por que no es como traducir un texto cualquiera, por que ademas del texto que se esta traduciendo se nececitan tener en cuenta muchas otras cosas mas lo cual demanda una cierta habilidad que se adquiere con tiempo y mucha practica.
2.0 Encontrando la fuente
Antes que nada es necesario explicar como guarda
la rom las letras, numeros y simbolos de puntuacion que vemos en el juego.
La mayoria de los juegos guardan estos datos como un codigo hexadecimal,
es decir como codigos que van desde el 00-01-02...... hasta el FF, en total
256 codigos. Ahora bien es necesario saber que codigo hex corresponde a
que letra, numero o simbolo de putuacion. Lo ideal es que la rom guarde
esta informacion como en codico ASCII que es el que usa el computador,
es decir que la A fuese 41 en codigo hex, la B=42, etc.. Sin embargo
esto ocurre en aproximadamente el 10% de las roms.
Por causa de esto es que hay que averiguar que codigo
hex corresponde a que letra (a esto se le llama encontrar la fuente), para
esto basicamente hay dos caminos:
A) Usando Searchr
basicamente consiste en lo siguiente, primero hay que elegir la rom que
deseamos traducir, a continuacion ejecutarla con el emulador y empezar
a jugar o dejar ver un poco la presentacion. Cuando aparezca el primer
dialogo del juego o la primera frase del juego la apuntaremos en un papel
y nos saldremos fuera; ahora usaremos el SEARCHR para buscar una palabra
de ese texto que hemos apuntado, el SEARCHR buscara por la rom y si encuentra
esa palabra te dira exactamente en que punto de la rom esta. La linea de
comando del searchr es asi:
Cuando nos de esa "direccion" la apuntaremos, y usando
el editor hexadecimal iremos al lugar donde nos indico el SEARCHR. Supongamos
que buscamos la palabra start y el searchr nos da una direccion donde sale
algo como 93 94 81 92 94 ahora sabemos que codigos hex corresponden a la
palabra start; es decir 93 = s, 94 = t, 81 = a, 92 = r .
Ahora para ver si estamos en lo correcto, donde
encontramos la palabra, pondremos en lugar de sus cogidos hex todo 93 asi
que quedara asi 93 93 93 93 93 de esta manera en el juego saldra sssss
en ves de start. Si esto sucede asi ya habremos descubierto los codigos
para ese juego (los codigos de las letras siempre van en orden ascendente
por ejemplo a=81 b=82 c=83, etc..) de esta forma ya tenemos todas las minusculas.
Para las mayusculas buscamos en el juego una palabra
que empieze por mayusculas, por ejemplo Fire, nosotros conocemos los codigos
para ire pero la F mayuscula tiene otro codigo que desconocemos de momento,
pero que podemos averiguar si en la rom, con el editor hex. decimos que
busque la secuencia de codigos correspondiente a ire, entonces encontrara
esa secuencia, y el codigo que este antes de la i sera el correspondiente
a la F, con lo cual si sabemos la F ya sabemos todas las demas letras en
mayusculas.
Ahora nos hacemos una tabla con las letras y su
codigo hex, lo mismo hacemos para los numeros y signos de putuacion que
aparecen en la rom. Para hacer esto podemos usar el programa Table
Maker , el que ocuparemos mas adelante para otras cosas.
B)Usando un editor de Sprites Esto se usa principalmente para la traduccion desde el japones, ya que muchos juegos que estan en japones no tienen las letras occidentales. Bueno consiste en abrir la rom con el X-late donde avansamos por la rom buscando algo como esto:
Seguramente habran notado que en la mayoria de las
roms faltan algunos signos de puntuacion, ademas de la letra ñ.
Para solucionar este inconveniente es que usamos los editores de sprites
como Naga, X-Late y el SNES Sprite Editor (de ahora en adelante a este
programa lo llamaremos SNESSE). Primero abrimos la rom con el Naga, X-Late
o SNESSE selecionamos 2 bitplanes para fuentes normales o 1
para 16x16 tiles y luego buscamos a traves de la rom, el lugar donde aparecen
las letras, es decir un sitio donde apareceran todas la letras mayusculas
y minusculas y todos los numeros; en la rom os encontrareis: ABCDEFG.....
asi todo en orden, luego las minusculas y luego los numeros o viceversa,
cada letra se correlaciona con un codigo hex. asi la A=01 B=02 y
asi todo.
Bien, por esa zona posiblemente tambien esten las
interrogaciones, admiraciones, puntos, comas, etc.. Ahora nosotros buscaremos
un simbolo raro o que no se vaya a usar mucho en el juego o que a nosotros
no nos sirva, como puede ser " ´ ", y lo editaremos con el Naga o
el SNESSE en el editor grafico (se hace pulsando sobre el pixel en cuestion)
entraremos dentro de una pantalla donde veremos el pixel en grande, y alli
lo editaremos y dibujaremos encima de ese pixel una Ñ, lo mismo
se puede hacer para los simbolos de puntuacion que pudiesen faltar.
ahora solo queda descubir que codigo hex. correspondera a esa Ñ,
eso se puede averiguar sabiendo que cada codigo va en orden desde la A
hasta el 9, seguir con la linea y llegareis a la Ñ contar cuantos
simbolos han pasado y ya tenemos el codigo.
En los juegos japoneses esto es muy importante ya
que muchos de ellos no tienen letras occidentales por lo que hay que reemplasar
los simbolos japoneses por letras. Para hacer esto podemos usar el X-Late,
abrimos la rom de la que queremos copiar las fuentes, las selecionamos
y vamos al portapapeles del X-Late donde las copiamos. Luego abrimos la
rom a la que le queremos cambiar la fuente, las buscamos y selecionamos,
luego decimos pegar y listo. Asi de facil.
3.0 Traduccion avanzada
Abran notado que la rom tiene un espacio determinado para el texto y que si se pasan de ese espacio la rom deja de funcionar. Pues bien hay una forma de solucionar este problema pero es un poco complicado y ademas es distinta para cada sitema por lo que lo voy a explicar por separado para NES y SNES
4.0 Expansion de texto en NES
Antes que nada es necesario saber como almacena la
rom el texto del juego. Por lo general en la roms de NES el texto es almacenado
en bloques de texto. Cada bloque de texto tiene cadenas de texto que aparecen
una despues de otra (en el editor hexadecimal) y que se encuentran separadas
por un valor hex que significa el fin de una cadena de texto. Estas cadenas
corresponden a las distintas frases que vemos en el juego.
Sin embargo estas cadenas de texto no necesariamente
estan almacenadas en el bloque de texto en el orden en que estas cadenas
aparecen en el juego. Es por esto que en las roms de NES encontramos lo
que llamamos una "Tabla de Punteros", la cual se encarga de decirle a la
rom las direcciones hex donde se encuentran las cadenas de texto, ademas
en ellas esta almacenado el orden en que aparecen en el juego estas cadenas
de texto. Estas Tablas de Punteros se explicaran con mas detalle mas adelante.
4.1 NES Headers
Es necesario explicar los Headers (cabezales) en las roms antes de seguir con las Tablas de Punteros. Los cabezales en las roms de NES corresponden a la primera linea de la rom en el editor hex, son los primeros "10" bytes hex. Este numero es muy importante por lo que hay que recordarlo, ya que se usa al editar las Tablas de Punteros en las roms. El cabezal en las roms de NES suele ser asi:
Noten que los primeros tres bytes son los codigso ASCII para "NES".
4.2 Tablas de punteros
Para encontrar las Tablas de Punteros del texto en la rom, es necesario saber donde esta el texto en la rom y que valor hex representa el fin de una cadena de texto. Sabiendo esto vamos al bloque de texto y tomamos la direccion hex del comienzo de una cadena de texto, por ejemplo digamos que la direccion es 012D63 como las Tablas de punteros guardan las direcciones de texto en pares de numeros hex, tenemos que quitar los numero extras y dejamos solo los ultimos 4 digitos quedando 2D63, luego le restamos el cabezal con lo que 2D63 pasa a 2D53. Acontinuacion separamos los 2 codigos hex y los colocamos al reves con lo que nos queda 532D. Esta es la manera en que la rom guarda las direcciones, por eso es que 2D53 pasa a 532D. Este valor corresponde al puntero para la cadena de texto que elegimos, ahora para encontrar la tabla de punteros solo le decimos al editor hexadecimal que busque 532D en la rom, por lo general esta Tabla se encuentra cerca del bloque de texto. Una Tabla de punteros de texto en las roms de NES luce como esto:
Explicacion: "70" significa el final de una
cadena y el comienso del bloque de texto esta en la direccion hex 019D44,
la tabla de punteros esta en color azul.
Ahora para aumentar el espacio para el texto en
en la rom tenemos dos opciones:
1)-Vamos a una zona vacia de la rom que suele estar llena de FF o 00
y escribimos nuestro texto alli, ahora en la tabla de punteros cambiamos
las direcciones del texto original y las remplazamos por las direcciones
del texto que escribimos nosotros, si no funciona entonces ese sector no
estaba vacio.
2)-Simplemente cambiamos el puntero del texto que viene despues, acercandolo
o alejandolo.
Tambien podemos hacer esto mediante los programas Thingy, Scrip-E y Scrip-I, para esto necesitamos la ayuda del table maker. Consiste en crear un archivo tbl de la rom mediante el table maker, este debe contener la tabla de caracteres de la rom, ademas de los codigos hex que significan fin de una cadena de texto y salto de linea. Este archivo sera utilisado por el Thingy y el Scrip-E para dumpear el texto de la rom. En el caso del Scrip-E se convertira en un archivo de texto comun que podremos modificar a nuestro antojo, luego para meter este texto se utilisa el Scrip-I. No estoy muy familiarizado con estos programas por lo que de momento no puedo explicar mas sobre ellos y su uso.
Guia de Traduccion 2