Decoding notes — One Piece Going Baseball (J)
End-goal: produce an English-translated patched ROM. This file documents progress so far.
Confirmed character mappings (9)
Source: matching menu screenshots to script strings by repeat-pattern signature (positions of identical characters) and string length.
| Code | Char | Source |
|---|---|---|
| 0x2000 | ス | #074 ストーリー |
| 0x100E | ト | #074 ストーリー |
| 0x1029 | ー | #074 ストーリー |
| 0x1003 | リ | #074 ストーリー |
| 0x1060 | グ | #221 グランドライン |
| 0x1099 | ラ | #221 グランドライン |
| 0x10A1 | ン | #221 グランドライン |
| 0x1079 | ド | #221 グランドライン |
| 0x1054 | イ | #221 グランドライン |
Both anchor strings are unique matches in the 596-string script under length + repeat-pattern constraints, so the mappings are high-confidence.
What the script does NOT contain
The 596-string pointer table at 0x4ED7F8 holds story dialogue only.
The following are sprite/tilemap graphics, not script strings, and
attempts to find them in the dump fail:
- Mode-select menu items (
ストーリー,対戦,ミニゲーム,エディット,オプション,あそびかた) — the unique ストーリー match at #074 is almost certainly dialogue containing the word “story”, not the button label itself. - Team names (
ルフィ海賊団,イーストブルー,アラバスタ, etc.) - Screen headers (
モードを選んでね,味方チームを選んでね,誰と対戦する?) - Team-description blurbs (
パワフルなパンチをうつチームだ!etc.)
To localise the menu/team strings you’d edit the sprite tiles directly, not the script.
Encoding correction
The original dumper docstring claimed:
0x10XX = hiragana, 0x20XX = katakana, 0x30XX = small kanji/symbol
That’s empirically wrong. The 0x10 page contains hiragana and common
katakana (ト, リ, ン, グ, ラ, ド, イ are all 0x10XX). The 0x20 page
also contains a mix — ス shows up as 0x2000 in #074. The pages
appear to be ordered by glyph frequency, with the same character
sometimes present in multiple pages as alternate visual styles
(body-text vs title-text).
ROM cross-comparison
All three ROMs (J + Chi fan-patch + K fan-patch) are present in
rh_uploads/JKC/Menus/.
- J and Chi share the same pointer-table layout (596 strings at
0x4ED7F8). Theirscript.jsondumps line up slot-for-slot, so slot #N in J ↔ slot #N in Chi is the same dialogue line translated. Seescript_aligned.txtfor a side-by-side dump. - K restructured the ROM — its pointer table is at a different offset, so the J dumper produces garbage when run on the K ROM. Cross-referencing K would require a separate K-specific dumper.
- Diff between J and Chi: ~254 KB of bytes differ, scattered across
many regions. Notable:
0x4EB000-0x4ED7F8: script text bank (translated, expected)0x0DB000-0x10A000: ~200 KB heavily modified — likely the primary font tile region, with Chi glyphs replacing J glyphs0x5C5000-0x5CC000: ~28 KB that was empty (0x00 padding) in J but contains data in Chi — likely an added font block for extra Chinese chars beyond what fits in the original tile region
What blocked the “Chinese-as-Rosetta-stone” plan
The plan was: dump Chi, render its glyphs, read them as Chinese, translate to English. It stalled at the “render its glyphs” step:
- The 28 KB block at
0x5C5000didn’t render as recognizable Chinese characters in any standard format (1bpp/2bpp at 8×8, 12×12, 14×14, 16×16, both bit orderings, multiple alignment offsets all tried). - LZ77 decompression at every 4-byte-aligned
0x10byte produced zero valid blocks in the 2 KB–64 KB range. - The font data is probably in a custom format used by the original game engine (or the patcher’s custom encoder), not one of the GBA-standard tile formats.
What blocked the J font extraction
Same issue from a different angle:
- The J font isn’t visible in any standard tile format when rendering candidate regions (0x040000-0x180000 scanned).
- LZ77 / BIOS-decompressible blocks: zero found.
- The font is likely either custom-encoded, or referenced through a pointer that we haven’t traced yet (would need to disassemble the ARM/Thumb code that calls the font-render routine).
Practical paths forward
Ranked by user effort:
-
(Lowest effort) Take 5-10 story-mode dialogue screenshots from the game in any GBA emulator (mGBA, VBA-M) and upload them. Each dialogue line maps 1:1 to a script entry. With those, the top ~30 hiragana codes can be locked down, which covers 60-70% of every dialogue line. That’d be enough to translate the entire script via context.
-
(Medium effort) Find the CGP/PGCG fan-translation team’s documentation or .tbl file (searches indicate the Chinese patch is widely distributed but I couldn’t surface the dev resources via public web search).
-
(High effort, technical) Disassemble the J ROM’s text-rendering routine to locate the font pointer in code. This is a multi-day ROM-hacking project and unlikely to be the cheapest path.
For an English translation, option 1 + a translator (human or machine) for the resulting hiragana dialogue is the recommended path.