Release summary

v2.4.2 is a content + integrity release built on top of v2.4.1. Major translation work: a full classroom-lesson terminology audit across 38 msg52 files (936 of 1,020 lesson entries updated against Freedom and Game 1 canon, covering the Headmaster's intro and magic class, the Witch-teacher's classes, the Minister's storefront-setup intro, the Part-Time Cat tutorial, Melissa's shopkeeper lessons, and Vicki's fashion lessons); a catalog-descriptions pass that reformatted 237 bug-book and fish-book entries to the catalog's actual 2-line / cap=48 display layout, restored original v2.4.1 wording where compression had drifted from it, and rewrote 54 entries against the Japanese source (Yeti not Bigfoot, 300 million years not millennia, the sickle-weasel kamaitachi restoration, etc.); and process-integrity paperwork that retroactively documents the 49 UCC food multi-slot variant translations that shipped in step-119 but predated the modern fix-manifest pipeline. Plus a beta-tester edit-suggestions pass (19 location-label and dialog fixes including Halogen's, Daisy's Flowers, The Emporium, Vivian's Boutique, apostrophe-consistency on Boys'/Girls' Bathroom, and an opcode fix to a Halogen price callout) and a Christine typo fix in the NPC name binary (slot 90 read Crhristine โ€” transposed rh). All v2.4.1 gates continue to enforce.

What changed for players

7 change groups in this release. For row-by-row before/after of the classroom-lesson audit, catalog rewrites, and UCC variant paperwork, see the source data linked at the bottom.

Classroom-lesson terminology audit โ€” 936 lesson entries updated against Freedom and Game 1 canon (38 files, msg52)

Tyler had noted that Freedom's classroom-lesson translations consistently used proper in-game terminology โ€” spell names, button labels, action-step verbs, item nouns โ€” where ours had drifted. The audit cross-references every lesson entry against Freedom's text and Magician's Quest (Game 1) canon, takes Freedom's noun/verb choices and Game 1's procedure-step wording where they're more accurate, and preserves our grammar and structure. 936 of 1,020 entries updated across 38 files; 84 already matched canon or had no canon parallel and were left unchanged; zero entries were blocked. Coverage: Headmaster's intro and scolding cluster (msg52/00 + msg52/01, 27 updates โ€” drops archaic thou/didst/thee where Game 1 uses casual modern English); Headmaster magic class (msg52/02, 66 updates โ€” spell-tutorial template applied uniformly across the lightning / voice-up / spin / prank-flyer / large-metal-tub / belly-dance / great-flatulence tutorials); Witch-teacher magic classes (msg52/03 + msg52/04, 87 updates โ€” sapphire-spell incantation tutorial unified, Door of Beginnings and Endings preserved as Game-3 location-specific); Minister setup + Part-Time Cat intro tutorial (msg52/05, 95 updates โ€” Minister's archaic Hast thou / wishest / thy modernized while preserving courtly register; Part-Time Cat's nya/meow tic preserved; spells and charms โ†’ staff magic and incantations; Charm class โ†’ Incantation class; mysterious things โ†’ wondrous effects); Melissa's shopkeeper lessons (msg52/06, 350 updates, the largest single batch โ€” Mood Cookie / Invitation Bouquet / Tranquility Tea / Prank Pen / Enchanting Aroma / Magic Lamp recipe tutorials unified; magic ingredient names lowercased per glossary; Genzou โ†’ Mr. Genzo with honorific); Vicki's fashion lessons (msg52/07, 311 updates โ€” Bibi's shop โ†’ Vivi's shop, Coordinate/outfit โ†’ coord where the JP uses ใ‚ณใƒผใƒ‡, Clashing Style โ†’ Mess Style for ใ‚ใกใ‚ƒใใกใ‚ƒใ‚นใ‚ฟใ‚คใƒซ, Trend for ๆต่กŒ replacing earlier Popularity). Cross-cutting terminology shifts: [spell] magic (lowercase) as the canonical spell-tutorial noun phrase, staff magic for ใƒ„ใ‚จใพใปใ†, incantation magic for ใŠใพใ˜ใชใ„ (replacing earlier wand magic and charm), magic-language incantation for ใพใปใ†่ชžใฎใ˜ใ‚…ใ‚‚ใ‚“, lowercase generic-noun magic ingredients (moondrop, rose dew, etc.) matching the existing item-name glossary, Mr. Genzo honorific prefix on the NPC carpenter per canonical romanization. Note: this surface's character cap (max 33 chars per row, max 99 per textblock) is what the engine actually budgets, per the per-textblock budget convention used by the prior session's audit data and confirmed by the _width_checker.py rules. If you see text overflow, line truncation, or unexpected line breaks in classroom-lesson dialog, please report it via the bug-report form.

Catalog descriptions โ€” bug-book and fish-book reformatted, restored, and JP-faithfully rewritten (237 entries across msg99060/62/63)

Three rounds of catalog-description work landed back-to-back. Round one (step-342) reformatted 237 bug-book and fish-book descriptions from 3-line to 2-line layouts to fit the catalog display box โ€” Tyler's beta-test screenshots had surfaced truncated/duplicated catalog text. Per-row caps were initially derived from existing-content widths (25 chars for msg99060, 32 chars for msg99062 and msg99063), and Tyler's four manual edit suggestions for msg99060 entries 0-3 were applied verbatim. Round two (step-343) found those initial caps were substantially narrower than the catalog box's actual capacity (48 characters per row); 61 entries that had been editorially compressed in round one were restored to their original v2.4.1 wording, just rewrapped at the correct cap=48. A soft-hyphen-line-break artifact in the v2.4.1 source (long-โ–ผnecked joining as long- necked with a stray space) is normalized to long-necked during the flatten step. Round three (step-344) audited all 237 entries against the Japanese source and identified 54 entries where the v2.4.1 English had drifted from the JP, used forced alliteration that obscured meaning, or carried other quality issues โ€” each was hand-translated from the Japanese with the per-row 48-char display cap respected. Representative fixes: msg99060 eid 21 (Miyama stag beetle) prior EN said "A beetle that can grow up to 8cm long" โ€” a detail that does not appear in the Japanese at all; the JP is an etymology note that "Miyama" means "deep in the mountains" (restored). msg99060 eid 27 (locust/grasshopper) prior EN said "known for its unique hopping sound" โ€” the JP is about its flying sound (bata-bata) being the origin of the name batta (direction corrected). msg99060 eid 35 (cockroach) said "around for millennia" for what the JP states is 300 million years (off by five orders of magnitude). msg99060 eid 53 (winged centipede) said the creature "looks like a flying centipede"; the Japanese describes a centipede that longed for the sky and grew wings (meaning was inverted). msg99060 eid 56 said "fangs like Dracula" โ€” the JP says ใƒ‰ใƒฉใ‚ดใƒณ (dragon). msg99062 eid 25 (Yuki-otoko): the Japanese specifies ใƒฆใ‚ญใ‚ชใƒˆใ‚ณ which is the Yeti, not Bigfoot. msg99062 eid 41 (kamaitachi): the JP describes a sickle-wielding weasel-spirit that the prior EN had erased entirely. msg99063 eid 28 (tuna): the JP says specifically that tuna is the "king of sashimi". Soft-hyphen typography artifacts cleaned up in msg99060 eids 19/23 and msg99063 eids 19/37/57. Several creative localizations were intentionally left alone where they substantively work โ€” the noisufnoc (confusion-spelled-backwards) joke for the Mars-mortal, the three-headed Cerberus gloss, the hellhound puppy, and the dullahan / head-detached-from-torso knight all stay. Per-file rewrite counts: msg99060 20, msg99062 30, msg99063 4.

Beta-tester edit suggestions โ€” 19 location-label and dialog fixes (step-339)

Beta testers using the new in-app edit-suggestion submission UI surfaced 19 location-label and dialog fixes applied to entries.en_text rows. Halogen's, Daisy's Flowers, The Emporium, Vivian's Boutique (parallel labels in both msg99122.ofs and msg99124.ofs), Fungi Forest, Tower, Quadrangle, Subterranean, Bridge, Boys'/Girls' Bathroom (apostrophe consistency unified to plural-possessive), Staff Room, House, plus an opcode fix removing a stray [SFX_TRIGGER:536] in a Halogen dialog price callout (msg32055 #92). One suggestion (Men's Toilet) was superseded by Boys' Bathroom under the apostrophe-consistency rule. The step-338 path-based ref form (entries_path:<file_path>:<entry_id>:<sub_entry_id>:<phrase_index>) is now resolved by the triage script alongside the older entries:<file_id>:<entry_id>:<sub_entry_id> form, so the new viewer's submissions show full DB context in the triage report.

Christine NPC name binary typo fix (step-358)

Tyler caught and corrected a typo in the shipping NPC name binary (NpcData.lzs + NpcDataOfs.ofs) at slot 90 (npc_id 1090 in the DB). The shipped bytes read Crhristine (transposed rh); the DB npc_names.en_name was already Christine, so this import aligns the two. Both files were re-synced from Tyler's rebuild-test working copy. No DB write was needed.

UCC food multi-slot variant translations โ€” paperwork backfill (step-348)

The 10 multi-slot food entries in ucc/names.ofs (49 sub-records: 10 base names + 39 recipe variants) โ€” covering the cooking system's Stew, Cream Stew, Beef Stew, Ice Cream, Vanilla Ice Cream, Bread, Red Bean Bun, Choco Bun, Cream Bun, Jam Bun, Cake, Shortcake, Pasta, Carbonara, and Napolitan recipes โ€” were translated and shipped to the patched ROM in step-119 (commit bfebd722, 2026-05-14). That work pre-dated the process-integrity rules added in step-244 (fix-manifest writer + approval ledger gate) and step-263 (sentinel coverage), so it never received the modern paperwork. This step closes that gap by backfilling: a 49-row fix manifest, an approval-ledger entry, a change-tracking JSON, and 15 new sentinels covering each unique JPโ†’EN pair plus representative variant rows. The sentinel + approval parsers were extended to understand the ucc_food_subrecords:<slot>:<sub>:<column> ref form. No translation values changed. Note: this surface's character cap was not empirically verified before translation โ€” the cooking-result and trend-rankings UI panels that display these names are believed to have a wider visible budget than the 12-char short-list budget noted in the bd ticket (Game 1's canon max EN food-name width was 20 chars). One entry (Vanilla Ice Cream, 17 chars) exceeds the conservative 12-char short-list budget and has been shipping in that form since step-119; if you see this name or any other UCC food name truncated, clipped, or overflowing in a cooking, recipe, trend-ranking, or food-shop UI, please report it via the bug-report form.

Rebuild-gate fix โ€” broader sweep-summary ref recognition (step-356)

The rebuild gate's sweep-summary skip rule (introduced in step-263 to handle bulk-sweep summary manifest rows that don't have a corresponding single DB row) was previously only matching refs of shape <table>:<file>:<eid>:<sid>. Broadened to recognize any <table>:*:<slug> shape so newer bulk-sweep manifests like the classroom-lesson audit batches' summary rows resolve cleanly through the gate without false-negatives.

Engine-integrity gates (under the hood)

Every prior gate continues to enforce on this release. The rebuild gate byte-verifies every fix manifest against the patched ROM: 6,148 verifications passed in v2.4.2 (up from 3,454 in v2.4.1) โ€” that 2,694-row delta is the classroom-lesson audit + catalog rewrites + UCC paperwork landing as new fix-manifest rows. The placeholder-leakage gate (scans ROM bytes for known DB-representation tags like [PLAYER_NAME], [NPC_DAT:N], [COLOR:N], [ITEM:98], [OP_xxxx] as UTF-16-LE text โ€” those tags are internal-only and must be re-encoded as opcode bytes by reemit.py) reports zero leaks. The approval-ledger gate (refuses to release if any Tyler approval is left status:pending or status:blocked without reason) reports 154 entries resolved, 0 unresolved. And the change-list completeness audit confirms every entry in CHANGELOG_v2.4.2.md traces to a committed fix manifest in notes/fixes/ with DB state matching the manifest's after_values.

How v2.4.2 shipped

Released patch โ€” Same patch format as v2.4 and v2.4.1: one xdelta3 patch per ROM revision; both produce the same patched ROM byte-for-byte.

v2.4.2 ships one patch per ROM revision. Both behave identically โ€” pick the one that matches your ROM's MD5.

Source