1.0 Utilidades

    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:

c:\trans>searchr (texto) (nombre de la rom)

    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:

para avansar SOLO debemos usar las teclas de avansar y retroceder pagina.
    En el X-Late el primer cuadrado en la esquina superior izquierda representa el codigo hex 00,el del lado 01 y asi sucesivamente.  Sin embargo a veces las dos primeras lineas no se usan y la numeracion empezaría en el primer cuadrado de la tercera linea.
    Si esto no te resulta existe un tercer metodo que en realidad es una modificacion al uso de Searchr, yo lo uso en algunos juegos con fuentes japonesas. Consiste en buscar una palabra en el juego que tenga los simbolos lo sucifientemente cercanos de manera que podamos representarlos con nuestro alfabeto, asi nos quedaria una frase extraña como pkfrs, la cual buscamos mediante el Searchr, la cercania de los simbolos la tenemos de la tabla que vemos a traves del editor de Sprites.
    De esta manera tendriamos los codigos hex de esos simbolos y como la tabla esta echa, tambien tendriamos los codigos hex de los demas simbolos.
2.1 Cambiando la fuente

    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:

4E45 531A 1000 1300 0000 0000 0000 0000

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:

019D30: 4D76 00F8 349D 3B9D 419D 449D 499D 4D9D
019D40: 529D 569D E5E3 F6CD 4ADA 70F8 F9FA FBF0
019D50: 704C FE70 4BDD CEF3 705C F64D 704C F6CF
019D60: CE70 F5DD CB70 4BF0 DDF1 F2DD F370 83B7

    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
 

FastCounter by LinkExchange