Repository navigation
Complete waited MC68000 BTST prefetch for Nitro compatibility - #24
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Nitro polls VBlank while its interrupt handler also clears the request. A waited MC68000 memory BTST could retire without completing its required final instruction fetch, because the generic queue refill stopped at the nominal cycle floor. Commit that final fetch explicitly after the operand result/flags for static and dynamic memory BTST in scalar, kind-table and packed execution. Register-direct forms and 020+ paths retain their existing path.
Twelve delayed-read regressions fail against the preceding core; all 24 delayed/ordinary cases pass with the final fix. They verify final fetch order/address, exact waited duration, IR/IRC state, IPL sampling, Z before the fetch and absence of writes. An additional negative control caught the first draft's flag-publication order and is retained in local evidence. The independent Moira CPU clears Nitro's wait on the same Lightweight chipset, supporting the narrowed diagnosis.
Native Kickstart and the fresh source-built CopperStart ROM now reach racing, with player movement/camera scrolling and all 355 captures matching between batch/scalar modes for each ROM. A neutral control matches all 280 files through field 11,000 and separates at 11,200. Lotus 2 reaches racing with all 355 batch/scalar files matching. These are final-package repeats. Source CI passes 5,417 CPU tests with 109 optional/deferred skips, validates 86,663,530 deterministic logical cases, and passes all 18 AHX shared-dependency tests. The consumer Release build has zero warnings/errors; engine tests pass 1,247 with seven optional native skips, host tests pass 195 with six skips, and both exact-ROM CIA clock probes pass. Skips remain unavailable coverage. The duplicate local full CPU run was cancelled after the same full suite and report gate completed in CI; its partial local results are retained as incomplete.
The companion CopperScreen adapter fix samples low/masked IPL instead of retaining an earlier request and is merged in CopperScreen PR #4. The frozen development package is distributed through the owner-approved full GitHub release, with no NuGet.org publication. CopperScreen PR #5 pins those exact bytes and records the qualification. ROMs, media and build output are excluded.