msg file edits15

15 dialog entries lost their body in v2.3 because the en_text gained a leading § (added during a canon sweep between v2.2 and v2.3). The reemit pipeline encoded that § as a 00 00 page-break, but the leading_cmds_hex for these entries already ends in 00 00, so the result was 00 00 00 00 back-to-back at the entry start. The renderer interpreted that as "end of page, next page is empty, skip to whatever's after" and fired the trailing [MENU:N] immediately. Body invisible, menu inescapable. Fixed by stripping exactly one leading § from these 15 rows. Detection was structural (en_text starts with § AND contains §[MENU:), so menu-choice-list entries where the leading § is correct were untouched.

15 / 15 rows
message/msg32/08/msg32086.ofs0.0104003
§*twang* May I help you?
*twang* May I help you?
message/msg32/08/msg32086.ofs5.0104008
§*twang* Shall I reset the bell then?
*twang* Shall I reset the bell then?
message/msg32/08/msg32086.ofs9.0104012
§*twang* May I help you?
*twang* May I help you?
message/msg32/08/msg32086.ofs20.0104017
§Bah! Can't you see I'm busy? What do you want?
bug-book intro
Bah! Can't you see I'm busy? What do you want?
message/msg32/08/msg32086.ofs31.0104028
§Anything else?
Anything else?
message/msg32/08/msg32086.ofs35.0104032
§Can I help you with something?
fish-book intro
Can I help you with something?
message/msg32/08/msg32086.ofs46.0104043
§Can I help you with anything else?
Can I help you with anything else?
message/msg32/08/msg32088.ofs1.0104139
§Huh? You're a wizard, aren't you...?
Huh? You're a wizard, aren't you...?
message/msg32/08/msg32088.ofs—104141
§Wait! It won't take that long!
Wait! It won't take that long!
message/msg32/08/msg32088.ofs—104143
§Please! You must listen!
Please! You must listen!
message/msg32/08/msg32088.ofs—104157
§So what do you say? Will you collect the [ITEM:1284]...
So what do you say? Will you collect the [ITEM:1284]...
message/msg32/08/msg32088.ofs—104160
§Come on! Don't be like that!
Come on! Don't be like that!
message/msg32/08/msg32088.ofs—104194
§Nice to see you. Huh? Have I seen you somewhere before?
Nice to see you. Huh? Have I seen you somewhere before?
message/msg32/08/msg32088.ofs—104196
§Wait! It won't take that long!
Wait! It won't take that long!
message/msg32/08/msg32088.ofs—104197
§Please! You must listen!
Please! You must listen!

For the seven msg32088 rows shown without an entry ID, only the rowid was captured in the upstream fix script; the structural detector matches them by rowid against the DB. The full list of 15 affected rowids is the canonical record.

Song retranslations29

The original AI-generated translations for many song titles drifted significantly from the Japanese — most visibly entry 7 (なついろのコテージ, "Summer Cottage", which had been translated as "Cottage Cheese" and read as a food item in the in-game song menu). Reviewed all 96 entries; 29 corrected to track the JP meaning. Surviving entries unchanged. All replacements ≤ 20 characters (the slot budget).

Source file: message/msg99/02/msg99020.ofs

29 / 29 rows
4Ragin' RiversBroken Tears
7Cottage CheeseSummer Cottage
8The MisfitsBrat Paradise
9See You on the RanchSweet Home
12Latin FlavaDeo Gratias
13Hang FivePull Out!
18Bamboo DreamWooshannie!
19Dirty HubcapsTight Beat
22Bottom of the BarrelBlack Python
23Volume ControlStylish Floor
29!atsugnoCCongasta
36Ciervito LindoSorpresa
39Sister of MineHappy Town
41LotusAsuka Scape
42Bobby Sock AirwavesHeavenly 17
45Corsican BetrayalOh, Beautiful One
55Darlin' Oh Darlin'That's Soul
56ExoskeletonDub Dynamic
65Uh-huh, Uh-huh!Hot Funk
69Boss DrivesAdolfo's Smoke
71Family MattersSeine Memories
72Moonlicht NichtStrathspey
73Hear Me Now!Break the Air
74De Francisco CoboPuerto Rico
75MoistureVolcano Dance
77Wine and RosesSunshine Love
78DenimSummer Promenade
79Like the End of MeLike a Roll
82!agiatan uranahahMother Taiga

Overlay / ARM9 edits1

v2.31 only changed ONE ARM9 / overlay text string compared to v2.3 — the shop label in overlay 96 was reverted from "Berries" to its possessive form "Berry's" to match the friend-chat dialog. Every other ARM9 / overlay string was set in v2.3 and is byte-identical here. The substantive v2.31 change in this layer is the compressed-flag fix (callout below) which resolved the v2.3 menu-crash regression without changing any text.

Compressed-flag flip (new in v2.31)

In v2.3 every menu housed in one of these overlays (ov47, ov59, ov65, ov96, ov170, ov171) crashed the game or froze the player out. Root cause: the patcher wrote plaintext UTF-16 LE bytes into overlay file slots whose overlay-table entry still claimed compressed = True. The boot ROM would then try to LZ-decompress plaintext, get garbage, and the menu would either crash on open or freeze partway through. Fix: re-LZ-compress the patched overlay bytes and update the overlay-table compressedSize to match the new compressed length. v2.31 ships one patch per ROM revision; the flag and the bytes finally agree.

Affected overlays: ov47, ov59, ov65, ov96, ov170, ov171

Overlay 96 — friend-chat menu1 row

Single string changed in v2.31 — the shop name was reverted from "Berries" to its possessive form "Berry's" to match the friend-chat dialog references. Every other ov96 string is byte-identical to v2.3.

1 / 1 row
0x60020 BBerriesBerry'sShop is named Berry's (apostrophe, possessive). Reverted to match the friend-chat dialog.

Other byte-level changes1

Known issues — deferred

A wider sweep of leading-§ entries (865 rows with leading § + non-empty leading_cmds + no [MENU: token) was sampled and most turn out to be menu choice lists using [OP_0012:N] opcodes instead of [MENU:N], which are correct as-is. A small subset are dialog body without a trailing menu, which might render with an extra blank page before the body — not the same crash-on-open symptom as the 15 fixed entries, so deferred to a follow-up pass. Many other AI-generated song translations are stylistic interpretations rather than literal and were left alone unless they read as items (Cottage Cheese was the clear case).