The hope of auto-importing data via lld MinGW
+ pseudo_reloc is now dead thanks to ARM64,
so I just wrote a script to go annotate every
exported data symbol in the game instead.
It turns out this approach can't work on
ARM64 Windows due to the relocation model,
so we can simplify and just remove it
entirely.
Separately, I will make a commit tagging
all game data as DUSK_GAME_DATA, so things
work uniformly across cl/clang-cl and x64/
arm64.
`symgen exports` replaces -export_dynamic on Apple and curates
Android's dynamic symbols with a version script. `symgen stub` then
emits sdk/stub-{macos,ios,tvos}-<arch>, sdk/stub-android-<arch>.so,
and sdk/windows-<arch>.lib.
Apple: mods are now MH_BUNDLE (.so) linked with -bundle_loader,
replacing the deprecated (on iOS) -undefined dynamic_lookup.
Windows: clang-cl mods link dusklight.exe directly; lld's mingw driver
synthesizes imports from the export table. cl still requires the
import library.
Starting with VS 18 / cl 14.51, MSVC's constant evaluator
rejects a pointer-to-member in a constant initializer that also
contains any computed data, a consteval call or even a copy of a
constexpr object (C2127).
Hook records are now aggregate-initialized from literals only: the
computed name bytes (vtable symbol + display name) are baked into
char... template arguments and sizes/kinds are spelled inline.
* Add command line arguments for --develop, --load-save, and --stage
* Include sstream so clang stops crying :(
* Put stage load parsing in main, better load logic
PR #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.
* Deduplicate Speedrun Overrides
Avoids issues where only one is updated + makes sense organizationally
* Move restore_from_speedrun_mode
I think it makes more sense to have this in the same place the overrides are set
* Camelcase nit
---------
Co-authored-by: Irastris <irastris15@gmail.com>