`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>
To make sure that mods can work across debug and release build, we can utilize PARTIAL_DEBUG to enable only DEBUG changes that affect struct and vtable layout