Repository navigation
Conversation
mstan
left a comment
There was a problem hiding this comment.
Reviewed the minimal SXY-culling changes against frozen master and included the exact head in the combined branch. The three focused loader/codegen/interpreter tests pass, including identity behavior outside configured sites, and all selected consumer titles were freshly regenerated with the candidate emitter through their supported wrappers.
No additional objective source defect found in this pass. Positive per-ROM content/widescreen acceptance and the owner's visual check remain distinct from these generated-code tests; no merge was performed.
mstan
left a comment
There was a problem hiding this comment.
No remaining objective source blocker found in the focused minimal SXY-culling review; loader/codegen/interpreter coverage and supported fresh consumer generation pass.
The exact head is included in review/psx-prs-20261024 (b788fda). The selected Tomba!, Mega Man X6 and Ape Escape baseline/candidate builds pass gameplay and current-build save/load; original cards are unchanged. Capped runtime checks show no material frame-rate regression in the tested scenes. The owner has now confirmed all three title windows look fine.
Scope: Tomba/MMX6 use documented compatible remote ancestors because their latest feature heads also fail on frozen master due missing engine APIs; this is not qualification of those latest feature heads or of real multiplayer, whole-game content, external R4 assets, peak throughput, or physical fullscreen compositor behavior. Separate held PRs/drafts retain their own feature-contract questions. No merge is performed by this review.
Some PlayStation 1 titles implement trivial rejection by folding the sign bits of projected vertex screen coordinates across triangle or quad primitives with a chain of AND instructions. Without adjusting these checks during widescreen presentation, geometry in the newly revealed horizontal area is still rejected by the original 4:3 bounds. Rather than embedding title specific instruction patterns directly into the recompiler, this introduces a generalized `[[widescreen.cull.sxy]]` configuration schema within `game.toml`. Game configurations can now declare multi vertex trivial rejection sequences by their exact AND instruction words, vertex registers and the branch that consumes the result. The loader derives the expected chain from those words and rejects any other shape. Each AND keeps its original value except for the horizontal sign bit, which survives only while that vertex lies beyond the revealed left edge, so vertical and right side rejection are preserved and 4:3 output is bit identical. Shifted coordinate lower edge comparisons reuse the existing `screen_x_sites` handling through a new `slti rt, x, 0` form instead of adding a separate site family. Full parity is maintained between recompiled code and the dirty RAM interpreter by sharing the same runtime helper and validating every fold and consumer instruction word on both paths, leaving mismatching overlay variants untouched. This eliminates hardcoded game logic from the recompiler while giving titles clean geometry retention in expanded aspect ratios.
70d80f6 to
1c4731b
Compare
mstan
left a comment
There was a problem hiding this comment.
After #174 merged, rebased this PR onto c4751ef. Resolved the generated BIOS fingerprint by rebuilding the exact combined emitter and genuinely regenerating OpenBIOS. The isolated culling interpreter fixture also needed a zero-initialized optional override-hook stub after #174; its link failure is repaired. All three culling checks plus full_function_emitter and emitter_runtime_pc pass (5/5). No new gameplay code beyond the reviewed combination. Owner accepted the title suite and explicitly authorized merging this PR.
Some PlayStation 1 titles implement trivial rejection by folding the sign bits of projected vertex screen coordinates across triangle or quad primitives with a chain of AND instructions. Without adjusting these checks during widescreen presentation, geometry in the newly revealed horizontal area is still rejected by the original 4:3 bounds. Rather than embedding title specific instruction patterns directly into the recompiler, this introduces a generalized
[[widescreen.cull.sxy]]configuration schema withingame.toml.Game configurations can now declare multi vertex trivial rejection sequences by their exact AND instruction words, vertex registers and the branch that consumes the result. The loader derives the expected chain from those words and rejects any other shape. Each AND keeps its original value except for the horizontal sign bit, which survives only while that vertex lies beyond the revealed left edge, so vertical and right side rejection are preserved and 4:3 output is bit identical. Shifted coordinate lower edge comparisons reuse the existing
screen_x_siteshandling through a newslti rt, x, 0form instead of adding a separate site family.Full parity is maintained between recompiled code and the dirty RAM interpreter by sharing the same runtime helper and validating every fold and consumer instruction word on both paths, leaving mismatching overlay variants untouched. This eliminates hardcoded game logic from the recompiler while giving titles clean geometry retention in expanded aspect ratios.
Closes #368