In the interest of furthering the state of Game Boy Advance emulation, I've been writing a test suite that tests various aspects of hardware. At the moment, it only tests timing operations, but way more will be coming in the future. Source code is available on GitHub.
Memory tests
Each test contains 44 configurations. The current version contains 1552 tests total.
Scores:
I/O read tests
The current version contains 123 tests.
Timing tests
Each test contains 20 (or 10 if only an ARM version is supported) configurations:
Scores:
Timer count-up tests
The current version contains 936 tests total.
Scores
Timer IRQ tests
Each test contains 10 configurations. The current version contains 90 tests total.
Scores
Shifter tests
Each test contains 2 configurations. The current version contains 140 tests total.
Scores:
Carry instruction tests
Each test contains 3 configurations. The current version contains 93 tests total.
Scores:
Multiply long instruction tests
Each test contains 2 configurations. The current version contains 72 tests total.
Scores:
BIOS math tests
Each test contains 5 cases: the outputs in registers r0 through r3 and the program state flags. Note that for most of these tests, r0 is the only important case, although some games may rely on the other values. The current version contains 625 tests total. These tests only apply to emulators with HLE BIOS.
Scores:
DMA tests
The current version contains 1256 tests total.
Scores:
Memory tests
Each test contains 44 configurations. The current version contains 1552 tests total.
Scores:
- mGBA (master): 1552 passes
- higan v107: 1552 passes
- mGBA (0.8.0): 1532 passes
- NO$GBA 3.0 (BIOS): 1394
- VBA-M 2.1.4: 1337 passes
- VGBA 5.5: 1255 passes
- NO$GBA 2.8e: emulation crashes
I/O read tests
The current version contains 123 tests.
- higan v103: 123 passes
- NO$GBA 3.0: 122 passes
- mGBA (0.8.0): 116 passes
- VBA-M 2.1.4: 100 passes
- VGBA 5.5: 10 passes
Timing tests
Each test contains 20 (or 10 if only an ARM version is supported) configurations:
- ROM 4/2 waitstates, no prefetch
- ROM 4/2 waitstates, prefetch
- ROM 3/2 waitstates, no prefetch
- ROM 3/2 waitstates, prefetch
- ROM 4/1 waitstates, no prefetch
- ROM 4/1 waitstates, prefetch
- ROM 3/1 waitstates, no prefetch
- ROM 3/1 waitstates, prefetch
- WRAM
- IWRAM
Scores:
- mGBA (0.8.0, BIOS): 1540 passes
- mGBA (0.8.0): 1520 passes
- higan v103: 1300 passes
- NO$GBA 2.8e: 968 passes
- VBA-M 2.1.4: 679 passes
- VGBA 5.5: 4 passes
- NO$GBA 3.0 (BIOS): varies
Timer count-up tests
The current version contains 936 tests total.
Scores
- mGBA (0.8.4, BIOS): 744 passes
- mGBA (master, no BIOS): 639 passes
- mGBA (0.8.4, no BIOS): 610 passes
- VBA-M 2.1.4: 440 passes
- NO$GBA 3.0 (BIOS): 172 passes
Timer IRQ tests
Each test contains 10 configurations. The current version contains 90 tests total.
Scores
- mGBA (0.8.0): 70 passes
- higan v107: 36 passes
- VBA-M 2.1.4: 8 passes
- NO$GBA 3.0: varies
Shifter tests
Each test contains 2 configurations. The current version contains 140 tests total.
Scores:
- NO$GBA 3.0: 140 passes
- higan v107: 132 passes
- mGBA (0.8.0): 132 passes
- VBA-M 2.1.4: 132 passes
Carry instruction tests
Each test contains 3 configurations. The current version contains 93 tests total.
Scores:
- mGBA (0.8.0): 93 passes
- higan v103: 93 passes
- NO$GBA 3.0: 93 passes
- VBA-M 2.1.4: 93 passes
- VGBA 5.5: 93 passes
Multiply long instruction tests
Each test contains 2 configurations. The current version contains 72 tests total.
Scores:
- mGBA (0.8.4): 52 passes
- NO$GBA 3.0: 52 passes
- VBA-M 2.1.4: 52 passes
BIOS math tests
Each test contains 5 cases: the outputs in registers r0 through r3 and the program state flags. Note that for most of these tests, r0 is the only important case, although some games may rely on the other values. The current version contains 625 tests total. These tests only apply to emulators with HLE BIOS.
Scores:
- mGBA (0.8.0): 625 passes
- VBA-M 2.1.4: 425 passes
- NO$GBA 2.8e: emulator crashes
- mGBA (0.5.2): emulator crashes
- VGBA 5.5: emulator crashes
DMA tests
The current version contains 1256 tests total.
Scores:
- mGBA (0.8.0): 1232 passes
- NO$GBA 3.0: 1060 passes
- VBA-M 2.1.4: 1032 passes
- VGBA 5.5: 998 passes