gbdev / gbdev/GBEmulatorShootout
Add game-based tests
- Dominant language
- Python
- Stars
- 37
- Forks
- 24
- PR merge metrics
- No merged PRs in 30d
Description
SameBoy's [accuracy](https://sameboy.github.io/features/#accuracy) features include:
> - Completely passes many test ROM suites, including all of [mooneye-gb’s](https://github.com/Gekkio/mooneye-test-suite/) test suite, [Wilbert Pol’s tests](https://github.com/wilbertpol/mooneye-gb/tree/master/tests/acceptance) and [blargg’s test ROMs](http://gbdev.gg8.se/wiki/articles/Test_ROMs#Blargg.27s_tests)
> - T-cycle accurate emulation of LCD timing effects, allowing pixel-perfect emulation of the Demotronic trick, Prehistorik Man, [GBVideoPlayer](https://github.com/LIJI32/GBVideoPlayer) and other tech demos
The various test suites are supposed to cover the kinds of hardware behavior that real games and tech demos rely on. But they're probably not perfect, and emulators might be overfitted to pass tests without getting actual games quite right.
The shootout could add a new kind of test: emulate a particular ROM ([Demotronic](https://www.pouet.net/prod.php?which=7175), Prehistorik Man, GBVideoPlayer, etc) for some number of cycles, with predefined inputs at certain cycle counts, and verify a screenshot at that exact moment -- or even additionally check the values of hardware registers like for audio. (Of course, any such test should only check things that are reliably identical across Game Boy models and their emulations.)
Contributor guide
Research direction
Start by reviewing the existing shootout test structure and how it runs test ROMs, then evaluate the referenced Demotronic, Prehistorik Man, and GBVideoPlayer ROMs. Done would mean a defined, reproducible test with inputs at specified cycle counts and reliable screenshot or hardware-register comparisons across supported Game Boy models.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- game-dev, testing
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100