Program compatibility

From Nesdev wiki
Jump to: navigation, search
This page describes defects in homebrew games. For defects in games prior to 1996, see Game bugs.

Homebrew development is as subject to bugs as old software was, but many suffer from additional compatibility problems with the NES hardware due to being tested on emulators exclusively. This page is an incomplete list of homebrew releases that have known bugs, or especially hardware compatibility problems.

For a partial list of homebrew projects, see: Projects

Title Year Problem Description
Dikki Painguin in: TKO for the Third Reich (ROM) 2004 Incorrectly implemented parallax scrolling effect causes a severe graphical problem.
Final Fantasy II (English translation, Neo Demiforce) (Patch) 1998 Version 1.02 and 1.03 — graphic glitches during intro, no text during prologue (blue screen without text).

Caused by incorrect setting of nametables in PPUCTRL, misuse of PPUSCROLL, and reading of PPUSTATUS to detect VBlank.[1]

LAN Master (ROM) 2012 The original release had occasional nametable corruptions when resuming from pause. If the pause dialog was opened during a drum hit, the APU DMC could cause byte deletions when reading back nametables from $2007. If this happened, it would fail to restore the background tiles correctly when unpausing. The ROM was updated with a fix on 10/27/2015.
Mouser (ROM) 1998 Severe graphical problems prevent any useful gameplay.

Its author later created a sequel that addressed the compatibility problems.[2]

RTC Demo (ROM) 2000 Graphical glitches at the raster-bars portion because it incorrectly expects a sprite-0 hit on X=255.[3]

The sound-mode portion erratically advances tracks due to DPCM conflict with the controller read.

Ironically, this demo has a screen that attempts to detect the user of an emulator and warns the user that they are not playing it on hardware (this screen still triggers if played on a PowerPak).

Sack of Flour, Heart of Gold (ROM) 2002 Severe graphical problems on some screens due to $2007 access outside of vblank.[4]
Stars Demo by Chris Covell (ripped music version) (ROM) 1999 Reads RAM starting at $784 before writing. Crashes with unknown opcode $12 if RAM is filled with $FF at power-on.[5]
Stars SE by Chris Covell (ROM) 1999 Does not disable APU Frame IRQs and crashes under accurate emulators and hardware. Fixed version of the demo is available in this thread.

Common compatibility problems

This is a list of issues that commonly appear due to lack of popular support in emulators, or sometimes even hardware limitations of flash-carts like the PowerPak. Many emulators are merely trying to be compatible with existing games, rather than accurately reflecting the hardware, making them inadequate for verifying the correctness of new software.

  • Use of DPCM samples causes a conflict with controller and PPU reads during sample playback.
  • Writes to PPU registers outside of vblank with rendering enabled conflicts with internal use of the PPU address, causing graphical corruption.
  • Failure to initialize registers not guaranteed by the CPU power up state or the PPU power up state.
  • Failure to initialize RAM, nametables, or mapper registers. (Few mappers have guaranteed power up states.)
  • Failure to delay use of the PPU after power/reset to avoid conflicts with its warm up state.

References

  1. http://forums.nesdev.com/viewtopic.php?p=53111#p53111
  2. http://forums.nesdev.com/viewtopic.php?f=22&t=10594
  3. http://forums.nesdev.com/viewtopic.php?p=4965#p4965
  4. http://forums.nesdev.com/viewtopic.php?f=2&t=3522
  5. Weird bug in my emulator!