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:
- Busca en el juego algún texto y anótalo, en este caso usaremos "You woke me
up!".
- Crea un fichero de texto vacío, y grábalo con extensión .tbl (por simpleza
aquí lo llamaré pksilver.tbl)
- Abre el HEX-Calibur.
- 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:
- Pulsa enter hasta que entre al programa ya que las otras cajas no las
usaremos, entonces te aparecerá el editor hex.
- Pulsa F5 para entrar en modo de búsqueda relativa y escribe lo que quieras
buscas, en nuestro caso "You woke".
- 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.
- 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)
- El programa te pregunta si debe hacer una tabla, pulsa 'Y' para decirle
que sí.
- 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'.
- Pregunta si debe escribir en la primera o segunda tabla, como al principio
no elegimos ninguna segunda tabla dale al '1'.
- Por último preguntará si debe guardar los cambios a la tabla en el HD,
dile que Yes 'Y' XD.
- 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
- Abre el ThingyV
- Elige la ROM del menú.
- Elige la tabla del menú.
- Cuando te pida una tabla secundaria pulsa ESC ya que nosotros no tenemos
una.
- 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.
- 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.
- 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.
- 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
- Pulsa la 'Q' y luego la 'S' para guardar los cambios y salir del ThingyV.
- 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 >>