Ci test - #16
Conversation
Fix crashes and improve asset handling in PC port
…ely and checking paths from .gitmodules
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: bc89dbfe7b
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if line.startswith("path = "): | ||
| submodule_paths.append(REPO_ROOT / line.split("=", 1)[1].strip()) | ||
| if submodule_paths: | ||
| submodules_ready = all(dir_populated(path) for path in submodule_paths) |
There was a problem hiding this comment.
Restrict submodule checks to modules needed for PC build
The new .gitmodules scan makes check_deps() require every submodule path to be populated before continuing, which now includes libs/tmc-Android-Experimental even though the PC build path does not reference it. In environments where that optional submodule is intentionally absent (or cannot be fetched), this forces an unnecessary git submodule update --init --recursive and can fail the build before compilation, whereas the previous logic only gated on the two runtime-critical submodules.
Useful? React with 👍 / 👎.
Removes blocker 4 (research plan section 4): WIN0H/WIN0V pack two 8-bit edges into a u16, so no window could describe an edge past 255. - winreg_t (u32) with WIN_RANGE / WIN_GET_HIGHER / WIN_GET_LOWER, plus WINREG_TO_GBA for the truncated hardware form (include/screen.h). - 39 packing sites converted across 10 files. The plan listed seven; section 3's table had missed scroll.c, bigGoron.c and templeOfDropletsManager.c. - DispCtrlSet keeps writing the truncated value to REG_WIN0H etc. (the per-scanline window DMA still consumes it) and additionally calls Port_Screen_CommitWindows, which hands untruncated bounds to the fork's new virtuappu_mode1_set_window_bounds -- the same explicit port->PPU transport Spike 3 established, committed from the same frame generation. - Incidental fix: DispCtrlSet walked the control block as u16* (tmp2[0..9]), which silently breaks the moment any field widens. Now named fields. - New WIN_VIEWPORT_WIDTH/HEIGHT for sites meaning "the whole screen"; they resolve to DISPLAY_WIDTH/HEIGHT by default so 240 is unchanged by construction. Verified: route 11/11 pixel-identical at 240 and the Spike 3 map-source audit still reports 0 mismatches in 265,497,600 fetches. At a 320 build, TMC_WINTRACE reports a widest committed edge of 320, and the figurine menu visibly uses the extra width (109 px differ at x >= 240 versus the clamped build). Light ray, light door and cutscene letterbox captured at both widths. Call sites keep their existing & 0xff masking: several rely on 8-bit wrap to produce a deliberately inverted window, so widening an individual site's coordinate range stays a per-site decision (Spike 5 for camera-derived windows). Not runtime-verified: the kinstone menu. Cold-opening it from a script segfaults identically at 240 and 320, so it is not a regression here -- it is the known kinstone crash chain (CHANGELOG #16). Deferred to the Spike 7 room walks. Deferred to Spike 9: the per-scanline circular window table (common.c gUnk_02017AA0 -> REG_ADDR_WIN0H; lantern, fade iris, whiteTriangleEffect). It is a packed-u16-per-line structure and belongs with the 240-line HDMA work. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
No description provided.