Personal project to learn how to translate a SNES ROM

Started by FalloutXtreme, March 06, 2023, 06:30:49 AM

Previous topic - Next topic


Hello all  :) ,

I will first introduce myself. My name is Virgil, I'm 32 years old and I live in France (sorry for the mistakes I'll probably make in English).
I am a web developer and I have good knowledge of software programming languages (C++, C# in particular).

I have a little more free time than usual, so I decided to challenge myself to understand how the NES / SNES ROMS were built, and why not, later on, start a translation project for one of these games.

So, I've read a lot of tutorials and FAQs and I think I've understood the principle. I took a random ROM to train myself and see if I could do something (learning phase for the moment, it's really just an exercise to assimilate and understand). It is the SNES ROM of Chrono Trigger in English.

I started by trying to do a relative search of the character table used based on one of the first sentences that appears in the game ("Good morning Crono!") by hand (I tested all the combinations by hand starting from 01 to FF in my hex editor search). Being on a Mac, my choice of editor is quite limited.
After a few hours of effort, I found quite a few results (120) via my hexadecimal editor that might match but are not sure (C8C8BD). C8 would equal o and BD would equal d in this case.
Because in the word that follows (morning), I have C8 again that appears after the space and the m in the editor and would therefore be well placed.
This is where I get stuck, because the few results that could match (4-5) give nothing after changing these bytes (if I replace a C8 in BD for example, which should have shown me: "Gddd morning" on the screen in all logic).

I kept looking and it seems that the ROM is compressed with LZSS, which could potentially cut some words in the editor.

I'll keep looking tonight when I get home from work (maybe with another shorter sentence) but I'm interested if anyone can send me resources to help me or to point me in the right direction ;)

Thanks in advance to everyone for your help ;)
Have a good day/evening ;)


Thanks for your reply ;)

Yes, I know this French website. I've found a lot of ressources for general romhacking.
I will go ask my question on their forum too :)

EDIT : Thank you for your link which allowed me to see that I was finally on the right track with my relative text search (C8 is well equivalent to o and BD to d!):

On the other hand, I didn't suspect that a byte could contain several characters: (example: 95 = your)

I'm going to do more research and look into pointers now ;)