- Klimov☕
- Flávia☕
- Jonathan☕
- Ivan☕
- Hotctime☕
GAME TRANSLATE · ROM HACKING · BEGINNER’S GUIDE
What Is ROM Hacking?
A plain-English introduction to modifying retro games: what a ROM is, what can be changed, how hackers find things inside a game, and why fan translation is one of the hardest kinds of ROM hacking. Examples come from a real project, the English translation of Bakumatsu Kourinden ONI for the Super Famicom.
If you have ever played a fan-translated Japanese game, a modified version of Pokémon, a Super Mario game with completely new levels, or a restored version of a classic game, you have probably encountered ROM hacking.
But what exactly is ROM hacking?
At its simplest, ROM hacking is the process of modifying the data or code inside a video game ROM in order to change the game.
Those changes can be extremely small, such as fixing a typo, or large enough to transform the original game into something almost completely new.
ROM hackers can modify:
- Dialogue and story text
- Character sprites
- Background graphics
- Fonts
- Music and sound effects
- Levels and maps
- Game mechanics
- Character statistics
- Items and enemies
- Menus and user interfaces
- Game code
- Bugs and unused features
- Entire languages
Fan translations are also a form of ROM hacking.
In fact, translating an old console RPG often requires much more than replacing Japanese text with English. The hacker may need to reverse engineer the game’s text system, rebuild fonts, relocate scripts, rewrite parts of the game engine, and sometimes expand the ROM itself.
That is where ROM hacking becomes particularly interesting.

What Is a ROM?
Before understanding ROM hacking, it helps to understand what a ROM actually is.
ROM originally means Read-Only Memory.
Classic video game cartridges contained memory chips that stored the game’s program, graphics, music, maps, dialogue, and other data.
When the contents of one of those cartridges are dumped into a computer file, the resulting file is commonly called a ROM image or simply a ROM.
Depending on the system, you may encounter files such as:
| FILE | SYSTEM |
|---|---|
.nes | Nintendo Entertainment System |
.sfc / .smc | Super Nintendo (Super Famicom) |
.gb | Game Boy |
.gbc | Game Boy Color |
.gba | Game Boy Advance |
Disc-based systems work a little differently.
A PlayStation game, for example, may be stored as a .bin and .cue image instead of a traditional cartridge ROM. In the ROM hacking community, however, modifying these older console game images is often discussed under the same general umbrella.
The important idea is simple:
The game is data, and ROM hacking is the process of understanding and modifying that data.
What Can ROM Hacking Change?
Almost anything.
How much can be changed depends on the game, the console, the available tools, and how deeply the hacker understands the original program.
Text and Dialogue
One of the most common uses of ROM hacking is changing text.
This could mean:
- Fixing spelling mistakes
- Rewriting dialogue
- Changing item names
- Editing menus
- Restoring censored text
- Translating a game into another language
This sounds simple until the new text is longer than the original.
Japanese games are particularly interesting because Japanese and English use space very differently.
A Japanese text box that fits perfectly on screen may overflow when translated into English. The game might also use custom character encoding rather than ASCII.
The hacker may therefore need to modify the font, text pointers, dialogue window, or even the game’s text-rendering code.

Graphics and Sprites
Graphics are another major area of ROM hacking.
Characters, monsters, portraits, menus, logos, icons, tiles, and backgrounds can often be extracted and edited.
Older consoles rarely store graphics as ordinary PNG or JPEG files.
Instead, graphics may use formats such as:
- 2bpp tiles
- 4bpp tiles
- Tile maps
- Indexed palettes
- Compressed graphics
- Console-specific sprite layouts
For example, changing a character sprite in a Super Nintendo game may require locating the graphics in the ROM, decoding SNES tile data, determining which palette the game uses, editing the graphics, converting them back to the correct format, and reinserting them without breaking the game.

Levels and Maps
Many famous ROM hacks began as level modifications.
Platform games are especially suitable for this.
A hacker might change:
- Enemy locations
- Platforms
- Rooms
- Maps
- Traps
- Item placement
- Level progression
If a game already has a good community-made level editor, this type of ROM hacking can be surprisingly accessible.
Without an editor, however, the hacker may first have to discover how the game’s map data is structured.
Gameplay
ROM hacking can go much further than changing assets.
Hackers can modify the actual behavior of a game.
For example:
- Increase or reduce difficulty
- Change character statistics
- Add new attacks
- Modify enemy AI
- Change battle formulas
- Add playable characters
- Create new items
- Randomize game content
- Add quality-of-life features
- Restore unused features
Advanced projects may involve directly modifying the machine code executed by the console.
At that point, ROM hacking starts to overlap heavily with reverse engineering and assembly programming.
ROM Hacking and Fan Translation
Fan translation is one of the most technically demanding forms of ROM hacking.
A translator cannot always open a game, replace Japanese sentences with English, and save the file.
The game may have been designed around very specific assumptions about its original language.
For example, the game might expect every character to occupy the same width.
English does not work particularly well like that.
The letter I is narrow, while W is much wider.
A translation project may therefore implement a Variable Width Font, commonly shortened to VWF, allowing each character to use a different amount of horizontal space.
Other games may have strict script size limits.
If the translated script is larger than the Japanese script, the hacker may need to move the text somewhere else in the ROM and update the pointers that tell the game where each sentence is located.
Sometimes even that is not enough.
The game engine itself may need to be modified.
This is why a serious fan translation usually combines several disciplines:
Translation + localization + graphics editing + programming + reverse engineering + testing.

A Real Example: Translating Bakumatsu Kourinden ONI
This is something I encounter regularly while working on game translation projects.
For Bakumatsu Kourinden ONI, a 1996 Super Famicom RPG that was only ever released in Japan, extracting the dialogue was only one part of the job.
The finished English patch translates 5,088 messages. The original prints them in a narrow vertical box, so the patch rebuilds the dialogue window as a horizontal box with a new 8×16 font, and because the English script is much bigger than the Japanese one, the ROM was expanded from 4 MB to 6 MB to make room for it.
After extracting the Japanese script, each translated line still has to work correctly inside the original game engine.
A perfectly accurate translation is useless if it causes:
- Text overflow
- Broken dialogue boxes
- Incorrect pointers
- Missing events
- Game freezes
- Corrupted menus
- Broken scenario progression
Even seemingly harmless changes can create unexpected problems. These are real bugs from ONI’s test builds:
A pointer table hit by a redirect
My script dumper had read a few bytes of a pointer table as text, so one translated line in the Awaji chapter was keyed 8 bytes too early. The 4-byte redirect to the English text landed inside the map’s event table, the event engine jumped to the wrong command, and the screen went black.
A table that was too short
The table of monster battle cries was moved with 201 entries, but the game has 238 monsters. Fighting any monster past #201 read a garbage pointer, a copy loop never found its end marker, and it overwrote RAM until the game froze.
A name that was too long
Allowing 8-letter names instead of 5 pushed the hero’s name into the next record in memory: the stats of Hokutomaru, from the ONI II flashback chapter, who ended up with 0 / 0 HP.
A bank the code didn’t expect
Once the English script grew into a new ROM bank, the redirect code still only accepted the older banks. Every line stored in the new bank showed Japanese gibberish until the check was widened.
A pointer that targets the wrong script location may display dialogue belonging to another scene. A text string that exceeds its available buffer may corrupt neighboring data. Changing the wrong event data can cause the game to freeze after a battle.
It is the same story on Super Robot Wars F for PlayStation, only bigger: thousands of script entries spread across dozens of scenarios, and every one of them has to survive the game engine.
That is why ROM translation is not simply translation.
It is also software debugging.

How Do ROM Hackers Find Things Inside a Game?
This is one of the first questions beginners usually ask.
A ROM can contain hundreds of thousands or millions of bytes.
How do you know which bytes represent dialogue, graphics, maps, or code?
Usually, you do not.
At least not at first.
ROM hacking is often a process of investigation.
Hackers use different techniques to gradually understand how a game works.
Hex Editors
A hex editor displays the raw bytes contained in a game file.
Instead of seeing normal text or graphics, you might see something like:
82 A0 82 A2 83 4A 83 45 83 93
Those numbers only become meaningful once you understand how the game interprets them.
Hex editors are useful for examining data, comparing files, locating patterns, and making direct modifications.

Tile Editors
Tile editors interpret raw graphics data using formats common to older consoles.
If you locate the correct graphics area, what initially looks like random bytes may suddenly become recognizable characters, icons, fonts, or background tiles.
Emulators and Debuggers
Debugging emulators are among the most powerful ROM hacking tools.
Instead of only playing the game, they can show what the console is doing internally.
Depending on the system and emulator, a debugger may allow you to inspect:
- CPU instructions
- RAM
- VRAM
- Registers
- Breakpoints
- Memory reads
- Memory writes
- Graphics
- Palettes
This is extremely useful when the data you need cannot simply be found by searching the ROM.
You can observe what happens while the game is actually running.
Custom Scripts and Tools
For larger projects, manually editing everything quickly becomes impractical.
ROM hackers often write tools using languages such as Python, C, C++, or other scripting languages.
A translation project might eventually have its own pipeline:
Once the game format is understood, automation can save hundreds of hours.
What Are Pointers?
You will see the word pointer constantly in ROM hacking.
A pointer is essentially an address that tells the game where something can be found.
Imagine a book containing this instruction:
Read the paragraph on page 125.
The instruction is not the paragraph itself.
It simply tells you where the paragraph is located.
Games frequently work in a similar way.
A dialogue table might contain hundreds of addresses pointing to hundreds of text strings elsewhere in the ROM.
If you move a translated sentence but forget to update its pointer, the game will still look at the old location.
The result could be:
- Incorrect dialogue
- Garbage characters
- A blank text box
- A crash
- A freeze
Pointers deserve their own article, so we will explore them in much more detail later.
What Is a ROM Patch?
When ROM hackers finish a project, they generally do not need to distribute the entire modified game.
Instead, they can create a patch containing the differences between the original game and the modified version.
The player applies that patch to a compatible copy of the original game.
Common patch formats include:
- IPS
- BPS
- UPS
- xDelta
- PPF
Different formats are useful for different types and sizes of games.
This is also why using the correct original ROM or disc image matters.
A patch created for one revision of a game may not work correctly with another revision.
Example: the ONI English patch is an IPS file made for the clean Japanese ROM with CRC32 1CF3C877. Patched onto a different dump, or onto a ROM that was already patched, it will not work correctly.
We will cover patch formats, checksums, headers, regions, and ROM revisions in a separate guide.
Is ROM Hacking the Same as Modding?
They are closely related, but the terms are usually used in different contexts.
Modding is a broad term for modifying games.
Modern PC games may have official modding APIs, loose asset folders, Steam Workshop integration, configuration files, or plugin systems.
ROM hacking usually involves games where no official modification system exists.
The hacker is modifying or reverse engineering the original game data itself.
For older console games, this frequently means working much closer to the hardware.
That distinction becomes less clear with some modern projects, but it is still useful when talking about retro games.
Do You Need to Know Programming?
Not always.
It depends entirely on what you want to change.
Some games have excellent community tools that let beginners modify levels, dialogue, graphics, or statistics without writing code.
Might only require
- A hex editor
- A tile editor
- A patching tool
- An emulator
Can require
- Assembly language
- Reverse engineering
- Debugging
- Compression algorithms
- Memory management
- Custom tooling
Do not let that intimidate you.
Nobody begins by understanding an entire game engine.
Most ROM hacking starts with one small question.
Where is this text stored?
Then: What happens if I change it?
That question leads to another.
And another.
Eventually, what originally looked like a giant block of meaningless binary data starts to become understandable.
Is ROM Hacking Difficult?
It can be.
But the difficulty varies enormously between projects.
Changing a character name in one game might take five minutes.
Changing the same thing in another game might require reverse engineering a compressed script format.
Older games were not created with future modification in mind.
Two games released for the same console can store their data in completely different ways.
That is also what makes ROM hacking rewarding.
You are not simply editing a game.
You are discovering how programmers built it decades ago.
ROM Hacking Is Reverse Engineering Through Experimentation
For me, this is the most fascinating part of ROM hacking.
You begin with a finished game but usually have:
- No source code
- No documentation
- No original development tools
- No explanation of the file formats
You have to reconstruct that knowledge.
- You observe.
- You compare.
- You change something.
- You test it.
- You break the game.
- You discover why it broke.
Then you understand one more piece of the system.
That cycle is at the heart of ROM hacking.
What Will We Cover Next?
This guide only introduces the subject.
In future ROM Hacking articles on GameTranslate, we will go deeper into topics including:
- ROM patch formats
- Checksums and ROM revisions
- Hex editing
- Text encoding
- Script extraction
- Pointer tables
- Text reinsertion
- Font hacking
- Variable Width Fonts
- Sprite extraction
- Tile graphics
- Palettes
- Compression
- SNES ROM hacking
- Game Boy Advance ROM hacking
- PlayStation ROM hacking
- Debugging crashes
- Building translation tools
- Real fan translation case studies
Most importantly, I will use actual translation and ROM hacking projects whenever possible rather than only discussing the theory.
Understanding how ROM hacking works is much easier when you can see a real problem, the investigation behind it, and the final result running inside the game.
Final Thoughts
ROM hacking can be as simple as changing a few bytes or as complex as reverse engineering an entire game engine.
It combines preservation, programming, translation, art, debugging, and curiosity.
For fan translators in particular, ROM hacking is what makes it possible to bring games to players who might otherwise never be able to experience them in their own language.
And you do not need to understand everything before you begin.
Start with one game.
Find one thing you want to change.
Then figure out how the game does it.
That is often how a ROM hacking project begins.
See the result in a finished project. Every screenshot in this guide comes from the Bakumatsu Kourinden ONI English translation, which is free to download.
▶ ONI English patchSNES · FREE · v1.0



What should I translate next?
Tap ▲ on the games you want in English. The top picks get translated first.
-
1
Super Robot Taisen L NDS
asked by 2 people
-
2
Milandra SNES
asked by 2 people
-
3
Metal Max 2 SNES
asked by 2 people
-
4
Kijin Korinden Oni SNES
asked by 1 person
-
5
SD Gundam Generation F PS1
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.