All Projects → mattcurrie → mealybug-tearoom-tests

mattcurrie / mealybug-tearoom-tests

Licence: MIT license
🪲☕️ Game Boy emulator test ROMs

Programming Languages

assembly
5116 projects
Makefile
30231 projects

Projects that are alternatives of or similar to mealybug-tearoom-tests

Mgba
mGBA Game Boy Advance Emulator
Stars: ✭ 3,355 (+8287.5%)
Mutual labels:  gameboy, gameboy-emulator, game-boy
demo-emulator
Nintendo Game Boy emulator written in Go to be used in workshops about emulator programming
Stars: ✭ 41 (+2.5%)
Mutual labels:  gameboy, gameboy-emulator, game-boy
Gopher Boy
🎮 A Game Boy emulator written in Go
Stars: ✭ 206 (+415%)
Mutual labels:  gameboy, gameboy-emulator
Goboy
Multi-platform Nintendo Game Boy Color emulator written in Go
Stars: ✭ 2,403 (+5907.5%)
Mutual labels:  gameboy, gameboy-emulator
tilemap-studio
A tilemap editor for Game Boy, Color, Advance, DS, and SNES projects. Written in C++ with FLTK.
Stars: ✭ 247 (+517.5%)
Mutual labels:  gameboy, game-boy
Metroboy
MetroBoy - A playable, circuit-level simulation of an entire Game Boy
Stars: ✭ 169 (+322.5%)
Mutual labels:  gameboy, gameboy-emulator
Jitboy
A Game Boy emulator with dynamic recompilation (JIT)
Stars: ✭ 190 (+375%)
Mutual labels:  gameboy, gameboy-emulator
Azayaka
A cycle-accurate Game Boy and Game Boy Color Emulator, with rewind feature.
Stars: ✭ 26 (-35%)
Mutual labels:  gameboy, game-boy
Cryboy
A Game Boy (Color) emulator written in Crystal
Stars: ✭ 68 (+70%)
Mutual labels:  gameboy, gameboy-emulator
Awesome Gbdev
Contribute
Stars: ✭ 3,016 (+7440%)
Mutual labels:  gameboy, gameboy-emulator
Rustyboy
A Gameboy emulator written in Rust.
Stars: ✭ 224 (+460%)
Mutual labels:  gameboy, gameboy-emulator
emu-gameboy
A Gameboy emulator written in C++
Stars: ✭ 55 (+37.5%)
Mutual labels:  gameboy, gameboy-emulator
Gbemu
A Gameboy emulator in modern C++
Stars: ✭ 149 (+272.5%)
Mutual labels:  gameboy, gameboy-emulator
Giibiiadvance
A GB, GBC and GBA emulator with GB Camera support.
Stars: ✭ 141 (+252.5%)
Mutual labels:  gameboy, gameboy-emulator
Gbemu
WebAssembly based Gameboy Emulator
Stars: ✭ 120 (+200%)
Mutual labels:  gameboy, gameboy-emulator
ostrich
A Game Boy Sound System player for macOS, written in Swift
Stars: ✭ 37 (-7.5%)
Mutual labels:  gameboy, gameboy-emulator
Coffee Gb
Gameboy emulator in Java 8.
Stars: ✭ 953 (+2282.5%)
Mutual labels:  gameboy, gameboy-emulator
Wasmboy
Game Boy / Game Boy Color Emulator Library, 🎮written for WebAssembly using AssemblyScript. 🚀Demos built with Preact and Svelte. ⚛️
Stars: ✭ 963 (+2307.5%)
Mutual labels:  gameboy, gameboy-emulator
Binjgb
Gameboy emulator implemented in C
Stars: ✭ 222 (+455%)
Mutual labels:  gameboy, gameboy-emulator
tobutobugirl-dx
An arcade platformer homebrew game for the Game Boy, Game Boy Color and Super Game Boy
Stars: ✭ 58 (+45%)
Mutual labels:  gameboy, game-boy

Mealybug Tearoom Tests

Game Boy emulator test ROMs.

About

This project contains some test ROMs I wrote to verify the correctness of my Game Boy emulator - Beaten Dying Moon.

Currently the tests focus on changes made to the PPU registers during STAT mode 3. This allows you to verify correct timing of the background tile and sprite data fetches as each scanline is rendered.

These tests examine very specific PPU behaviour/timings, so produce different results on a DMG compared to a CGB. There are expected result screenshots for when running on a DMG, and CPU CGB C and CPU CGB D (for most tests).

These tests are written to be easily automated. See the usage section below for details.

Screenshots

Pictures are always interesting so here are some screenshots showing the expected results on DMG:

m2_win_en_toggle m3_lcdc_bg_map_change m3_lcdc_tile_sel_change m3_lcdc_win_map_change m3_lcdc_win_en_change_multiple m3_lcdc_win_en_change_multiple_wx m3_window_timing m3_window_timing_wx_0 m3_lcdc_tile_sel_win_change m3_lcdc_obj_en_change m3_lcdc_obj_en_change_variant m3_lcdc_bg_en_change m3_lcdc_obj_size_change m3_lcdc_obj_size_change_scx m3_bgp_change m3_bgp_change_sprites m3_obp0_change m3_scx_low_3_bits m3_scx_high_5_bits m3_scy_change m3_wx_4_change m3_wx_4_change_sprites m3_wx_5_change m3_wx_6_change m3_lcdc_bg_en_change2 m3_lcdc_bg_map_change2 m3_lcdc_tile_sel_change2 m3_lcdc_tile_sel_win_change2 m3_lcdc_win_map_change2 m3_scx_high_5_bits_change2 m3_scy_change2

Requirements

  • RGBDS is required if you want to build the test ROMs yourself
  • A Game Boy emulator and/or real Game Boy and flash cart to test on

Usage

  • Clone or download the project and run make from the root directory. The test ROMs will be placed in the build directory. You can also download an archive of the ROMs.

  • Check the results. You can check in the expected directory for screenshots from my Game Boy emulator (which I believe to be correct), and the photos directory contains blurry photos of the ROMs running on real devices.

  • Automated testing can be achieved using the compare command from imagemagick to get the number of pixels that are different when comparing the expected image to a screenshot from an emulator.

  • The screenshot from the emulator should be generated when the LD B,B software breakpoint is encountered.

  • A DMG emulator should use these 8-bit values in greyscale images or in RGB components to ensure the images can be compared correctly: $00, $55, $AA, $FF

  • A CGB emulator should use this formula to convert 5-bit CGB palette components to 8-bit: (r << 3) | (r >> 2)

    An example imagemagick compare command is below. result will contain the number of pixels that differ between the two images, so 0 indicates success.

    result=$(compare -metric AE emulator-screenshot.png expected-result.png NULL: 2>&1)

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].