Translation Guides

Moloch

Paladin Knight
Level 1
Joined
Dec 1, 2024
Messages
72
Reaction score
77
Points
127
Location
Georgia
I would like to try translating a NES game but I don't know how to.
I was also looking everywhere and I could not find any guides for NES Japanese to English translation.
Do you know any? Could you share them?
Or, if you know how to do it, could you create the guide(s), explaining the process step-by-step and share it(them) here?

For those interested, I have found this for SNES.


Thanks.
 
Maybe this will be of some help.
Thanks for sharing first of all.
It's definitely a good page to understand, very quickly, what programs are available.

Does it help -me? Well, not really.
There is not much there that I haven't seen already. I actually wanted to find more information about the tables. I don't know any Japanese, but I was hoping to find a way around that and create tables, check the Japanese text, translate it with ChatGPT or Google Translate... So far all my attempts failed miserably. I have uploaded a few tables but i couldn't see in the ROM any (readable) text. :-)

EDIT: There is a section called "Generally Recommended Documents" with two guides. I am checking them now.
 
Last edited:
Yeah, I maybe can't help too much, but I'll try.
I think there are roughly a few steps/avenues you can take (depending on your skills), and several possible challenges. Sorry if I cover something you already know. This might be interesting for others too.

Some challenges to find the text:
---
Is the text compressed? If so, you'll need to reverse engineer the compression algo first to be able to find the text at all.

Is the text you want to change actually a fixed sprite? Text can either be getting rendered by code (then bytes will be representing text like the tables you have learned about, or text can just be a static picture that you'll have to edit. Usually this would be UI elements or intro gfx, and not a text box, but you never know :)

If the text is not compressed, you need to figure out what bytes in the hex are being fed into the display code as strings, and from there build a table (basically what byte/bytes correspond to what symbols - kana or whatever) and that will let you create something to dump out the text. The text probably won't be encoded in something you can see in a hex editor directly (ascii or shift-jis).

Some approaches to find the text:
---
1. You can use something like Ghidra (https://www.retroreversing.com/nes-ghidra) to reverse engineer the game. You need to figure out what mapper is being used first, but you'll need to know that anyways to put your text back in. Then, you'll have to learn to use Ghidra (and maybe a bit about the ASM for the nes, too - but you will probably need to learn a bit anyways to get the text back in, more on that later. Then if the Ghidra analysis goes well, you might get the locations of strings (and importantly) the

2. For Kana - find some early text or save state right before the text. Think about how the kana alphabet might be encoded in order, not the specific bytes, but like ka-ki-ku-ke-ko, na-ni-nu-ne-no. Then you can think about the order the characters in the string the would be in and use a relative searcher like (https://github.com/spencerwilson/opensearch) or another. Hmm, I'll try to give an example in English. Say the game displayed 'abcd' somewhere. Then I'd use the relative searcher to find 4 bytes that are all one apart. Obv this wouldn't be so good for Kanji, but not sure many nes games use those.

3. Think you might know where a string or pointer are? Try corrupting them to something else in the same range and see if you get a change. Like if I thought I'd found ABCD, and it was hex a0 a1 a2 a3, I'd change it to a0 a0 a0 a0, and hope to see AAAA.

4. Use a nes emulator with a debugger, and learn about (maybe dependent on your mapper) the memory architecture of the nes and how to use breakpoints. Then set up a breakpoint for when the nes writes your string to the 'screen', and you can look in memory or the instructions to work your way backwards to where the characters came from in the ROM. You'll also need to learn about 'offsets'. A thing might be at a certain address on the ROM, say 0x12e45, but in memory (when the code is running) it might be at 0xe3a67. This is where you need to learn about mappers, too.

Then, you need to put your English text/images back in, this is called inserting.
Challenges to inserting:
1. Does the game have any fonts for the languages you want to translate into? If not, you'll need to create some sprites to represent the characters you need and put them in places in the ROM you can fetch them from later.

2. Is there text compression? If so, you'll need to recreate the compression algorithm and compress your text with it before you put it back in. Or you can rewrite the code in assembly to change how it handles text - this needs some advanced skills, but people do it.

3. Is there room in the ROM for your text? If Ja-En, probably not. Even kana is a little more 'space efficient' than latin alphabet, and kanji is sometimes extremely so. Imagine there are two strings 'Glorp' and 'Pog' next to each other, and I want to translate them into 'Gosh I'd like a peanut butter sandwich.' and 'No, we don't have any'. I can't just put those texts in the same place their priors were, they are too big and you can't push things around in the ROM without breaking everything. Then you need to understand pointers - maybe I can stick my strings in some unused space (like making the ROM bigger and slapping them on the end) and change the pointer that 'points' to the previous strings so it points at my strings instead.
---
So, I realize this is a lot, possibly a lot more than you want to mess with depending on your background. I'll say three things. You can learn all of this stuff. It is super hard, and pretty much every game will present new challenges and you may have to give up on projects some times. Especially if you don't have low level (like knowing C, assembly, or the Nes architecure) skills, take your time and go slowly.

Check places like romhacking.net to see if anyone has done any work at all on the game. Even if there is no translation yet, someone might have done a lot of research/ tool crafting already, and there might be a big 'hell no' point that they found that you can overcome, or that you might want to avoid. Also, if there is a translation in another language, that can be a gold mine of help.

I also have other options for you, if you just want to play the game. You can machine translate from images pretty quickly/cheaply these days. A lot of people just point a phone at the screen and use Google translate.

Check out stuff like ztranslate (https://ztranslate.net/) too.

Sometimes there are also textual translaitons you can follow along with (and you can make a machine one for others to follow with not nearly as much technical demand) on gamefaqs or somewhere similar.

---

Hope this helps, at least to kickstart your learning. Translating is hard, but cool and rewarding too. Best of luck!
 

Users who are viewing this thread

Connect with us

Featured Video

Digimon World: Next Order (VITA)

Latest Threads

Twilight Syndrome: Tansaku-hen WIP English Translation Update #1

Just gonna post this here just to remind most Suda51, Survival horror, Adventure Games, Human...
Read more

Has anyone ever played Raid: Shadow Legends?

Considering that this thing was/is at the start of only a gazillion YouTube videos...
Read more

Please recommend good Cinematic Platformers (games like Blackthorne and Abe's Oddysee)

Basically what the title says, I got a taste of the genre and want recommendations. Extra points...
Read more

What was the first video you watched.

It has been many beers ago, but I still remember. I'm not going to go all the way to when I was...
Read more

How have games influenced you?

Be it art by creativity, or other such means, even making games yourselves potentially or how...
Read more

Online statistics

Members online
125
Guests online
315
Total visitors
440

Forum statistics

Threads
7,963
Messages
199,572
Members
597,172
Latest member
Jan3517

Support us

Back
Top