Coming back to Rom Hacking

PRP
4 min readAug 16, 2018

As every child of my generation, I loved — and still love — video games, I used to play all day long, I even learned to read thanks to Pokémon Yellow Version!

After entering High-School my parents bought a new PC, I passed from a Windows 97 to a Windows Vista, and I saw the Internet for the first time. After some time of looking for new video games I saw a forum of fan-made video game translations. There, people interested in video games, computing, and languages organized themselves into little groups to translate specific games.

Soon my afternoons changed: from playing video games to translate them. I started helping at The World Ends With You (my nickname back then was nisio) as a beta-tester, grammar corrector, etc. But then am unknown user did a very cool online software which allowed us to translate plain text, avoiding the difficult issue of inserting text back in the game.

Then, I started with a huge project called Jump Ultimate Stars, where I and another friend translated and edited (one by one, text and pixel art) all the images (more than 500) plus some text.

One of the many images

After that I helped in other translations: Luminous Arc, Trauma Center 2 (designs), FF Heroes of 4 lights… I was very active and loved to help.

I even tried to translate two games on my own: Digimon World DS and My Japanese Coach. But quickly I felt how the lack of coding skills was preventing me from getting where I wanted. Decompressing files, automating actions or inserting texts in the game was too much work to do without any software, so I pivoted into learning how to code.

Which bring us until this summer: recently I’ve been talking with a friend about this hobby we used to have and wondered where is our limit now, with way more computing and language skills.

After some research, I decided to give it a try on an old cooking game called My Healthy Cooking Coach. My main goal was to translate the menu:

After decompressing the rom I found a very easy file structure which allowed me to find the main menu file: MainLevel.

Opening MainLevel with a hexadecimal editor (0xED)

I tried to change some letters and it worked perfectly. So the next step was to find pointers.

Usually, before a big block of text, we can find weird characters, which are pointers to the beginning and to the end of every word, sentence or block of text.

In this case we don’t have that, but after some research I found an interesting revelation:

As we can see in the image, after the “pre-word” block we have the length of the following text in hex. I tested it and the result was phenomenal, but, I needed more space for the Spanish text (as everybody knows Spanish words are usually longer than English), so I tried to just add more zero bytes at the end… it worked! I was lucky!

Now I just had to translate everything, but, as the game needed a fixed structure, with strictly 16 bytes after every word (1200 0000 0100 0000) I quickly sketched a little script in C++ to help me out.

The final step was editing the font, as I thought it didn’t include Spanish chars, but after a little lookup in the game folders, I discovered a file called “cookware_spanish.clist” with every Spanish character. I did a little test:

As you can see we have é, ¡ and ñ

The result was a success. I managed to translate an important piece of the game. Also, this script could be easily adapted to other files, as the 16 bytes pre-word changed a little bit in other parts of the game.

My goal was met: I was able to hack a game and translate part of it. It’s sad that this video game is not very interesting, but I think this will mean the start of more useful tools and new video game translations.

--

--