Emulator behavior differences

From Glitch City Wiki
Revision as of 14:35, 6 April 2024 by WindyAndHikari (talk | contribs) (→‎Overview: Added the "Non-executable memory sections" column, changed the column header format (spaces and capitalization), and used red color to mark up the fail (different) cases.)
Jump to navigation Jump to search

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

This article or section is a stub. You can help Glitch City Wiki by expanding it.