Game bugs
Listed are games that have been tested on NES or Famicom hardware and verified to look wrong or odd. This can be caused by NES hardware limitations, programming errors, or even intentional effects within the game. Refer to this if you're developing an emulator and find a game that looks wrong, before you look for a problem in your emulator. If you are attempting to give your emulator "bug for bug" compatibility, you'll want to make sure that these glitches (or unusual behaviors) appear the same in your emulator as they do on the NES.
This is an incomplete list that concentrates on commercial games. For an overview of common compatibility problems in homebrew games, see Program Compatibility. Sometimes, a bug slips into a game to make it rely on less-than-intentional features of the hardware; for those, see Tricky-to-emulate games.
General bugs
Game | Problem |
---|---|
The Addams Family | The in-game status bar occasionally bumps vertically by 1 pixel, caused by non-solid background pixels overlapping the sprite zero that is used for the status bar split. |
Akumajou Densetsu | When a door is opened/shut when the player goes through them, the screen shakes by one pixel. |
Akumajou Special | The game over screen is sometimes glitched when it occurs in bidirectional scroll stages. (Validated in Game Center CX.) |
Armadillo | The in-game status bar occasionally bumps vertically by 1 pixel. This game also often suffers from slowdown. |
Castlevania | The PRG 0 version sometimes freezes right before the Grim Reaper. (Fixed in PRG 1 and PAL) |
Castlevania II - Simon's Quest | Sometimes incorrect tiles are shown on the playfield. |
Castlevania III - Dracula's Curse |
|
Chip 'n Dale Rescue Rangers | After reading the intro to the last stage (?), garbage sprites will appear in the upper left (right) corner of the screen. |
Commando | There are many bugs that may look like emulator glitches but aren't. |
Crystalis | The scanline above the status bar and above text boxes looks wrong. |
Dizzy The Adventurer | Resets the sound phase every frame, causing a nasty 60Hz buzz. |
Donald Land | When the player progresses too quickly by boosting off of apples, the background loads fall behind and the scroll seam becomes visible. |
Double Dragon |
|
Double Dragon II | The status bar may suddenly change colors: sometimes when scrolling vertically it shows incorrectly for a couple of frames. |
Double Dragon III | Same status bar issue as Double Dragon II. |
Duck Maze | The original 60-pin release for famiclones relies on decimal mode working as it does in a 6502. Without decimal mode, score counting works wrong, and the game may never finish counting down at the end of a level. (Fixed for HES's 72-pin rerelease.) |
Eliminator Boat Duel |
|
Exed Exes | When pausing, the immediate next note of the music will play after the pause jingle completes. |
F-15 City War | The last boss is glitched when playing through the game from start to finish in its original INES Mapper 173 and AVE "1.x" version. It is not glitched when jumping to the last boss through cheating in those versions, and never glitched in the later AVE "1.1" and Gluk Video versions. |
Ghostbusters (J) | Loads the ending text from the wrong CHR bank, causing it to display a blank screen that eventually scrolls "りり" (hiragana "riri") on the screen. |
Ghosts 'n Goblins |
|
Hebereke |
|
Hottarman no Chitei Tanken | If gameplay slows down due to excessive on-screen objects, scrolling may glitch and display garbage values. |
The Immortal | Uses color $0D (blacker than black) as black and color $0E (normal black) as a darker gray than color $2D while setting all three deemphasis bits, causing picture instability on many television sets and TV capture cards. |
Ironsword: Wizards and Warriors II | Noise channel doesn't work properly, sometimes plays longer notes and sometimes mutes. |
Kirby's Adventure | When Kirby copies a new ability, the status bar icon may flicker or display incorrect attributes (?) |
Legend of Zelda | The screen "jumps" off 2 pixels at the start and end of vertical fast scrolling. |
Mega Man 3 |
|
Mega Man 5 | In Gyro Man's stage, inside the two elevators, the floor moves up by a few pixels when the elevator goes up, and move back down when the screen is fast-scrolled. |
Micro Machines | Graphical problems on PPU revisions prior to 2C02G due to $2004 unreadability. Resetting on Famicom and NES-101 doesn't always work because the game fails to clear $2000 and $2001 on reset. |
Mitsume ga Tooru | Garbage data is visible in the upper side of the status bar by mistake when shaken by an earthquake, due to the status bar and playfield both sharing the nametables. |
Othello | The original 60-pin release for famiclones relies on decimal mode working as it does in a 6502. Without decimal mode, spots are counted wrong. (Fixed for HES's 72-pin rerelease.) |
Panic Restaurant | The in-game status bar, always bumps up by 1 pixel. |
Rad Racer | Steer to the far left, and a background scanline will be seen on the road. |
Rambo | One scanline is occasionally glitched, for the same reason as in Super Mario Bros.[1] |
Rampart (Jaleco) | During build phase, the drums (on the noise channel) drop out fairly early. |
Snow Bros. | When you clear the stage and rise to the next floor, incorrect CHR bank switching results in glitches in the new floor's graphics. |
Solar Jetman (NTSC version) | Some songs use the sweep registers heavily, which are not restored after a sound effect plays that uses the sweep registers as well. The PAL version seems to have corrected this error. |
StarTropics | The music data for two songs were not set up correctly.[2]
|
Strider | When the game slows down, its NMI handler pushes an incomplete display list to OAM anyway, leading to visible garbage sprites.[3] |
Super Mario Bros. |
|
Super Mario Bros. 3 |
|
Teenage Mutant Ninja Turtles | Sprite overflow (due to large numbers of enemies) causes the status bar to flicker. |
Tetris (Bullet-Proof Software) | Sets APU Triangle period to longest value instead of actually muting it. |
Zelda II: The Adventure of Link |
Reads from $2007 during the title screen twice, moving the background upward by 2 scanlines after the split point. |
Zombie Nation | Same as Tetris, above |
Reliance on power-on mapper state
Game | Problem |
---|---|
Digital Devil Story: Megami Tensei II |
When powered-on with uninitialized SRAM, a "DDS II" logo is flashed from left to right before proceeding with the normal introduction. The logo's background looks garbled because the game has not fully initialized the CHR bank select registers at that point. |
Mega Man 5 | Neglects to disable MMC3 interrupts on reset, causing the game to not boot if an interrupt fires before the game has fully initialized. |
Reliance on RAM values
Several games erroneously rely on RAM areas being pre-populated with certain values at power-on, despite RAM contents not being in a consistent state on power-on. Other games rely on similar values, but in PRG-RAM (WRAM), or CHR-RAM.
Note that using power-on RAM content as a seed for random number generation (such as in Final Fantasy) is not a game bug, even if it makes speedruns harder to verify on console.
Game | Problem |
---|---|
Cheetahmen II | Suspected that certain RAM values may affect being able to reach the final two levels of the game (levels 5 and 6).[4] |
Chinese Kungfu: 少林武者 | The game will not display the first self-running demo correctly if $0707 contains the value $FF at startup. Values $00-$09 will cause one of nine self-running demo sequences to play first, while values above that will cause the game to always begin with the first demo sequence. For the Western localization (Challenge of the Dragon, not to be confused with the Color Dreams game of the same name), the developers seemed to have noticed this problem and went out of their way to initialize this memory location with $00. |
Cybernoid | On the title screen, the default selection for the difficulty level changes based on the contents of RAM at power on. Also, the music may not start when starting a game (depending on uninitialized RAM values).[5] |
Dancing Blocks (Sachen) | Game will not boot when addresses $EC and $ED are both set to $FF.[6] |
Erika to Satoru no Yume Bouken | Plays uninitialized sound RAM as a waveform on the title screen, resulting in a buzzy tone on some power-ons[7]. |
F-1 Race (Beta Version only) | Title screen will be skipped if $6B and $70 contain non-zero values.[8] Game blindly reads and uses values from $51, $55, $70, $A4, and $0200-02FF (via sprite DMA).[9] |
Gun.Smoke (FDS version only) | The music player's RAM is not cleared before starting the title screen song, resulting in a garbage first noise channel note, with random properties, if that RAM is not zero. |
Huang Di | Uses uninitialized RAM at $0100 to determine if Cheat Mode is enabled or not. When it's zero, cheat mode is enabled, allowing infinite jumps in midair. |
Huge Insect | Artifacts show up on the screen when nametable RAM is initialized with random values (the game only appears to initialize one of the 2 nametables). |
Layla | The music player's RAM is not cleared before starting the title screen song, resulting in a flubbed first note, sometimes with a frequency sweep, depending on power-on RAM content. |
Minna no Taabou no Nakayoshi Daisakusen | Requires that address $11 be initialized to the value $FF, otherwise the game will not start.[10] A PRG1 version corrects the issue. |
Silva Saga | When save RAM is initialized with all 0s, the game incorrectly creates 3 blank saved games which do not work properly.[11] |
Super Mario Bros (bootleg versions) | Relies on portions of RAM containing $00, otherwise player starts at world 0-1.[12] |
Terminator 2: Judgment Day | The copyright screen is skipped if RAM is filled with $00 (more generally, if a high score table checksum happens to be valid).[13] |
Ultima: Exodus | Relies on PRG-RAM contents before they're initialised; a fresh/new game may see artifacts such as shaking/wobbly text during the initial text intro screens, corruption of text intro screen fonts, and possibly audio anomalies.[14] |
"Impossible" controller input
Many games do weird and buggy things when button combinations that would be impossible (or at least very hard) to input on a real controller are pressed. This comprises pressing left+right and up+down simultaneously. Such impossible controller input should probably be prevented by default in an emulator, but they can be optionally allowed for those feeling experimental.
Game | Problem |
---|---|
Battletoads | Pressing up+down in the vertical tunnel level kills the player instantly. Additionally, pressing left+right causes the player to walk up/back even when in pure 2D stages, which can result in certain areas becoming impossible to complete. |
Mega Man 1, 2 | By pressing up+down at the top of a ladder, one may enter the "climbing ladder" state briefly above the top of the ladder. This allows "zipping" through walls. |
Panic Restaurant | Pressing up while crouching (by pressing down, thus pressing up+down simultaneously) the player character's sprite uses garbage data including the damage sprite. This does not occur if up is pressed before down; the player chef merely stands still. |
Spy vs. Spy | The character turns into an airplane when pressing left+right. |
Super Mario Bros. 2 | Ladders can be climbed very fast by pressing up+down |
Teenage Mutant Ninja Turtles | If you press the attack button while you jump while pressing up+down, the player character uses a garbage sprite, and attacks will use unusual (i.e. garbage data) hitboxes. |
Teenage Mutant Ninja Turtles II: The Arcade Game | When you jump with a left or right move while pressing up+down, the player character will move in unusual directions and speeds, possibly screen-wrapping. |
Tiny Toon Adventures | The player can gain unusual speed when pressing left+right. |
Zelda II: The Adventure of Link | Link can gain tremendous speed when pressing left+right. |
Overscan ugliness
Some games display junk tiles in the overscan area, which is usually not seen (or is at least partially obstructed) on real TV sets. Examples include the NTSC versions of Metal Gear (e.g. in the jungle area when gameplay starts) and Solstice (on the title screen).
References
- ↑ Eliminator Boat Duel
- ↑ "Fixing StarTropics" by Brad Smith (5 minutes)
- ↑ "The Garbage Sprites in Strider (NES) - Behind the Code" by Displaced Gamers (15 minutes)
- ↑ http://forums.nesdev.org/viewtopic.php?p=178154#p178154
- ↑ http://tasvideos.org/forum/viewtopic.php?p=463659&sid=7cfe55942ee3420275d8f16b2a59770a#463659
- ↑ http://tasvideos.org/forum/viewtopic.php?p=463659&sid=7cfe55942ee3420275d8f16b2a59770a#463659
- ↑ N163 Sound RAM Initialisation Behaviour
- ↑ http://forums.nesdev.org/viewtopic.php?p=178168#p178168
- ↑ http://forums.nesdev.org/viewtopic.php?p=178015#p178015
- ↑ http://forums.nesdev.org/viewtopic.php?p=185663#p185663
- ↑ https://forums.nesdev.org/viewtopic.php?f=11&t=11045
- ↑ http://forums.nesdev.org/viewtopic.php?p=178163#p178163
- ↑ http://forums.nesdev.org/viewtopic.php?p=180752#p180752
- ↑ http://forums.nesdev.org/viewtopic.php?p=185163#p185163