Emulator behavior differences: Difference between revisions

From Glitch City Wiki
Jump to navigation Jump to search
Content added Content deleted
(Just putting TheZZAZZGlitch's table here.)
 
(→‎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.)
Line 6: Line 6:


{| class=wikitable
{| class=wikitable
! Platform !! UnknownOpcodes !! InvalidBanks !! VRAMAccess !! EchoRAM !! InvalidStop
! Platform !! Unknown opcodes !! Invalid banks !! VRAM access !! Echo RAM !! Invalid stop !! Non-executable memory sections
|-
|-
| Game Boy Color (CGB-001) || PASS<sup>4</sup> || PASS || PASS || PASS || PASS
| Game Boy Color (CGB-001) || PASS<sup>4</sup> || PASS || PASS || PASS || PASS || None
|-
|-
| Game Boy Advance SP (AGS-001) || PASS<sup>4</sup> || PASS || PASS || PASS || PASS
| Game Boy Advance SP (AGS-001) || PASS<sup>4</sup> || PASS || PASS || PASS || PASS || None
|-
|-
| Game Boy Player || PASS<sup>4</sup> || PASS || PASS || PASS || PASS
| Game Boy Player || PASS<sup>4</sup> || PASS || PASS || PASS || PASS || None
|-
|-
| 3DS Virtual Console || FAIL<sup>5</sup> || FAIL<sup>6</sup> || PASS || PASS || FAIL
| 3DS Virtual Console || {{color|red|FAIL<sup>5</sup>}} || {{color|red|FAIL<sup>6</sup>}} || PASS || PASS || {{color|red|FAIL}} || {{color|red|VRAM, SRAM}}
|-
|-
| Stadium 2 GB Tower || PASS<sup>7</sup> || PASS || FAIL<sup>8</sup> || FAIL<sup>9</sup> || FAIL
| Stadium 2 GB Tower || PASS<sup>7</sup> || PASS || {{color|red|FAIL<sup>8</sup>}} || {{color|red|FAIL<sup>9</sup>}} || {{color|red|FAIL}} || ?
|-
|-
| bgb 1.4.1 || PASS<sup>1</sup> || PASS || PASS || PASS || PASS
| bgb 1.4.1 || PASS<sup>1</sup> || PASS || PASS || PASS || PASS || None
|-
|-
| VBA-RR v24 svn440 || PASS<sup>2</sup> || PASS || PASS || PASS || FAIL
| VBA-RR v24 svn440 || PASS<sup>2</sup> || PASS || PASS || PASS || {{color|red|FAIL}} || ?
|-
|-
| VBA 1.7.2 || PASS<sup>2</sup> || FAIL<sup>3</sup> || FAIL || FAIL || FAIL
| VBA 1.7.2 || PASS<sup>2</sup> || {{color|red|FAIL<sup>3</sup>}} || {{color|red|FAIL}} || {{color|red|FAIL}} || {{color|red|FAIL}} || ?
|-
|-
| MyOldBoy v1.1.0 || FAIL || PASS || PASS || PASS || FAIL
| MyOldBoy v1.1.0 || {{color|red|FAIL}} || PASS || PASS || PASS || {{color|red|FAIL}} || ?
|-
|-
| LameboyDS v0.12 || FAIL || PASS || PASS || PASS || PASS<sup>10</sup>
| LameboyDS v0.12 || {{color|red|FAIL}} || PASS || PASS || PASS || PASS<sup>10</sup> || ?
|}
|}



Revision as of 14:35, 6 April 2024

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.