Emulator behavior differences
Most game console emulators are never intended to emulate the real hardware perfectly, as their goal is just to provide a "good enough" emulation to play games on. Even in cases where the emulator does want to replicate some certain feature, emulation accuracy bugs can be difficult to avoid due to the intricacies of the hardware. This page documents some known behavior differences between emulators and real consoles.
GB/GBC
Overview
The following table[1] summarizes some features on GB/GBC where emulators commonly behave differently from the real hardware.
Platform | Unknown opcodes | Invalid banks | VRAM access | Echo RAM | Invalid stop | Non-executable memory sections |
---|---|---|---|---|---|---|
Game Boy Color (CGB-001) | PASS4 | PASS | PASS | PASS | PASS | None |
Game Boy Advance SP (AGS-001) | PASS4 | PASS | PASS | PASS | PASS | None |
Game Boy Player | PASS4 | PASS | PASS | PASS | PASS | None |
3DS Virtual Console | FAIL5 | FAIL6 | PASS | PASS | FAIL | VRAM, SRAM |
Stadium 2 GB Tower | PASS7 | PASS | FAIL8 | FAIL9 | FAIL | ? |
bgb 1.4.1 | PASS1 | PASS | PASS | PASS | PASS | None |
VBA-RR v24 svn440 | PASS2 | PASS | PASS | PASS | FAIL | ? |
VBA 1.7.2 | PASS2 | FAIL3 | FAIL | FAIL | FAIL | ? |
MyOldBoy v1.1.0 | FAIL | PASS | PASS | PASS | FAIL | ? |
LameboyDS v0.12 | FAIL | PASS | PASS | PASS | PASS10 | ? |
1 - the emulator breaks into a debugger every time an undefined opcode is encountered
2 - brings up the infamous message "unknown opcode xx at yyyy"
3 - the result is 127 instead of 124 - this behavior needs to be more thoroughly investigated
4 - the game hangs without any message
5 - unknown opcodes are ignored, most likely because of the emulator hooking them to communicate with the hardware
6 - (probably) always returns 0
7 - displays a message: "The saved data has been corrupted, so it is impossible to CONTINUE. Please reset the game and choose NEW GAME", the save is not corrupted though
8 - (probably) always returns 255 - so VRAM access is enabled not during the V-Blank period, but during the V-Blank interrupt, which changes things dramatically
9 - some other data seems to be stored in the echo RAM area
10 - some corrupted stops work, some not - this is to be expected with undefined behavior
References
- ↑ Verifying console/emulator behavior with 8F by TheZZAZZGlitch
This article or section is a stub. You can help Glitch City Wiki by expanding it. |