0.1.2-experimental — 2026-05-02
Bug-fix pass over a USA playthrough from prologue through Hyrule Field, plus a hard-found extraction bug that was silently dropping whole asset subtrees from release tarballs.
Fixed
- Doors in Hyrule town & overworld no longer make the game crash on entry.
HouseDoorExterior_Type3(the fully-scripted door variant) calledExecuteScript(super, this->context)even when the spawner failed to setcontext(port script resolution can return NULL where the GBA original always resolved). Reproduced enteringHyruleField/LonLonRanch. Skip the script invocation under PC_PORT instead of segfaulting. (src/object/houseDoorExterior.c) - BG no longer goes black after a map-hint cutscene. After the Mountain Minish elder shows the world map and the dialog continues, the room behind it was rendering pure black instead of returning to the room art. Two issues in
Subtask_FadeOut → RestoreGameTask → sub_0801AE44: (a)sub_0807C4F8couldn't iterate native 24-byteMapDataDefinitionstructs from the asset loader (only handled ROM-packed 12-byte entries), sogMapDataBottomSpecialstayed zeroed; (b) even when the BG buffer got refilled correctly, no one raisedgScreen.bg.updatedso the buffer→VRAM copy never fired and VRAM kept the stale map tilemap. (src/playerUtils.c,src/gameUtils.c) - Lily pads in Minish Forest move again.
data_080D5360/was missing from extracted assets, so the lily-pad rail data couldn't be loaded and the pads sat still. See "Asset extraction" below for the underlying fix. - Festival house BGM stops resetting on every room transition.
Port_M4A_Backend_StartSongByIdwas unconditionally restarting the same song each timeSoundReqfired with the room's queued BGM. Now skipped when the same BGM (songId 1..99) is already playing on the same player. SFX still re-trigger correctly. (port/port_m4a_backend.cpp) - Hyrule Field / Castle Garden plays the correct prologue BGM. USA region was using
BGM_FESTIVAL_APPROACHfor the first prologue scenes; matched the EU mapping (BGM_BEANSTALK) on the port so the music matches. (src/roomInit.c) - Stray location-name textbox no longer appears during Zelda's intro call.
EnterRoomTextboxManagerwas outliving an unrelated message and reasserting itself. Restored the GBA-original kill condition(gMessage.state & MESSAGE_ACTIVE)so the textbox dies when another message starts. (src/manager/enterRoomTextboxManager.c) - Magic-stump exit animation grows from small → big (PC-port deviation from the canonical giant→normal animation, requested by user). Player entity's
unk_80/unk_84now start at0x80and increment to0x100, matching the OOT-style growing-Link feel. (src/player.c)
Asset extraction
data_*/subtrees no longer drop from release tarballs. Two pipeline gaps caused fresh extractions to silently miss whole directories (most user-visiblydata_080D5360/, where lily-pad rails and door data live):extract_area_tablesskipped property indices 4..7 unconditionally — they're usually room callbacks but some rooms put data pointers there. Now follows the offset when it matches an indexed asset entry, and a final sweep extracts everyEmbeddedAssetIndexentry the specialized passes missed (~7300 additional files). (tools/src/assets_extractor/assets_extractor.hpp)CopyRuntimePassthroughAssetshad a fixed directory whitelist that excluded alldata_<addr>/subtrees. Now lists them explicitly so they survive theassets_src/ → assets/runtime build. (port/port_asset_pipeline.cpp)
asset_processornow createsassets/before scanning JSON configs, so a fresh checkout doesn't crash in extract mode. (tools/src/asset_processor/main.cpp)
Known issues (still open)
- Inside-the-rolling-barrel scene (Deepwood Shrine) renders as flat brown bands instead of the textured barrel-stave + window view. Per-scanline HBlank-DMA on
REG_ADDR_BG2PA(the affine matrix that creates the cylindrical roll) isn't being applied by VirtuaPPU. The same root cause likely affects light-ray/parallax effects (vaatiAppearingManager,steamOverlayManager,lightRayManager,pauseMenuScreen6) and the iris/circle window effects (common.c×4). Visible: cosmetic; the room is otherwise playable. - Festival house facades, doorway sprite glitches, map-screen grey patches, cloud-shadow line artifacts, Minish Woods fog, tall-grass shoes overlay — all renderer-iteration heavy and deferred until they can be debugged with eyes-on-screen.
asset_extractorwarnings about "Animation loop byte missing" / "Animation data has trailing bytes" still affect ~900 animations (Gyorg, Vaati cutscene, MazaalHand, etc.). Not used in the title or early gameplay; surfaces during specific cutscenes. Same root cause as 0.1.1.- Mosaic effect on title fade and certain spell charges is disabled (kill-switched). Patch needs re-porting against current ViruaPPU
mode1.c. Same as 0.1.1.