GUÍA DE TRADUCCIÓN DE ROMS

Por DaRKWiZaRDX

MODIFICANDO JUEGOS CON TABLA

¡Vamos que ya tenemos buenas bases! ^^ Ya modificamos un juego ASCII y es hora de atacar la fortaleza enemiga de Mord... Err... Es decir, ahora atacaremos los juegos con tabla, es decir, juegos que no utilizan la codificación ASCII que vimos en el ejemplo del Zelda.
Para poder modificar el texto de un juego que no está en ASCII necesitaremos una tabla de valores (o tabla de caracteres) que nos dirá que X valor significa X caracter, y así se facilita la traducción a una codificación diferente desde el ASCII que nuestros teclados utilizan -en DOS- xD. Primero haré una explicación rápida sobre qué son las tablas:

LAS TABLAS

Las tablas son ficheros comunes de texto (solo que con extensión .tbl) que sirven para "traducir" de una codificación a ASCII para poder editar el texto más fácilmente, las tablas tienen un formato para indicar las equivalencias:

<valor hex>=<letra>
P.Ej: 01=A

Entonces cuando abramos la ROM y elijamos la tabla (ya veremos como hacerlo más adelante) en cada lugar donde aparezca el hex $01 en la ventana de texto nos aparecerá 'A', por lo tanto, sabremos que el $02 será la 'B' y así continuamente hasta que tengas todo el abecedario (alfabeto). Las tablas pueden almacenar hasta 256 caracteres como puedes ver aquí:

  0 1 2 3 4 5 6 7 8 9 A B C D E F
0 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
1 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
2 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
3 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F
4 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
5 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F
6 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F
7 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F
8 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F
9 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F
A A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF
B B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF
C C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF
D D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF
E E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF
F F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF

Bueno, ahora volvamos al Romhacking :D

COMPLETANDO LAS TABLAS

Para completar las tablas deberemos hacer una búsqueda relativa, hay varios programas especializados (p.ej: SearchrX) pero en este caso usaremos la utilidad de búsqueda relativa del HEX-Calibur que además de ser muy buena y rápida permite crear una tabla con los valores encontrados para ahorrarnos trabajo, en este caso usaremos la rom del Pokemon silver de GBC:

  1. Busca en el juego algún texto y anótalo, en este caso usaremos "You woke me up!".
  2. Crea un fichero de texto vacío, y grábalo con extensión .tbl (por simpleza aquí lo llamaré pksilver.tbl)
  3. Abre el HEX-Calibur.
  4. Escribe el nombre de la Rom en la primera caja, avanza de caja con el Intro y en la segunda escribe el nombre de la tabla (en nuestro caso pksilver.tbl). TODO DEBE ESTAR EN UNA MISMA CARPETA. Debe quedar algo parecido a esto:
  5. Pulsa enter hasta que entre al programa ya que las otras cajas no las usaremos, entonces te aparecerá el editor hex.
  6. Pulsa F5 para entrar en modo de búsqueda relativa y escribe lo que quieras buscas, en nuestro caso "You woke".
  7. El programa mostrará en un menú los lugares en que encontró la frase y a la derecha un poco más de texto para saber si es el bloque de texto que buscamos, en este caso no se mostrará texto ya que se encontró una sola ocurrencia.
  8. Pulsemos enter ya que es la única vez que se encuentra eso en la ROM, también sería recomendable que anotes el offset (es decir, la dirección que aparece a la izquierda) para saber luego donde se encontró el texto. (1638765)
  9. El programa te pregunta si debe hacer una tabla, pulsa 'Y' para decirle que sí.
  10. Te preguntará si debe extender la tabla anterior (la que nosotros hicimos vacía), generalmente es mejor poner esto en 'Y' pero en nuestro caso no importa, dale a 'N' o a 'Y'.
  11. Pregunta si debe escribir en la primera o segunda tabla, como al principio no elegimos ninguna segunda tabla dale al '1'.
  12. Por último preguntará si debe guardar los cambios a la tabla en el HD, dile que Yes 'Y' XD.
  13. Ya tenemos nuestra tabla lista, saquemos este editor, ya que no lo usaremos para modificar texto, pulsa la Q y ponle que 'Y' o 'N' cuando te pregunta si quieres que guarde los cambios, ya que no importa, pues no hicimos ningún cambio a la ROM misma.

Ya tenemos la tabla con los caracteres básicos, cabe destacar que es mucho más efectivo usar una frase en la que aparezcan mayúsculas y minúsculas, porque así completamos los dos alfabetos de una vez.

Ahora abramos la ROM en un editor, en este caso el ThingyV y cambiémosle algo de texto

  1. Abre el ThingyV
  2. Elige la ROM del menú.
  3. Elige la tabla del menú.
  4. Cuando te pida una tabla secundaria pulsa ESC ya que nosotros no tenemos una.
  5. Cuando aparezca la ventana del editor, pulsa la J y elige "Posición manual" para saltar a una posición que nosotros queramos. Escribe 1638765 (el número que nos dio la búsqueda relativa) y el programa saltará a esa posición.
    Es recomendable que hagas un "bookmark" para llegar rápido al texto, para hacerlo escribe en la tabla en una línea vacía: (offset en hexadecimal +h) <nombre del bookmark>. Si no agregas la 'h' tras el offset será tratado como decimal.
    P.ej: En este caso, algo apropiado sería: "(19016Dh) Elegir Hora", luego en el menú Bookmark o Jump de casi cualquier editor puedes saltar directamente a esta posición, varios programas pueden escribir bookmarks de forma más sencilla, pero por ahora estará bien así. Para pasar de decimal a hexadecimal usa la calculadora de Windows en modo científico, escribe el número en modo decimal y pulsa el botón radio (redondo) "Hex" para pasarlo a Hexadecimal.
  6. Aparecerá algo así:

    ¿Qué son todos esos '#'s? Son los caracteres que no tienen equivalente en la tabla, así que aparecerán repesentados de esa forma, ¿Y cómo los quitamos? Poniendo en la tabla cual es su equivalencia, ¿Y cómo hacemos eso? Mirando en el juego, por ejemplo, entre "You" y "woke" ¿Qué hay? Un espacio, entonces miramos el valor, $7F, y en la tabla ponemos:
    7F=
    (hay un espacio después del = ). Después  de "up" hay un signo de exclamación, miramos el valor, $E7 y agregamos a la tabla:
    E7=!
    Y así deberemos seguir hasta que tengamos en la tabla suficientes caracteres para poder traducir de una forma mas o menos decente, aquí te facilitaré unos cuantos hex con sus equivalencias en ASCII:
    54=POKé
    75=...
    D4='s
    E6=?
    Agrega eso a la tabla y ahora abre la ROM con el ThingyV.
  7. Ahora verás el texto algo distinto:

    ¿Notas que algunas letras y caracteres aparecen en diferentes colores? Es que se tratan de DTEs/MTEs, es decir, son más de una letra/caracter que se usa con un solo byte hex, sirven para ahorrar espacio en la rom, pero por ahora no profundizaremos mucho en los DTE/MTE, eso lo haremos en su sección. También notarás que algunos hex ($4F, $00 y $51 para ser más exactos) no los he puesto en la tabla, es que son códigos de control, que indican cuando hay que bajar una línea o pulsar un botón para cambiar de cuadro, por ahora tampoco los tocaremos, ya que son la siguiente sección de la guía.
  8. Vamos a editar texto, sitúate en la 'Z' (la mayúscula, es decir, la primera) y pulsa la barra espaciadora, ahora muévete hasta el '!' después de "up" y vuelve a pulsar la barra espaciadora y te aparecerá una pantalla en la que debes poner el texto modificado, escribe algo como "Zzz... Uh? Que...?" <- Eso te ocupará exactamente el mismo espacio ;) y pulsa enter para aceptar y volver al editor y verás que el cambio está hecho en la ROM, ya que estamos cerca cambia también "You woke me up" por "Me despertaste!". Quizás
  9. Pulsa la 'Q' y luego la 'S' para guardar los cambios y salir del ThingyV.
  10. Abre la Rom con cualquier emulador y mira la diferencia:

    ¡Misión cumplida! ^^

Pero, después de esta sección, aunque logramos nuestro objetivo, quedaron varios cabos sueltos, como los códigos de control, los DTE/MTE, así que habrá que seguir para poder entenderlos y utilizarlos a nuestro favor para hacer una traducción más fácil (por el espacio del que dispones) y con mejor calidad (por el modo en que usas ese espacio).

<< Anterior - Indice - Siguiente >>