How Fan Translation Works: From Japanese ROM to English Patch

Follow for new patches:FacebookXYouTube
Thanks to our supporters:
  • Klimov☕
  • Flávia☕
  • Jonathan☕
  • Ivan☕
  • Hotctime☕

GAME TRANSLATE · ROM HACKING · FAN TRANSLATION WORKFLOW

How Fan Translation Works: From Japanese ROM to English Patch

A real-world look at how a Japanese retro game becomes a playable English fan translation — from script extraction and localization to font hacking, reinsertion, debugging, QA and the final patch.

By belfallen · Game Translate · about 14 minutes to read

A finished English patch can make a fan translation look simple: download a small patch file, apply it to the correct Japanese game, and suddenly the dialogue is in English.

Behind that patch, however, is usually a long chain of technical and editorial work.

A fan translation is not just a translated script. It is a modified game that must still behave correctly after thousands of pieces of Japanese text, graphics and interface data have been replaced.

That means a successful project has to solve two problems at the same time:

  • Make the English accurate and natural
  • Make the modified game actually work

In this guide, I will walk through the process using two completed Game Translate projects as practical examples: Bakumatsu Kourinden ONI for Super Famicom and Super Robot Wars R for Game Boy Advance.

Japanese retro game transformed into an English fan translation
A fan translation changes far more than the words on screen. Text encoding, fonts, window layouts, pointers and game code may all need to change before the English script can run correctly.

What Is a Fan Translation?

A fan translation is an unofficial translation made by fans for a game that was originally released in another language.

For retro console games, the translation normally has to be inserted back into the original game data. That is why fan translation is also a form of ROM hacking.

The simplest possible workflow looks like this:

JAPANESE GAME▶EXTRACT▶TRANSLATE▶REINSERT▶TEST▶PATCH

Real projects are rarely that clean.

Extraction may reveal missing text. English may not fit the original windows. A new font may break menus. Moving the script may require new pointers. A perfectly good line may crash one obscure battle because a buffer is too small. Testing finds the problem, the build is revised, and the cycle starts again.

In practice, fan translation is a loop: extract → translate → build → test → fix → rebuild.

Step 1: Understand How the Game Stores Its Data

Before translating anything, you need to know where the game keeps its text and how the game reads it.

That information is usually not documented.

A cartridge ROM may contain:

  • Program code
  • Dialogue
  • Menus
  • Fonts
  • Sprites
  • Maps
  • Battle data
  • Sound
  • Pointer tables
  • Compressed blocks

None of those sections are required to announce themselves with a convenient label.

The first stage is therefore investigation. A hacker may compare the ROM with what appears on screen, inspect raw bytes in a hex editor, view graphics as console tiles, set memory breakpoints in a debugging emulator, or write small scripts to test possible data structures.

SNES EXAMPLE

Bakumatsu Kourinden ONI

The project had to deal with a Japanese text system built around a narrow vertical dialogue window. Translating the words alone was not enough; the presentation itself had to be redesigned for English.

GBA EXAMPLE

Super Robot Wars R

A strategy RPG spreads text across scenarios, intermissions, battles, choices and conditional events. Finding the script is only the beginning; the translation also has to preserve which lines appear on which route and under which conditions.

Analyzing a Japanese game ROM before fan translation
Before translation begins, the game has to be mapped: where the text lives, how strings end, how pointers work, and what parts of the interface depend on the original Japanese layout.

Step 2: Extract the Japanese Script

Translating directly inside a hex editor is possible for tiny edits, but it quickly becomes unmanageable for a full RPG.

A proper translation project normally uses an extraction tool that converts the game’s internal text into a format that can be reviewed and edited outside the ROM.

That might be:

  • CSV or TSV
  • JSON
  • Plain text
  • HTML
  • A custom translation editor or database

A good dump needs more than the Japanese sentence itself. It should preserve enough information to put every line back in the correct place.

FIELDWHY IT MATTERS
String IDGives every entry a stable identity for translation and QA.
ROM / script locationHelps trace where the original data came from.
Japanese textThe source that must be translated.
English textThe localized replacement.
Control codesPreserves pauses, line breaks, names, portraits or other engine commands.
ContextSpeaker, scenario, menu, battle or route information prevents mistranslation.

For Bakumatsu Kourinden ONI, the finished English patch covers 5,088 messages. At that scale, reliable IDs and automated extraction are essential. A single entry read from the wrong offset can become an engine bug later when the translated data is reinserted.

Japanese game script extracted for English fan translation
Full-game translation becomes practical when the script is extracted into structured records instead of being edited manually inside the ROM.

Step 3: Translate and Localize the Script

Once the text is outside the game, the linguistic work begins.

This stage is more than replacing Japanese words with their nearest English equivalents.

A good game localization has to consider:

  • Meaning
  • Character voice
  • Tone
  • Context
  • Terminology
  • Menu space
  • Line length
  • Story continuity

A sentence that is technically accurate may still sound unnatural in English. A short menu label may need a different solution from the same term used in dialogue. A character speaking formally should not suddenly sound casual because the literal translation was shorter.

Context is especially important in games such as Super Robot Wars R. Scenario dialogue can depend on route choices, characters currently present, story flags or optional events. Looking at a line in isolation can hide who is speaking, what happened immediately before it, or why a particular term is being used.

Translation rule: never treat the script as a bag of unrelated sentences. The game itself is the context.

Consistency Matters Across a Large Game

Long RPGs and strategy games repeat names, attacks, factions, locations and technical terminology constantly.

That means the project needs a consistent glossary and a way to catch identical or related Japanese lines that have drifted into conflicting English translations.

The larger the script becomes, the more valuable automated checks become.

Step 4: Make English Fit the Game

This is where a translation project often stops looking like translation and starts looking like engine work.

Japanese game interfaces were designed for Japanese text.

English usually needs more horizontal space, and its letters have very different shapes.

Possible solutions include:

  • Creating a new Latin font
  • Changing character width
  • Implementing a Variable Width Font
  • Widening windows
  • Moving labels or values
  • Redrawing title screens and menu graphics
  • Relocating graphics to make room for larger assets

ONI: The Dialogue Box Had to Change

Bakumatsu Kourinden ONI is a clear example.

The original game prints dialogue in a narrow vertical area that works naturally for Japanese. Trying to force normal English sentences into the same layout would produce an awkward and difficult-to-read translation.

The English patch therefore rebuilds the dialogue presentation as a horizontal text box and uses a new 8×16 English font.

That is not a cosmetic extra. It is part of making the translation readable.

Bakumatsu Kourinden ONI Japanese vertical dialogue box compared with English horizontal dialogue box
Bakumatsu Kourinden ONI demonstrates why fan translation often requires interface hacking: the original Japanese vertical window had to become a horizontal English dialogue box.

Step 5: Reinsert the English Script

After translation, the English data has to go back into the game.

If every English string were exactly the same size as the Japanese source, this would be easy.

They are not.

English scripts often require considerably more space. Simply overwriting the Japanese text can run into the next string, the next table, graphics, code or unrelated game data.

A reinsertion tool therefore needs to know:

  • Where translated strings can be stored
  • How the game’s pointers identify those strings
  • How control codes must be encoded
  • How large each buffer can safely become
  • Which areas of the ROM must never be overwritten

Sometimes the ROM Has to Grow

The English script for ONI is much larger than the original Japanese script, so the project expanded the ROM from 4 MB to 6 MB.

Expansion creates space, but it does not magically teach the original game engine how to use that new space.

Code and pointer logic may also have to be updated so the game can correctly reach translated data stored in new ROM banks.

Finding free space is only half the problem. The game must also be able to address it correctly.

Expanded SNES ROM containing reinserted English translation script
Large English scripts may need to be relocated into expanded ROM space, followed by pointer and engine changes so the original game can still find every line.

Step 6: Debug Everything That Breaks

The first successfully built English ROM is almost never the final release.

At this stage, the translation begins exposing assumptions hidden inside the original game.

ONI produced several good examples during development:

BLACK SCREEN

A redirect hit the wrong data

A line had been identified eight bytes too early, so the redirect intended for translated text landed inside an event table and the event engine jumped to the wrong command.

FREEZE

A relocated table was incomplete

A monster battle-cry table was moved with fewer entries than the game actually used. Later monsters read invalid pointers, and a copy operation ran into memory it should never have touched.

SAVE CORRUPTION

A longer name crossed a boundary

Increasing the allowed player-name length without accounting for the next record caused the name to overwrite neighboring character data.

GARBAGE TEXT

New ROM space was not recognized

Translated strings stored in a newly used bank displayed incorrectly until the redirect logic was updated to accept the expanded address range.

These problems are why testing only whether the English sentence looks good is not enough.

A fan translation modifies software. It therefore has software bugs.

Step 7: Test the Complete Game, Not Just the Opening

One of the biggest risks in a full translation is false confidence.

The title screen works. The first town is English. The first battle finishes correctly.

That proves very little about the final chapter.

A complete QA process needs to look for at least four different kinds of problems:

QA AREAWHAT YOU ARE LOOKING FOR
LanguageMistranslations, missing meaning, awkward English, terminology drift.
LayoutOverflow, bad line breaks, clipped menu text, unreadable fonts.
TechnicalCrashes, freezes, invalid pointers, corrupt data, broken saves.
CoverageUnvisited routes, optional dialogue, battle lines, choices and hidden events.

Why Super Robot Wars R Is a Useful QA Example

A strategy RPG is a good reminder that “I finished the game once” does not necessarily mean “I tested all the translated text.”

Super Robot Wars R contains scenario dialogue, intermissions, battle-related text and route-dependent material. Different choices and conditions can lead to different scenes.

A robust workflow therefore tracks what has been translated and what has actually been exercised in the game.

Useful methods include:

  • Scenario IDs
  • Route maps
  • Choice coverage
  • Save states
  • Debug shortcuts
  • Script comparison
  • Terminology checks
  • Regression testing
Super Robot Wars R English fan translation gameplay and translation QA
Super Robot Wars R illustrates the coverage problem: a complete translation has to account for text across scenarios, choices, intermissions and conditional content, not just the main path seen in a single playthrough.

Step 8: Build a Patch for Release

Once the translated build passes testing, the project can be distributed as a patch.

The patch contains the differences between the clean Japanese game and the translated version. It does not need to contain the original commercial ROM.

The release should clearly document:

  • The exact game and region required
  • The required ROM revision if relevant
  • A checksum for the correct source file
  • The patch format
  • How to apply it
  • The translation version number
  • Known issues, if any

This final step may look small compared with reverse engineering, but it determines whether users can actually reproduce the working translated game.

Good release practice: distribute the translation patch and instructions, not copyrighted commercial game data.

Two Completed Projects, Two Different Translation Problems

Bakumatsu Kourinden ONI and Super Robot Wars R are useful together because they show that there is no single universal fan-translation workflow.

PROJECTMAIN CHALLENGE IT DEMONSTRATES
Bakumatsu Kourinden ONI
Super Famicom
Adapting a Japanese-oriented text presentation to English: new dialogue layout, new font, larger script storage, ROM expansion and low-level debugging.
Super Robot Wars R
Game Boy Advance
Managing and validating a large scenario-driven translation where context, route conditions, choices and coverage are as important as the individual sentences.

The exact tools and technical details differ, but the underlying cycle is the same:

UNDERSTAND▶EXTRACT▶TRANSLATE▶BUILD▶TEST▶FIX

And that cycle repeats until the translated game is not merely readable, but stable enough to play from beginning to end.

Final Thoughts

When players see a finished English patch, most of the work is invisible.

They see English dialogue where Japanese used to be.

Behind it may be months of script extraction, terminology decisions, font work, pointer changes, graphics editing, ROM expansion, debugging and repeated playtesting.

That is what makes fan translation such an interesting branch of ROM hacking.

It sits between language and software engineering.

The goal is not simply to produce English text.

The goal is to make the original game behave as though that English text had always belonged there.

In the next ROM Hacking article, we will look at one of the final pieces of that process: ROM patch formats, including IPS, BPS, UPS and xDelta, what each format actually stores, and why the correct source ROM matters.

7 thoughts on “How Fan Translation Works: From Japanese ROM to English Patch”

  1. Sort byBestNewestOldest
  2. Travelguy

    Hi, is this human translated or AI translated and if the second is the case, can you please make it clear that AI was used and to what extent?

    1 Reply 1w
    • Game Translate Author

      Hey! Thanks for asking! 😊

      Just to clarify my earlier reply, this is a human-led translation project. AI tools are used to assist with certain parts of the process, but they’re only supporting tools, not a replacement for human judgment, editing, and quality control.

      I personally oversee the translation, refine the dialogue, and make sure the writing feels natural while staying faithful to the original Japanese.

      I’m confident in the quality of the work, and you’re more than welcome to try the patch and judge it for yourself! 😉

      I really appreciate your interest and support!

      1 Reply 1w
  3. NikoKaro Bug HunterRegular

    Hi chief. Sorry to bother you. I just wanted to point out that the two SRW titles for DS are in the works, and *K* is almost ready. *SRW Complete Box* is also nearing completion by another team. So, don’t waste time on those suggested titles. 😊

    1 Reply 2w
    • Game Translate Author

      Thanks for the heads-up! Could you share where you saw the info about the SRW DS titles and the PS1 Complete Box? I want to check out the quality of their work and see if it’s machine translated. If it’s just an MTL, I’m still going to do my own proper translation. Either way, I really appreciate you pointing this out!

      1 Reply 2w
  4. Reii

    hello, thank you for your work. I always wanted to play SRW R and D with English since long time. can’t wait for your future translation!

    1 Reply 2w
  5. NikoKaro Bug HunterRegular

    Hi. Thanks a lot for all these translations. I know many people don’t appreciate the use of AI, but for me, they are more than good, and really effective. Do you have your own Discord server where I can follow your projects and discuss them?

    1 Reply 3w
    • Game Translate Author

      Hi! Thank you so much for your support and for visiting the website.

      At the moment, I don’t have a Discord server, and I’m not planning to create one for now. I hope you understand — I’m trying to keep things simple and focus mainly on the website itself.

      I am planning to add an **“Ongoing Projects”** section to the site, so people can see which translations and projects are currently in progress.

      Thanks again for stopping by and for supporting my work.

      1 Reply 2w

What should I translate next?

Tap ▲ on the games you want in English. The top picks get translated first.

  1. 1
    Super Robot Taisen L NDS
    asked by 2 people
  2. 2
    Milandra SNES
    asked by 2 people
  3. 3
    Metal Max 2 SNES
    asked by 2 people
  4. 4
    Kijin Korinden Oni SNES
    asked by 1 person
  5. 5
    Brandish PC98 PC98
    asked by 1 person
See all 12 →

Votes, comments here and requests on YouTube all count. Not on the list? Ask in a comment below.

Leave a comment

Get new patches first:FacebookXYouTube

Tip: select words in any comment to quote them.

Attach screenshots (optional)

Spotted a typo, an overflowing text box or a crash? A screenshot makes it far easier to fix.