Program compatibility: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
(adding year in case it helps put compatibility in perspective (is there a table class that would allow optional sort by year?))
 
(13 intermediate revisions by 3 users not shown)
Line 1: Line 1:
:''This page describes defects in homebrew games. For defects in games prior to 1996, see [[Game bugs]].''
:''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.
Homebrew development is as subject to bugs as old software was, but many suffer from additional [[Accuracy|compatibility problems]] with the NES hardware due to being tested on emulators exclusively. It is often the case that early homebrew ROMs will not run correctly on hardware. Since the release of the [[PowerPak]] in 2008, and general improvement in emulators over time, these problems have become less frequent.


For a partial list of homebrew projects, see: [[Projects]]
For a partial list of homebrew projects, see: [[Projects]]


{| class="wikitable"
== Common compatibility problems ==
! Title
 
! Year
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]].
! Problem Description
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.
|-
 
| Dikki Painguin in: TKO for the Third Reich ([http://bobrost.com/nes/games.php ROM])
* Use of DPCM samples causes a [[DPCM conflict|conflict]] with controller and PPU reads during sample playback.
| 2004
* Writes to [[PPU registers]] outside of [[The frame and NMIs#VBlank, Rendering Time, and NMIs|VBlank]] with rendering enabled conflicts with internal use of the PPU address, causing graphical corruption.
| Incorrectly implemented parallax scrolling effect causes a severe graphical problem.
* 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.)
| Final Fantasy II (English translation, Neo Demiforce) ([http://www.romhacking.net/trans/139/ Patch])
* Failure to delay use of the PPU after power/reset to avoid conflicts with its [[PPU power up state|warm up state]].
| 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.<ref>http://forums.nesdev.org/viewtopic.php?p=53111#p53111</ref>
The author has revamped the entire intro as of March 2015 (not yet released).
|-
| LAN Master ([https://shiru.untergrund.net/software.shtml ROM])
| 2012
| [[APU DMC]] causes byte deletions when reading back nametables from $2007 if a dialog is being displayed during a drum hit.
|-
| Mouser ([http://nesdev.org/mouser.zip ROM])
| 1998
| Severe graphical problems prevent any useful gameplay.
Its author later created a sequel that addressed the compatibility problems.<ref>http://forums.nesdev.org/viewtopic.php?f=22&t=10594</ref>
|-
| RTC Demo ([http://nesdev.org/rtc-y2k.zip ROM])
| 2000
| Graphical glitches at the raster-bars portion because it incorrectly expects a sprite-0 hit on X=255.<ref>http://forums.nesdev.org/viewtopic.php?p=4965#p4965</ref>
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 ([http://nesdev.org/SOF_v1d.zip ROM])
| 2002
| Severe graphical problems on some screens due to $2007 access outside of vblank.<ref>http://forums.nesdev.org/viewtopic.php?f=2&t=3522</ref>
|}


== References ==
== References ==
<references />
<references />

Latest revision as of 17:57, 24 January 2023

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. It is often the case that early homebrew ROMs will not run correctly on hardware. Since the release of the PowerPak in 2008, and general improvement in emulators over time, these problems have become less frequent.

For a partial list of homebrew projects, see: Projects

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