Closed Timendus closed 11 months ago
It turns out that it only waits for vBlank in lores
mode, which is considered "compatibility mode". In hires
mode SuperCHIP doesn't wait for vBlank. This explains why this has gone unnoticed for so long. The test suite currently tests in lores
mode though, so it is technically still broken.
Now this does make things a bit more complicated. Not for the test necessarily but for interpreter developers and thus for communicating the expected behaviour properly in the manual...
Proposed new solution:
We can test for vBlank twice in both modes and show the result quite easily when people select either SuperCHIP or XO-CHIP in the menu. We could actually do the same for the clipping/wrapping quirk.
For example:
Disp wait lo v
Clipping hi x
Values would then be on
, off
, hi
and lo
or low
for the four permutations. Plus the existing error codes.
The current result:
Release plan:
./pictures/version.png
./pictures/splash.png
./pictures/ibm.png
npm start
to rebuild everythingI see progress is slowly but surely being made :D
Have you had any ideas of how to fit in the additional check for the flag in 8xy5 and 8xy7 (checking flag result when vx == vy) or nothing yet? I reckon you'd either have to change the markings for pass/fail or possibly break column alignment.
Taking it slow, but yes, it's still moving 🙂
I think I'm just going to add a check without adding to the UI. Not many people run into this issue, and for those that do, basically the flag register is wrong. So just making the flag result a cross in those cases would be fine, I think.
Still need to write that though 😛
Thanks for the review, I'll consider making it more fancy. I do think it fulfils its purpose now, right?
I've changed my mind on this topic. I had already introduced the idea of "modern SUPER-CHIP" and "legacy SUPER-CHIP" in the scrolling tests, and it didn't feel right to release a breaking change to the quirks test that very few people are going to be able to pass, or even want to pass. So I've also split the quirks test up in a "modern" and "legacy" version if you select SUPER-CHIP. And I've rewritten the accompanying bonus documentation to match.
This also means that it's no longer a breaking release, and it can be v4.1 instead of v5.0.
As per @gulrak's discovery: SuperCHIP actually waits for vBlank on the HP calculators.
Do we actually want to change this, knowing that many modern SuperCHIP ROMs expect this to be off..? Is the purpose of this test suite to get your interpreter close to the original, or to get it to run more games smoothly? I'm leaning towards the former, to prevent further fragmentation.