Skip to content

Implement native GSC PC and mail core over existing saves - #264

Open
Roxas2712 wants to merge 2 commits into
UNDERdecoded:mainfrom
Roxas2712:codex/upstream-gen2-pc-mail
Open

Roxas2712 wants to merge 2 commits into
UNDERdecoded:mainfrom
Roxas2712:codex/upstream-gen2-pc-mail

Conversation

@Roxas2712

@Roxas2712 Roxas2712 commented Oct 25, 2026 •

Copy link
Copy Markdown

The legacy Gen2 Mail and PC menu namespaces are missing, the Boxes alias exposes an incompatible count() contract, and script mail is stubbed. Gold/Silver mail operands also consume three bytes instead of the cartridge's two-byte word, desynchronising subsequent commands.

Add native party-slot letters, mailbox operations and PC transfers over existing save tables, semantic stationery IDs, mail-aware removals/daycare guards and save validation. Resolve ROM mail records separately from text/scripts and execute gift/delivery through the actual coroutine runner and native party chooser. Public native mail.read/mail.written producers cover reading and writing without per-redraw duplicate reads.

277 focused checks pass: 208 core/codec checks plus 69 binary ROM/actual ScriptRunner/public SDK checks. Fresh frozen upstream main 13af468: 64/74 engine; candidate b3ea11d: 66/76. All ten failed suites and every failed assertion are identical; SDK 3/3 and the other quick tiers pass in both. No unrelated upstream failures are suppressed.

Actual Crystal Rev0 import passed on b3ea11d, before the namespace-only follow-up: 388 maps, 5,039 scripts, gift and delivery mail records both resolved, zero unresolved mail operands. The existing unrelated script desync remains visible; this is a script-import check with an in-memory destination, not GPU or full-game acceptance.

Standalone core only: no dependency on the fork's species facade, UI modules, capability or qualified runtime changes. Native composition/mailbox screens, SRAM conversion, stationery artwork, complete legacy PC modes and full parity are not claimed by this PR. No private mod, cartridge, generated assets or saves are included.

Original contributions by Roxas2712 are offered to Cedric / UNDERdecoded under the specific PR permission in LICENSE-ROXAS2712.md, with visible credit. Existing third-party rights, licences and notices remain in force. This permission does not assign ownership or relicense other contributors' code.

The follow-up also resolves src.ui.gen2.BoxMenu to the actual native factory after the fork's real Metal run exposed that additional missing name. No full legacy PC UI behavior is claimed by the alias alone.

The separately reproducible Crystal event-table desync is addressed independently by PR #268; it is not hidden or removed by this PC/mail contribution.

Native composition/mailbox/PC menu integration is now offered separately in #271, with the existing #135 keyboard adapter as an explicit prerequisite. The core scope of this PR stays unchanged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant