Skip to content

Commit 0464f90

Browse files
authored
Add readme and contributing guide (#83)
1 parent 17e0a4e commit 0464f90

2 files changed

Lines changed: 117 additions & 0 deletions

File tree

CONTRIBUTING.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Contributing
2+
3+
Contributions are welcome! Feel free to open an issue or even a pull request.
4+
5+
## Adding a new emulator
6+
7+
To add a new emulator:
8+
9+
1. Create a new file in `emulators/` implementing the base emulator interface.
10+
2. Add the emulator specification to `EMULATOR_SPECS` in `main.py`.
11+
3. Implement the required methods: `setup()`, `run()`, `undoSetup()`.
12+
13+
An example emulator specification:
14+
15+
```python
16+
{
17+
'factory': lambda: _new_instance("emulators.myemu", "MyEmulator"),
18+
'keywords': ["MyEmulator", "myemu"],
19+
'name': "MyEmulator",
20+
'url': "https://myemulator.example.com/",
21+
}
22+
```

README.md

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
# GB Emulator Shootout 🎮🔫
2+
3+
GBEmulatorShootout is an automated test comparison project for Game Boy emulators. It runs a suite of accuracy test ROMs across a set of Game Boy emulators and publishes the pass/fail results as a comprehensive table, with screenshots for each test case.
4+
5+
The table of results can be generated locally, but we also regularly update it at https://gbdev.io/GBEmulatorShootout/.
6+
7+
If you'd like to contribute to the project, please read [CONTRIBUTING.md](CONTRIBUTING.md).
8+
9+
## Test suites
10+
11+
- [Blargg's tests](https://github.com/retrio/gb-test-roms)
12+
- [Gekkio](https://github.com/Gekkio)'s [Mooneye test suite](https://github.com/Gekkio/mooneye-test-suite)
13+
- [Matt Currie](https://github.com/mattcurrie)'s Game Boy acid tests ([dmg-acid2](https://github.com/mattcurrie/dmg-acid2), [cgb-acid2](https://github.com/mattcurrie/cgb-acid2), and [cgb-acid-hell](https://github.com/mattcurrie/cgb-acid-hell))
14+
- [Lior Halphon (LIJI32)](https://github.com/LIJI32)'s [SameSuite tests](https://github.com/LIJI32/SameSuite)
15+
- [ax6](https://github.com/aaaaaa123456789)'s [MBC3 RTC tests](https://github.com/aaaaaa123456789/rtc3test)
16+
- [daid's tests](https://github.com/gbdev/GBEmulatorShootout/tree/main/testroms/daid)
17+
- [Ashiepaws](https://github.com/Ashiepaws)' tests ([Bully](https://github.com/Ashiepaws/BullyGB) and [Strikethrough](https://github.com/Ashiepaws/strikethrough.gb))
18+
- [Matt Currie](https://github.com/mattcurrie)'s [Mealybug Tearoom tests](https://github.com/mattcurrie/mealybug-tearoom-tests)
19+
- [CasualPokePlayer's tests](https://github.com/CasualPokePlayer/test-roms)
20+
21+
## Tested emulators
22+
23+
- [ares](https://ares-emu.net/)
24+
- [Beaten Dying Moon](https://mattcurrie.com/bdm-demo/)
25+
- [BGB](https://bgb.bircd.org/)
26+
- [binjgb](https://github.com/binji/binjgb)
27+
- [DocBoy](https://github.com/Docheinstein/docboy)
28+
- [Emmy](https://emmy.n1ark.com/)
29+
- [Emulicious](https://emulicious.net/)
30+
- [Gambatte-Speedrun](https://github.com/pokemon-speedrunning/gambatte-speedrun)
31+
- [GameRoy](https://github.com/Rodrigodd/gameroy)
32+
- [Goomba Color](https://www.dwedit.org/gba/goombacolor.php)
33+
- [KiGB](http://kigb.emuunlim.com/)
34+
- [mGBA](https://mgba.io/)
35+
- [NO$GMB](https://problemkaputt.de/gmb.htm)
36+
- [PyBoy](https://github.com/Baekalfen/PyBoy)
37+
- [SameBoy](https://sameboy.github.io/)
38+
- [VisualBoyAdvance](https://sourceforge.net/projects/vba/)
39+
- [VisualBoyAdvance-M](https://github.com/visualboyadvance-m/visualboyadvance-m)
40+
41+
## System requirements
42+
43+
- Windows (for running most emulators)
44+
- Python 3.7+
45+
46+
## Usage
47+
48+
Install the dependencies:
49+
50+
```sh
51+
python -m pip install -r requirements-core.txt
52+
python -m pip install -r requirements.txt
53+
```
54+
55+
Run all tests on all emulators:
56+
57+
```sh
58+
python main.py
59+
```
60+
61+
Run only specific tests:
62+
63+
```sh
64+
python main.py --test blargg --test mooneye
65+
```
66+
67+
Run only on specific emulators:
68+
69+
```sh
70+
python main.py --emulator mgba --emulator sameboy
71+
```
72+
73+
Run only tests for specific Game Boy models:
74+
75+
```sh
76+
python main.py --model DMG # Original Game Boy
77+
python main.py --model SGB # Super Game Boy
78+
python main.py --model CGB # Game Boy Color
79+
```
80+
81+
Generate emulator and test metadata JSON files:
82+
83+
```sh
84+
python main.py --dump-emulators-json --dump-tests-json
85+
```
86+
87+
Build the HTML report:
88+
89+
```sh
90+
python build.py --emulators emulators.json --tests tests.json --results-dir . --output index.html
91+
```
92+
93+
## License
94+
95+
GBEmulatorShootout is released under the [MIT license](LICENSE).

0 commit comments

Comments
 (0)