NANA: Live Staff Daiboshuu! is a 2007 Nintendo DS game (internal code NTR-YNAJ-JPN), based on Ai Yazawa's NANA, that never left Japan. When I went looking, I couldn't find any English translation of it, and as far as I know none exists. So I reverse-engineered the game and built a complete pipeline that can produce a fully English build: dialogue, menus, and most on-screen UI graphics.
Important up front: I'm releasing the toolchain, not a finished patch, and not my full English script. The repo gives you everything needed to build an English NANA from your own ROM and your own translation. The demo below is my own complete build, just to show what the pipeline can do.
I started this as a birthday gift for my wife, a NANA fan, after finding out no translation existed.
Demo (my build)
Watch the demo on Vimeo. Gameplay from the patched ROM running in DeSmuME at 1x (real-time) speed, with the translated script and translated UI tiles.
What's in the repo
What's NOT in the repo
How to use it
Full instructions are in the README. The short version: provide your own dumped ROM, then run the extraction step (src/populate_script_text.py) to produce a Japanese script TSV (the 6,850 entries, decoded from your ROM). Translate the english column yourself, by hand or with a tool, then run the build steps to produce a patched ROM with graphics included. The README documents every step, the dynamic-placeholder rules, the per-screen line wrapping, and a one-line "sample build" that produces a playable ROM from the included 49-entry sample. Requirements: Python 3.10+ with ndspy, Pillow, and keystone-engine.
How it was made (and why what you're downloading isn't an MTL script)
Straight answer, and this is my own account: I'm not a romhacker. My background is software test automation. The reverse engineering (cracking NANA's custom, non-Shift-JIS tile-text encoding, the ARM9 work in Ghidra, the LZSS graphics pipeline, the runtime text-hook engine) was LLM-assisted, and by my own description I didn't hand-author or audit that code. What I brought is testing: an automated QA gate plus an adversarial "critic" pass on the graphics, then confirmation by me in emulation and on real Nintendo 3DS hardware. The whole thing was LLM-assisted but heavily play-tested, done solo in under 150 hours across March to June 2026. Crucially, I'm not distributing a machine-translated script. The translation is yours to produce, by whatever standard you hold. The tools don't care whether your English comes from a translator or a model.
Known gaps (it's honest WIP)
Coverage is broad but not exhaustive, verified by playing the main paths. Some Japanese remains, most noticeably in the Sevens card game and the interview minigame. The calendar/clock HUD is drawn by a runtime formatter (not static tiles) and stays Japanese, as do a few baked strings and the character stats panel. The Sevens rank emblems and the interview round headers were left Japanese on purpose. The remaining pre-rendered tile art is the hardest part, and it's where help is most welcome.
Testing
The patched ROM has been tested on a Nintendo 3DS via TWiLight Menu++ (DS/NTR configuration). Multiple extended sessions of over 15 minutes across multiple screens has run cleanly, with no crashes or rendering issues. The build also runs 22 static verification checks (src/verify_patched_rom.py).
Why I'm posting
So fans of the game know this is now possible, to find anyone who wants to take the translation the rest of the way (and even release a full patch), or someone who has tackled DS pre-rendered tile art before. Feedback and collaborators welcome.
Repo + full instructions: GitHub
License: MIT (tooling and analysis only, no rights to the game or its assets).
Important up front: I'm releasing the toolchain, not a finished patch, and not my full English script. The repo gives you everything needed to build an English NANA from your own ROM and your own translation. The demo below is my own complete build, just to show what the pipeline can do.
I started this as a birthday gift for my wife, a NANA fan, after finding out no translation existed.
Demo (my build)
Watch the demo on Vimeo. Gameplay from the patched ROM running in DeSmuME at 1x (real-time) speed, with the translated script and translated UI tiles.
What's in the repo
- The full 8-step build pipeline (Python): extract, translate, wrap, relocate, hook, patch, bake graphics, verify.
- The graphics translation system: it repaints pre-rendered Japanese tile art (menu buttons, HUD labels, dialogs, minigame UI, the name-entry keyboard, the 9 character-info bio pages, and more) into English. The UI label data ships as English-filled TSVs, covering about 25 R00 files (of 32 total in the game).
- The structural script map: 6,850 text-entry locations, with no game text stored. The Japanese is decoded from your ROM at build time.
- A 49-entry sample translation (intro, character names, location info, questions, job text) so the pipeline runs end-to-end on a fresh ROM with no translation work.
What's NOT in the repo
- The full English dialogue script. You produce it yourself (see below). What does ship is the 49-line English sample plus the UI/button label TSVs (which include English), so the UI builds in English out of the box, but the dialogue is yours to translate.
- Any ROM, game assets, or copyrighted data. You supply your own legally dumped cart.
How to use it
Full instructions are in the README. The short version: provide your own dumped ROM, then run the extraction step (src/populate_script_text.py) to produce a Japanese script TSV (the 6,850 entries, decoded from your ROM). Translate the english column yourself, by hand or with a tool, then run the build steps to produce a patched ROM with graphics included. The README documents every step, the dynamic-placeholder rules, the per-screen line wrapping, and a one-line "sample build" that produces a playable ROM from the included 49-entry sample. Requirements: Python 3.10+ with ndspy, Pillow, and keystone-engine.
How it was made (and why what you're downloading isn't an MTL script)
Straight answer, and this is my own account: I'm not a romhacker. My background is software test automation. The reverse engineering (cracking NANA's custom, non-Shift-JIS tile-text encoding, the ARM9 work in Ghidra, the LZSS graphics pipeline, the runtime text-hook engine) was LLM-assisted, and by my own description I didn't hand-author or audit that code. What I brought is testing: an automated QA gate plus an adversarial "critic" pass on the graphics, then confirmation by me in emulation and on real Nintendo 3DS hardware. The whole thing was LLM-assisted but heavily play-tested, done solo in under 150 hours across March to June 2026. Crucially, I'm not distributing a machine-translated script. The translation is yours to produce, by whatever standard you hold. The tools don't care whether your English comes from a translator or a model.
Known gaps (it's honest WIP)
Coverage is broad but not exhaustive, verified by playing the main paths. Some Japanese remains, most noticeably in the Sevens card game and the interview minigame. The calendar/clock HUD is drawn by a runtime formatter (not static tiles) and stays Japanese, as do a few baked strings and the character stats panel. The Sevens rank emblems and the interview round headers were left Japanese on purpose. The remaining pre-rendered tile art is the hardest part, and it's where help is most welcome.
Testing
The patched ROM has been tested on a Nintendo 3DS via TWiLight Menu++ (DS/NTR configuration). Multiple extended sessions of over 15 minutes across multiple screens has run cleanly, with no crashes or rendering issues. The build also runs 22 static verification checks (src/verify_patched_rom.py).
Why I'm posting
So fans of the game know this is now possible, to find anyone who wants to take the translation the rest of the way (and even release a full patch), or someone who has tackled DS pre-rendered tile art before. Feedback and collaborators welcome.
Repo + full instructions: GitHub
License: MIT (tooling and analysis only, no rights to the game or its assets).







