Registrarse

[Otros] [GBC] Consultar textos en ROMs españolas de Pokémon Rojo y Pokémon Azul

illustietor

Usuario de oro
¡Hola!

Hace poco me propuse el proyecto de sustituir todos los textos de la versión inglesa desensamblada de Pokémon Red & Blue por los de la versión española, y claro, para ello primero necesitaba poder consultar los textos de la ROM española de Game Boy. El problema es que herramientas como PokeText no son compatibles con las ROMs españolas originales (supongo que porque los bloques de texto están guardados en direcciones distintas y la herramienta no está preparada para encontrarlos), así que me puse a indagar que otro programa podría utilizar y me topé con el maravillosísimo tutorial "Traducción ROMs Pokémon" de @Loz, que aunque está orientado a juegos de GBA, da las bases necesarias para saber qué es el código hexadecimal, explica como manejarse con un editor hexadecimal y describe qué son las tablas (.tbl) de caracteres personalizadas. Os recomiendo que descarguéis el PDF y le echéis una lectura si queréis entender con mayor profundidad lo que voy a explicar, pero si solo tenéis la curiosidad por cotillear un poco los textos en español pues supongo que con mi explicación bastará.

¿En qué consiste este tutorial?
En este tutorial aprenderás a descargar y utilizar las herramientas necesarias para poder consultar los textos (diálogos, tipos de pokémon, menús...) dentro de una ROM española de Pokémon Rojo o Pokémon Azul.​

Herramientas y recursos necesarios:
- WindHex32 u otro editor hexadecimal similar que permita tablas (.tbl) de caracteres personalizadas.​
- Mi tabla (.tbl) de caracteres personalizada (compatible con ROMs españolas de Pokémon Rojo y Pokémon Azul).​
- Una ROM española de Pokémon Rojo o Pokémon Azul.​


TUTORIAL

Abrir WindHex32 y cargar archivos:

Una vez descargado WindHex32, lo descomprimimos el archivo .zip en una carpeta de nuestro gusto. Por comodidad a la hora de cargar los archivos, recomiendo colocar también en la misma carpeta la tabla de caracteres personalizada (el archivo .tbl) y el archivo .gb/.gbc de la ROM española de Pokémon Rojo o Azul que hayáis escogido.


Si habéis descargado el mismo .zip de WindHex que yo, los archivos de vuestra carpeta deberían ser más o menos estos.
Ahora ejecutamos el archivo WindHex.exe y debería abrirse una ventana como esta:


Ventana de WindHex.
Primero vamos a cargar la ROM. Hacemos click en "File > Open File for Editing..."


Se abrirá una ventanita de exploración de archivos como la siguiente donde tendremos que buscar y seleccionar el archivo de la ROM que queramos abrir. En mi caso, "Pokemon Rojo.gb".


Una vez abierta la ROM podremos observar en el panel de la izquierda el código en hexadecimal y a la derecha la "interpretación" que hace WindHex del mismo. Si hacemos scroll (la rueda del ratón no sirve, tenemos que usar la barra que hay a la izquierda de la ventana o las flechas del teclado) veremos que no hay ni un solo bloque de texto del juego y que son todo caracteres sin sentido. Eso es porque WindHex crea por defecto una equivalencia de Hexadecimal (los bloques de números y letras de la izquierda) a ASCII (el texto de la derecha), ¡pero es que Pokémon no usa ASCII, sino su propia tabla de caracteres! Es por eso que tenemos que cargar una tabla especial de equivalencia hexadecimal a texto para que el programa nos lo traduzca bien y podamos leerlo cómodamente.


Para ello hacemos click en "File > Open Table File > Table #1"


De nuevo se nos abrirá una ventanita de exploración de archivos y esta vez cargaremos el archivo .tbl que he adjuntado en el tutorial.


Y si ahora hacemos scroll... ¡ya deberíamos ser capaces de poder encontrar bloques de texto legibles!






Cómo buscar textos específicos:
Vale, ahora los textos ya son legibles pero... ¿dónde están exactamente?

En un editor hexadecimal podemos ver TODO el código compilado de la ROM, no solo los textos. En esas partes de "texto no legible", es decir, código hexadecimal que nuestra tabla de caracteres personalizada no traduce como texto, se encuentra todo tipo de código del juego: desde gráficos del juego hasta las mecánicas que lo hacen funcionar. Es por eso que incluso entre los textos legibles se pueden encontrar "palabras" que no parecen tener sentido, lo que normalmente se deben a variables que cargan un dato u otro según el contexto o la ocasión (por ejemplo, el nombre del Pokémon que te acaban de debilitar). Los textos del juego no están almacenados en un orden específico y están distribuidos por distintos puntos de la ROM (hay quien los llama "bancos de texto"). Técnicamente alguien podría currárselo y buscar en qué direcciones se encuentra cada diálogo y hacer un índice especificando dónde está cada cosa (creo que PokeText funciona más o menos así con las ROMs inglesas), pero hasta donde yo sé nadie lo ha hecho con las ROMs españolas de Pokémon Rojo y Azul, así que de momento nos toca apañárnoslas como podamos.

Si queremos encontrar un texto específico primero debemos saber cómo está escrito. Por suerte a día de hoy hay un montón de gameplays y walkthroughts que podemos consultar para ojear algún texto que nos sirva de ancla para encontrar el bloque de texto que andamos buscando. Por lo general, los textos sobre una misma cosa están agrupados: los items, los tipos de entrenador, los tipos de Pokémon, los diálogos de los NPC de una ruta... Así que si no sabemos como está escrito tampoco es necesario dar exactamente con el texto que andamos buscando; con tener a mano un texto que pueda pertenecer a su grupo nos puede bastar para localizar su bloque y luego ir haciendo scroll hasta encontrar el que queremos.

Para buscar texto lo ideal es usar la herramienta de búsqueda de WindHex. Hacemos click en "Search > Text Search" y se nos abrirá una ventanita de búsqueda:


En "Enter Data:" introducimos el texto que andamos buscando tal y como aparece en el juego pero teniendo también en cuenta la tabla de caracteres que estamos usando (en este caso la mía), pues puede haber caracteres que no estén bien recogidos en la tabla (perdón) o que en el juego sean "invisibles" pero en la tabla de equivalencia no (por ejemplo, los "[Salto-Línea]"). A la hora de buscar recomiendo tener activadas las opciones "Save Finds in a Search List", que creará una lista con todas las coincidencias que encuentre en la ROM (para no tener que hacer una búsqueda manual para cada posible coincidencia, y "Start Search From the Begining", para que busque por toda la ROM y no solo a partir de donde tenemos el puntero.

Hagamos un par de pruebas a ver si así se entiende mejor. Voy a buscar el texto de la introducción que hace Oak al empezar una partida. Como no me acuerdo exactamente qué decía, voy a buscar un vídeo donde salga y así saber qué texto exacto tengo que buscar.


El diálogo empieza con el texto "¡Hola a todos!", después iría un salto de línea normal y continuaría con "¡Bienvenidos al" seguido de otro salto de línea (esta vez accionado por una pulsación de botón). Como el "¡Hola a todos!" ya me parece per sé un texto bastante particular, lo usaré como ancla para encontrar todo el discurso.


Fijaos que WindHex me recoge el "¡" como un punto raro. Eso es porque algunos caracteres particulares del español no están recogidos en la tabla ASCII de WindHex, pero tranquis, a la hora de buscar en la ROM lo hará como "¡" y no como el punto raro.

Como tengo seleccionada la opción de "Save Finds in a Search List", una vez le doy a "Find" se me abre esta ventanita con todas las coincidencias que WindHex ha encontrado en la ROM. Si hacemos doble click en ellas, el puntero de la ventana principal saltará a esa posición.


¡Y tachán! Ahí lo tenemos.


Personalizar tabla .tbl
En este punto del tutorial ya deberías ser capaz de abrir una ROM española de Pokémon Rojo o Azul y curiosear sus textos con un editor hexadecimal (editar los textos ya es otra movida), pero recuerda que lo estás haciendo con mi tabla de equivalencia de caracteres, la cual puedes editar y perfeccionar a tu gusto.

Cuando empecé a investigar la manera de consultar los textos de las ROMs españolas de Pokémon Rojo y Azul no fui capaz de encontrar ninguna tabla que fuera compatible (encontraba varias de juegos de GBA y alguna de Pokémon Oro). Al final fui capaz de encontrar la tabla de los juegos en inglés con la suerte de ser bastante compatible con las ROMs españolas. Luego simplemente tuve que ir ojeando como la tabla interpretando los textos desde hexadecimal e ir deduciendo que caracteres faltaban, cuáles estaban equivocados e ir perfeccionándola. Probablemente la tabla que comparto no es perfecta porque aún no he tenido el tiempo de revisar las cosas al 100% (si la mejoro procuraré actualizarla), pero voy a explicar un poco cómo podríais hacerlo por vuestra cuenta.

Lo primero es abrir la tabla .tbl en un editor de texto (yo uso Notepad++, pero podéis usar el Bloc de notas normal). Una vez abierto veréis una lista con el código hexadecimal a la izquierda y, separado por un "=", la equivalencia que debe interpretar WindHex a la derecha.


Si no os gusta alguna equivalencia que haya hecho yo o falta la equivalencia de algún byte hexadecimal a texto, podéis cambiarla a vuestro gusto y sobrescribir el archivo sin problemas.

¡Eso es todo!
 

Adjuntos

Última edición:

Funtendo

Profesional de WaH
Muy bueno el tutorial, actualizaodo y sencillo
Se agradece ya que teníamos al menos 4 años sin un nuevo tutorial..
 

zekrom007

Usuario de oro
hay alguna manera de traducir las roms de pokemon gbc sin tener que utilizar calculadora de scripts
 

RevKenHack

Usuario de oro
A no ser que tengas el código fuente a tu disposición, este tutorial es el método a seguir. A la hora de cambiar los textos solo tienes que fijarte en el límite de caracteres por renglón y repuntear en caso de que sea necesario (respetando el límite igualmente)
 

zekrom007

Usuario de oro
Sí, estan bien esas respuestas el problema seria como decompilo una rom de pokemon ejemplo el pokemon factory red adventure y tradusco esos dialogos
 

Adjuntos

zekrom007

Usuario de oro
A no ser que tengas el código fuente a tu disposición, este tutorial es el método a seguir. A la hora de cambiar los textos solo tienes que fijarte en el límite de caracteres por renglón y repuntear en caso de que sea necesario (respetando el límite igualmente)
Aunque porque deberia respetar los limites si existe algun tipo de repunteo para juegos de pokemon gbc
 

Bugrhak

A long time ago I used to call myself "Subzero".
Sí, estan bien esas respuestas el problema seria como decompilo una rom de pokemon ejemplo el pokemon factory red adventure y tradusco esos dialogos
O puedes probar a contactar con el autor y pedirle que te dé el proyecto en bruto 😋.
(Por cierto, "tradusco" de escribe con z, "traduzco". Te lo traduzco xD)


A no ser que tengas el código fuente a tu disposición, este tutorial es el método a seguir. A la hora de cambiar los textos solo tienes que fijarte en el límite de caracteres por renglón y repuntear en caso de que sea necesario (respetando el límite igualmente)
Porque la caja de texto tiene un límite
Hace muchísimo no toco un rom de GBC y hay cosas que no recuerdo pero igualmente creo que eso no funciona así. Una cosa la cantidad máxima de caracteres que puedes mostrar de forma efectiva en un renglón, y otra cosa es el límite máximo de caracteres que puede tener una entrada de texto en un script. (Con la segunda si puede que habría que tener algo de cuidado, aunque creo que los juegos de primera generación no tienen ese limitante «ni ningún juego de gen posteriores creo que la tiene». )

La cantidad de caracteres que decidas poner en un renglón no debería importar, siempre y cuando se hagan los saltos de línea cuando corresponde.

Si en el juego tengo el texto:

Código:
"¡Bienvenidos al"
Perfectamente lo puedo cambiar por
Código:
"Welcome!"
Y no habría ninguna necesidad de llenar con espacios vacíos para abarcar la longitud del texto "Bienvenidos al".

En un rom tan limitado en cuestiones de espacio, sería ilógico tener un Limit Length para cada renglón de texto 🤣🤣🤣🤣 (además de por si no tiene ningún sentido creo).
 
Arriba