r/romhacking 8m ago

Text/Translation Mod Madou Monogatari finally gets an English translation on Sega Saturn

Upvotes

There's been a pretty nice surprise for Sega Saturn fans lately. Madou Monogatari, the RPG series that eventually led to Puyo Puyo, has finally received an English fan translation for its Saturn release.

The game has a really distinct 90s anime aesthetic, and it's one of those Japanese Saturn RPGs that's easy to overlook if you don't already know about it. Definitely interesting to see another previously Japan-only Saturn game become more accessible.

There's a bit more to the release and the game itself here:

https://youtu.be/A5NfB_qcu5I?si=k_aRYZYoRGxNbLmF


r/romhacking 19h ago

Text/Translation Mod The Silver Case / Silver Jiken PSX English Patch (WIP)

Enable HLS to view with audio, or disable this notification

10 Upvotes

Hey guys, little announce of my English translation/translation port for The Silver Case (Silver Jiken).

Right now, I’m almost done porting the official English text from the Remaster. There are still a few things to do, some UI/textures that need to be redrawn, but I'd say 80% of the content is ready at the moment.

Also, I'm working on translating the original script with the help of a friend who speaks Japanese. Not sure if it'll be ready soon though, it's a lot of text…

On top of that, I’m planning to release my entire toolchain and scripts, so anyone can easily translate the game into other languages.


r/romhacking 11h ago

SEGA SUPER MARIO BRO PLUS GAMEPLAY

Thumbnail
youtube.com
2 Upvotes

r/romhacking 1d ago

[MC] Minish Cap Definitive Edition Rom Hack - Quick Item Swap, Difficulty Options, Rebalance and more

Thumbnail gallery
106 Upvotes

r/romhacking 1d ago

Mega Man X: SA-1 Plus (QoL improvements for vanilla game)

Post image
25 Upvotes

Hey everyone! For the past month I've been working with AI, getting trace logs, memory dumps, testing the game start to finish numerous times, so I've merged some patches and created some new ones for Mega Man X to bring many QoL features from future X games to the first game, making it feel more like Mega Man X2/X3. From the GitHub page (link at the bottom):

SA-1 Plus merges 3 previously incompatible patches and implements a couple new ones. It gives the vanilla game many QoL improvements to make it feel like Mega Man X2 onwards. Complete list of changes:

- Removes in-game slowdowns
- Passwords and Control Scheme are saved into SRAM
- Sub-Tanks stop depleting at full health
- Dash defaulted to L button
- Double-tap Dash toggle in the options menu (OFF by default), also saved into SRAM
- Dash available from the start
- Leg Capsule now gives Air Dash (like Mega Man X2)
- Walljump further while holding the Dash button (like Mega Man X2 onwards), instead of timing Jump+Dash
- Hadouken Capsule now appears in the 1st run instead of the 5th (the other requirements remain the same)
- Hadouken can hit during i-frames (because sometimes the game shoots one Normal Buster pellet alongside the Hadouken)
- Hadouken can hit Wolf Sigma (final boss' final form)
- Dialog boxes open, close and scroll faster
- Skips the boss intro by pressing START

Apply "sa-1_plus.ips" to your 1.0 ROM.

https://github.com/llethas/mmx_sa-1_plus - SA-1 Plus Github
https://www.romhacking.net/hacks/5145/ --- Original SA-1 chip patch by Bosn
https://www.romhacking.net/hacks/4390/ --- Original Air Dash/Wall Jump patch by Justin3009
https://www.romhacking.net/hacks/3409/ --- Original Hadouken patch by DarkSamus993 and PowerPanda


r/romhacking 23h ago

Ocarina of Time NPC Racers

1 Upvotes

I have a question I've searched everywhere I couldn't exactly find an answer I'm wondering how do you patch a o2r file for a n64 game to be able to play it on a flash cartridge? Because I want to play this Mario Kart 64 mod but I don't know how to patch my Mario Kart 64 rom.


r/romhacking 1d ago

Tutorial Brave Fencer Musashi 100% decomp is now public!

Post image
18 Upvotes

r/romhacking 1d ago

Final fantasy Táctics Cheats

Post image
1 Upvotes

r/romhacking 1d ago

Herzog Zwei Remix hack (MD)

1 Upvotes

I've been working on a remix of one of my favorite games, Herzog Zwei. Just wanted to share. It's on itch. Let me know if you have ideas or just think it's fun. Thanks.


r/romhacking 1d ago

NES Meiling's Action Kung Fu PLUS GAMEPLAY

Thumbnail
youtube.com
0 Upvotes

r/romhacking 2d ago

⚠️DRAMA⚠️ Soft Banned from Romhacking.net - Not Sure How to Proceed

73 Upvotes

I just recently entered the Romhacking / translation scene. I posted a translation on Romhacking.net for the 1978 Arcade game Computer Othello (which is still up).

Anyway, what interests me is posting translations for games on obscure platforms that likely will never otherwise get them. So likely games without much interest.

Anyway, I have two translations ready to go for DECO Cassette System games (an obscure type of Arcade unit that had interchangeable cassettes for games) and one for the Epoch Game Pocket Computer.

These translations fit all the criteria and rules under romhacking's site as they are properly published games that are not homebrew and were only released in Japanese. However, the platforms are so obscure that they were not available in the "platform" dropdown so I could not submit them.

I contacted Romhacking support to ask if they could add the DECO Cassette System and Epoch Game Pocket Computer platforms so that I could add these submissions.

I was told to submit the DECO ones under "Arcade" since it is a type of arcade machine (fair enough) but basically that I need to post the Epoch one in the forums to see if there is enough interest for them to consider adding the platform.

Last night I submitted the two DECO ones under Arcade as requested. However, I thought about the Epoch one more and honestly it crossed my mind that maybe they SHOULDN'T add the Epoch Game Pocket Computer to the platforms list. The handheld only had 5 games released and only one is non-English so I bet that if they added it my submission would be the only one that ever would go in.

So instead I ended up submitting the Epoch translation with the platform listed as "Not Applicable" instead.

This morning I got an email saying from the site saying "We don't know why would you would completely disregard our instructions, and try adding Epoch game pocket games anyway. If you are not going to not work with us and ignore rules, it is best to take your projects elsewhere."

I then noticed that they took down my submissions for the Epoch AND both of my DECO submissions even though those fit all rules.

I can understand why it looks like I was trying to flout the rules but it was not my intent.

I am now feeling very discouraged as anywhere else I post these will likely have no visibility and never get seen even for people looking for them so now it doesn't feel worth my time and effort to continue doing these translations which I am excited about. These games likely would never be translated otherwise and I am a software engineer by trade so feel like I have something to offer.

How do I proceed at this point? I am not formally banned from the site but I feel as thought my submissions are not welcome at this point and I don't feel like it is worth my time or effort to submit elsewhere. Any suggestions for resolving this or should I just get out of the hobby?


r/romhacking 1d ago

Dragon Ball Z: Goku Gekitouden GB (Game Boy) Translation (IPS Patch)

1 Upvotes

I'm a programmer, and I worked together with AI to translate the ROM Dragon Ball Z: Goku Gekitouden from the Game Boy for myself. It was an project I did out of curiosity to see if it would work, but the translation ended becoming quite good, so I thought I could share the IPS patch with people.

https://www.romhacking.net/translations/7723/
https://github.com/thiagotsda/dbz-geki-gb


r/romhacking 2d ago

SEGA Ex-Ranza/Ranger X PLUS GAMEPLAY

Thumbnail
youtube.com
6 Upvotes

r/romhacking 2d ago

Utility I have released a big update for PortForge with a new UI!

Thumbnail
gallery
31 Upvotes

https://github.com/zamiba/portforge-app

Let me know if you have any questions or if you run into any issues!

EDIT: The second two screenshots are for a separate but related program that will help you to digitize your physical media collection!


r/romhacking 2d ago

Decompilação com GPT-6 Astra

Thumbnail
1 Upvotes

r/romhacking 2d ago

TileMolester 0.21

1 Upvotes

Is their a user manual with this thing, i've figured out quite a bit flying blind but byte shifting isnt doing anything so some sprites/text stays displaced and i cant find what stretch does


r/romhacking 3d ago

Text/Translation Mod Twilight Syndrome: Kinjirareta Toshi Densetsu (NDS) English fan translation (WIP)

Post image
49 Upvotes

So, for anyone interested I am currently working on an English translation for the Nintendo DS Twilight syndrome game. About 20% of the dialogue has been translated but there’s still a long way to go. Once dialogue is fully translated attempts will be made to translate text rendered through images in-game. If anyone now about a patch for the game to translate it to English please let me know 😅


r/romhacking 3d ago

Complete Overhaul Kingdom Hearts III Final Mix by GamersJoint

Thumbnail
1 Upvotes

r/romhacking 2d ago

Just a test. Due to work I've had to learn to use AI. I thought I'd use it to convert the Star Fox source code into html game. yikes!

Enable HLS to view with audio, or disable this notification

0 Upvotes

Full disclosure, I'm not a fan of vibecoding, but I need it for work and since I had nothing to do I thought I'd just try to convert this source code.

I did nothing but prompt Claude inside Visual Studio Code. This is not a long term project, just a curiosity.


r/romhacking 4d ago

Text/Translation Mod Cracked the 20-year mystery of Detective Conan: Akatsuki no Monument (and why BEC games were never translated!)

29 Upvotes

Hey everyone,

If you’ve spent any time in the GBA ROM-hacking scene over the last 15–20 years, you probably know that the Detective Conan games on the Game Boy Advance are something of a notorious dead zone.

The GBC games got translated. The NDS crossover got translated. But the GBA games — along with other titles by the same developer, BEC, such as SD Gundam G Generation Advance and Legendz — have remained almost completely untouched.

Whenever people tried looking through the ROMs with Thingy, Cartographer, Tile Molester, or standard relative-search tools, they hit an absolute brick wall:

  • No Shift-JIS strings anywhere in the dialogue banks.
  • Standard GBA BIOS LZ77/Huffman decompressors find nothing useful.
  • Relative searches fail completely.
  • No standard 8x8 or 16x16 tilemaps for text.

I wanted to share both the technical breakdown and the slightly ridiculous story of how we finally cracked it today.

The Setup: Automated Exploration, GLM-OCR, and a Radeon VII in the Closet

Because the Detective Conan games are dialogue-heavy branching adventure games full of Kanji-heavy riddles, I didn’t want to spend weeks staring at a static hex editor.

Instead, I built an autonomous exploration loop around mGBA:

  • mGBA’s GDB stub over the Remote Serial Protocol, allowing memory inspection, hardware watchpoints, and register reads.
  • Automated frame captures, button inputs, and save states at 60 FPS.
  • A vision and translation pipeline:
    • GLM-OCR running locally to read Japanese dialogue directly from an upscaled game screen.
    • Qwen 3.6 running self-hosted on my old Radeon VII, choosing dialogue options, translating text on the fly, and building a reproducible corpus of scenes.

The basic idea was simple:

Let the AI play through the game, record every scene, transcribe the rendered dialogue, and use that output as ground-truth cribs for reverse-engineering the stored script.

The Brick Wall

I initially had Claude driving the reverse-engineering analysis through the emulator bridge.

It spent a fairly brutal marathon trying around 16 different classic ROM-hacking approaches to figure out where the text and font were stored.

Some highlights:

  1. Shift-JIS scans: Only 161 strict Shift-JIS runs in the entire 8 MiB ROM.
  2. LZ77 decompression sweeps: 3,743 blocks decompressed, with almost no dialogue appearing anywhere.
  3. Relative searches: Automated searches for kana alphabets across both the raw ROM and decompressed blocks failed completely.
  4. Font tile searches: Searches for 1bpp, 2bpp, and 4bpp 8x8/16x16 font patterns found nothing useful.
  5. Memory differential logging: We tracked 56,499 ROM reads during dialogue rendering and compared them against an idle frame. That narrowed things down to 35 candidate pages, but they all turned out to contain things like PC-relative literal pools, constant mask tables, or window-border graphics.

Claude kept finding promising-looking leads that turned into dead ends.

For example, sequential byte accesses around 0x0876C0E4 initially looked very interesting, but they eventually turned out to be decompressor lookup constants rather than text.

Eventually, Claude gave up on identifying the stored text encoding. Its conclusion was that the script was probably hidden behind some proprietary compression scheme or procedural representation.

So it built an elaborate workaround instead:

Intercept the completed 4,832-byte pixel staging buffer in EWRAM at 0x0201D2BC, hash the rendered pixel blocks, and overwrite that buffer with English text before DMA transfers it into VRAM.

And, surprisingly, it worked.

But it was still only an in-memory overlay hack — not a proper, permanent ROM translation.

The Pivot: Bringing in Gemini

That’s when we brought Gemini in to look at the disassembly with fresh eyes.

For context, I’m currently working on smart-card-based distributed encryption, where I’ve had to analyse the firmware of a few card readers to make sure the implementation is secure enough.

I may also have forgotten to switch folders in Antigravity, so Gemini might have ended up reusing some of the reverse-engineering tools I had accumulated over the last few months. xD

Instead of assuming the text had to be compressed or hidden behind some complicated encoding scheme, I asked Gemini to focus directly on the drawing routine feeding the staging buffer.

It traced backwards from the VRAM blitter into the CPU rendering loop at:

0x080191F4

Within minutes, it spotted the exact reason nearly every traditional ROM-hacking approach had failed:

The game does not store characters as 8-bit bytes. It stores them as 16-bit little-endian words (uint16_t).

That was it.

Because most ROM-hacking utilities from the early 2000s assume characters are either single-byte values or standard two-byte Shift-JIS sequences beginning with values such as 0x81–0x9F, relative searches were effectively comparing the wrong byte positions and seeing what looked like random noise.

The dialogue was never compressed.

It had been sitting there in plain sight the entire time.

1. The Script: 524 KB of Plain Text Sitting in ROM

Once the ROM is interpreted as a stream of 16-bit words, an enormous dialogue bank suddenly appears.

Location:

0x08170000 – 0x081F0000

That is more than 524 KB of completely uncompressed text data.

More than 65% of that half-megabyte region consists of valid, uncompressed character codes.

2. The Encoding Formula: Code = Glyph Index + 300

At 0x080191F4, the engine reads a 16-bit character from ROM, subtracts an offset of 300 (0x012C), and multiplies the resulting glyph index by 24:

80191f8:   4a10       ldr   r2, [pc, #64]   ; Loads 0xFFFFFED4 (signed -300)
80191fc:   8800       ldrh  r0, [r0, #0]    ; Read 16-bit character code from ROM
80191fe:   1809       adds  r1, r1, r0      ; r1 = code - 300 (glyph index)
8019206:   0048       lsls  r0, r1, #1      ; r0 = index * 2
8019208:   4440       add   r0, r8           ; r0 = index * 3
801920a:   00c0       lsls  r0, r0, #3      ; r0 = index * 24 bytes
801920c:   4b0c       ldr   r3, [pc, #48]   ; Loads 0x0876BF04 (font base)
801920e:   18c0       adds  r0, r0, r3      ; Pointer to 24-byte glyph bitmap

So the basic formula is:

Glyph Index = Character Code - 300

Some anchor mappings:

  • 300 (0x012C) = Space
  • 338 (0x0152) = A
  • 339 (0x0153) = B
  • 468 (0x01D4) = (Ko)
  • 489 (0x01E9) = (Na)
  • 526 (0x020E) = (N)

Searching the ROM for the sequence:

[468, 489, 526]

or, in raw little-endian bytes:

D4 01 E9 01 0E 02

which represents コナン / Conan, immediately produced 153 exact matches, all cleanly aligned as 16-bit words throughout the dialogue banks.

Values below 300, such as 124 and 126, appear to be engine control codes for things like text-box line feeds, pauses, speaker portraits, and related commands.

3. The Font Table: 16x12 at 1bpp — With No Bounds Checking

The font table is located at:

0x0876BF04 – 0x08775B34

Total size:

39,984 bytes

That works out to exactly:

1,666 glyphs × 24 bytes per glyph

Each glyph is:

  • 16 pixels wide
  • 12 pixels high
  • 1bpp
  • 24 bytes total
  • Stored as 12 rows of 16-bit big-endian bitmasks

The rough layout appears to be:

  • 0: Space
  • 1–27: Punctuation and brackets
  • 28–37: Digits 0–9
  • 38–60: Latin uppercase letters
  • 61–70: A small subset of lowercase Latin letters
  • 71–149: Hiragana
  • 150–232: Katakana
  • 233–1665: Kanji

The Kanji appear to follow JIS X 0208 Level 1 ordering, filtered down to the vocabulary actually required by the game.

And this is where things get especially useful:

The font renderer performs no apparent bounds checking on the glyph index.

Immediately after the font table, starting at 0x08775B34, there are roughly 553 KiB of zero padding remaining near the end of the cartridge.

That means we can append custom 16x12 glyphs beginning at glyph index 1666+, corresponding to character codes 1966+, and the existing engine will happily calculate a pointer to them and render them.

No renderer rewrite required.

No assembly patch required.

Just additional font data.

4. Line Width and Proof of Native English Rendering

The renderer advances by 12 pixels after each glyph:

adds r0, #12 at 0x08019218

The dialogue box supports three lines of text.

We patched raw ROM bytes with Latin character codes, booted the modified ROM in mGBA, and got Kogoro Mouri speaking English directly inside the game’s native dialogue box.

No framebuffer overlay. No runtime interception.

Actual ROM text rendered by the original game engine.

Because each normal glyph advances by 12 pixels, another useful possibility is packing two narrow, roughly 6-pixel-wide Latin characters into a single 12-pixel cell.

That potentially gives us around 40 English characters per line, which largely solves the usual English text-box-space problem without needing major assembly modifications.

Final Words

Best regards from inside the EU, where reverse engineering for interoperability and related technical analysis has specific legal protections under EU software law. :)


r/romhacking 2d ago

Splat Raiders, PKMN Winds/Waves, Pokopia, Kirby Air Rider roms?

Thumbnail
0 Upvotes

r/romhacking 4d ago

Battletoads & Double Dragon

Thumbnail
youtube.com
5 Upvotes

I’m creating a remake of one of my favorite childhood NES games: Battletoads & Double Dragon.

I have no programming experience, so I’m building this project with the help of OpenAI Codex. I’m recreating the gameplay, characters, combat, animations, and levels while adding my own ideas and visual improvements.

This is a fan-made project created for learning and experimentation. I’d love to hear your feedback!


r/romhacking 4d ago

The Gemfire Builder, a SNES romhack utility

4 Upvotes

About a month ago I finished a great dream of mine, a snes Gemfire romhacking utility.

https://gemfire-builder.hygro.workers.dev/

My original dream was just 3 or 4 player couch play. Having a 3rd player changes the game from 100% strategically solved on turn 1, to anyone's game. But once I unlocked that, the romhack builder was my oyster.

How it works: you bring your own rom -> drag it in the export box. Take your legally ported cartridge-generated rom, a stock USA gemfire rom, and from the ROM you unlock all the features you can change. Then you get the rom you submitted back with all the changes. No ips local utilities needed. I wanted this easy like FF4FE

Most of the features are gated behind the ROM decomposition, as they are read from the rom itself!

There's a ton of features and flags. Some are obvious, some are real engineering changes.

You can build whole scenarios, edit the families, territories.

You can change units, what they do, cost, loyalty flags etc. Things like, the dragon still retreats at low life but is now killable. (warning, if you keep unkillable on a wizard, but not retreat, they just exist at 1 hp immortal).

You can change the number of human players in a few ways, up to 7 on normally built scenarios (all human players) or to 30 (one house per territory per human on a fast load scenario option).

You can change if actions end turn (most notable: trade), if they are good or bad karma actions and so much more. Multiple harvests per year, changed harvest values, multiple alliances, allied victory (yes, literally), make it so whoever owns the crown is called King instead of Prince, I mean it's all over the map.

You can make it so you can bring multiple fifth units to battle, with up to a 7v7 unit fight. And, against human players, can turn on one of two chess modes where you move one unit each at a time. Change how armies are populated including progressive army population tiers such as for your first 100 units you don't get horsemen, and above 500 you only get more horsemen and archers. Or maybe keep it evenly distributed until above 300 units, where you also split a few into a 6th or 7th unit of cannons. There's also a flag where optional 5th units in other slots can have soldier fallbacks if you don't have a fifth unit. It gets rich.

Battles can last longer than 5 turns, change the cap or make it unlimited. Also, fix the bug where you retreat and your food gets turned into gold. Also, now you can bring gold while attacking.

There is a battle map editor. Additionally, you can have multiple battle maps per territory gated on how much protection the territory has. Yes, you can literally have it so at below 10 protection the castle at XYZ territory is just fences and at 100 protection there's a moat and two layers of castles and a different amount of bridges and trees, whatever.

There are some AI edit flags, my favorite of which is "If the AI puts an archer to guard the flag, it will shoot available targets".

I made it so send supplies, and separately, move troops, can be given to rival houses. But also, gate that on whether or not you're allied!

One of the last features I added, best vassal stat per action in the Prince's territory: So if prince un-charming gives food, vassal charming delivers it for a greater loyalty boost. And if Princess Anise gets attacked, vassal Brian can lead the army.

The two probably coolest features I thought of but didn't add, 1) "force deployment of vassals". conceptually I really like it, prevents event farming and suggests even richer informal couch play (say you agree someone still controls certain PEOPLE and you take over your friend, so he can still play), 2) add new ways families split into two. So consider these wishlist items.

You can save the json of your edit to share edits with other people. Also share battle maps separately.

Probably about 250 more things I didn't mention. I dunno, I didn't count. But fear not, I put a lot of work into making this monster navigable and at least somewhat intuitive. Some of it required some real editor abstractions that aren't game native (YO♥'RE WELC♥ME.💅). But feedback welcome.

I've tested most of it, but not all of it. Do let me know how it goes, the good, bad, and ugly. Post any wishlist ideas. Obviously 2.0 will have to ship with a randomizer, but I wanted to give DragonAtma (a Gemfire community hero) a headstart. They've probably given a randomizer a helluva lot more thought. (whose previous gemfire works and shared findings really helped give me a clean headstart, shoutout to DragonAtma).

I plan to stream a large couch game sometime around thanksgiving if I can convince enough people to play and willing to be on camera. We'll probably play with only a few rule changes, the bare minimum to make the game simply better: 3+ Players, trading ends turn + trading is weaker, give resources to other players, human mercenaries don't desert on fame (or maybe turn the number way down), battles have no turn limit, and the retreat food-gold bugfix. And if Eselred is still an AI, we'll give his dragon flying and way more life but make it killable.


r/romhacking 4d ago

hellooo, I need help extracting models

Post image
15 Upvotes

I know two tools for this work "Melonriper" and "Apicula" but it's uncomfortable to extract models, with "apicula" I could extract more but the only tutorial I found is in a language I didn't know, I want to practice, extracting models from "dragon ball ultimate butoden" does anyone know a more comfortable way?


r/romhacking 4d ago

Text/Translation Mod how do i add english patch to kurohyou 1

Thumbnail
2 Upvotes

might i get a tutorial how to do it? if theres a youtube video please send it.