GBAHawk v2.3.2 is released!
This release includes minor bug fixes and accuracy improvements.
- All of the instruction decodings that previously threw errors now are emulated correctly.
- Some additional png183 tests now pass.
- Cirotemark sprite bug is fixed
- mGBA suite layer toggle 2 test is fixed.
The Cirotemark bug is what triggered a new release, as it turned out to be an edge case where if sprite 127 was a rotated scaled sprite, and sprite 128 was not displayed, then extra VRAM fetched could occur. Since this could effect timing, I decided to make a release with it patched.
The layer toggle test reveals a bit more about how the pixel pipeline works. It turns out it is in operation even if the associated background layer is off, it's just that nothing is displayed and no fetches happen. Therefore if it is enabled in between the start of a tile fetch, what is displayed is the data from the previously fetched tile.
As it turns out, I already had a test that tested this, made when I was working on Advance Wars, even though I didn't realize it at the time:
https://github.com/alyosha-tas/gba-tests/blob/master/ppu/stripes_x_offset.gba

This test changes x-scroll mid-scanline, inside the red circles. It turns out that this test isn't quite right compared to hardware. Unfortunately, fixing this needs a significant overhaul of the pipeline code. I don't have the time at the moment to focus on a more complicated task such as this, so it will have to stay broken for now.