Timendus / chip8-test-suite

A collection of ROM images with tests that will aid you in developing your own CHIP-8, SUPER-CHIP or XO-CHIP interpreter (or "emulator")
GNU General Public License v3.0
359 stars 7 forks source link

v4.1 release #14

Closed Timendus closed 11 months ago

Timendus commented 1 year ago

As per @gulrak's discovery: SuperCHIP actually waits for vBlank on the HP calculators.

IMG_0032

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.

Timendus commented 1 year 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.

Timendus commented 1 year ago

The current result:

IMG_0049

Timendus commented 1 year ago

Release plan:

coornio commented 1 year ago

I 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.

Timendus commented 1 year ago

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 😛

Timendus commented 1 year ago

Thanks for the review, I'll consider making it more fancy. I do think it fulfils its purpose now, right?

Timendus commented 1 year ago

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.