Skip to content

Add missed mirror-mode message overrides#2108

Open
cmyui wants to merge 1 commit into
TwilitRealm:mainfrom
cmyui:fix/mirror-mode-missed-signs
Open

Add missed mirror-mode message overrides#2108
cmyui wants to merge 1 commit into
TwilitRealm:mainfrom
cmyui:fix/mirror-mode-missed-signs

Conversation

@cmyui

@cmyui cmyui commented Jun 19, 2026

Copy link
Copy Markdown

Summary

PR #1704 fixed mirror-mode sign arrows by hand-curating mirrorMsgOverrides from in-game observation. Because the list was built by walking the game rather than from the data, it left gaps — the symptom being signs that still show un-mirrored directions in mirror mode.

I audited the GameCube BMG data directly (res/Msgus, GZ2E01) for every message whose string begins with the Wii redirect escape that getRevoMessageIndex() already looks for (ptr[0]==26 && ptr[2]==3 && ptr[4]==0). Of 478 messages with a Wii variant, only a small subset are direction/arrow fixes; the rest are control-text variants that must not be redirected (this is exactly the "wrong item control text" the existing _execute TODO warns about). Cross-referencing that subset against the shipped table surfaced 13 entries that were missed but belong.

What's added

  • Two Kakariko signposts (0x1f41, 0x1f42) — arrow/name layout is mirrored on Wii; these are real missed signs of the kind Sign arrows not flipped mirror mode. #1182 reported.
  • Five dialogue/journal lines whose direction words flip between GC and Wii — including Midna's "Eldin Province to the east/west" line (0x0847) that a commenter flagged in the Fix mirror mode sign arrows #1704 thread but couldn't locate.
  • Six shop browse-arrow lines in the same class as entries the original pass already included (e.g. 0x1557 sits directly between the already-overridden 0x1553 and 0x1558).

Each added id appears with a Wii redirect in exactly one BMG group, so the id-only lookup resolves unambiguously.

Deliberately not added

  • 0x1b79 — the same id carries a shop line in zel_01 and fishing control text in zel_07, each with a different Wii redirect. The current id-only table cannot disambiguate the two; adding it would inject Wii control text into one of the contexts. Fixing it properly needs a group-aware lookup (see below).

Notes / follow-ups (not in this PR)

  • The shipped table already contains one such collision: 0x13eb is both the Faron sign (zel_06) and a Gale Boomerang prompt (zel_08). Making the override check group-aware (key on group + id, or run the membership test after changeGroup()) would resolve both 0x13eb and unlock 0x1b79.
  • Longer term, this table could be generated from the disc instead of hand-maintained: redirect iff the plain-text direction words differ or only the arrow glyphs (0x140x17) differ. That rule reproduces the existing 45 entries almost exactly and finds all of the above while excluding the 400+ control-text variants.

Testing

Data-level: verified all 45 existing entries still resolve and that each of the 13 additions has a single unambiguous Wii redirect target. Not yet verified in-game on hardware/emulator — would appreciate a spot-check on the two Kakariko signs and the Midna line in mirror mode.

🤖 Generated with Claude Code

https://claude.ai/code/session_01XRgWDefrUv5ortty6YM7oC

PR TwilitRealm#1704 hand-curated mirrorMsgOverrides from in-game observation, which left
gaps. Auditing the GC BMG data (res/Msgus, GZ2E01) for every message carrying a
Wii redirect turned up 13 more that belong in the table:

- Two Kakariko signposts (0x1f41, 0x1f42) whose arrow/name layout is mirrored on
  Wii but were never added.
- Five dialogue/journal lines whose direction words flip GC vs Wii, including
  Midna's "Eldin Province to the east/west" line reported in the PR thread.
- Six shop browse-arrow lines in the same class as entries the original pass
  already included.

Each added id appears with a Wii redirect in exactly one BMG group, so the
id-only lookup resolves unambiguously. 0x1b79 was deliberately left out: it
maps to different Wii variants in zel_01 (shop) and zel_07 (fishing controls),
which this table can't disambiguate without becoming group-aware.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XRgWDefrUv5ortty6YM7oC
@cmyui cmyui force-pushed the fix/mirror-mode-missed-signs branch from e9e2229 to d039cd6 Compare June 19, 2026 07:49
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