gbdev / gbdev/GBEmulatorShootout

Add game-based tests

Open
#39 2 comments 0 reactions 0 assignees View on GitHub
backend new-test
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.