Sprite overflow games: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
 
(8 intermediate revisions by 6 users not shown)
Line 11: Line 11:
=== Homebrew ===
=== Homebrew ===
* blargg's [https://github.com/christopherpow/nes-test-roms/tree/master/sprite_overflow_tests sprite overflow test ROMs]: tests behavior of sprite overflow, including the buggy behavior.
* blargg's [https://github.com/christopherpow/nes-test-roms/tree/master/sprite_overflow_tests sprite overflow test ROMs]: tests behavior of sprite overflow, including the buggy behavior.
* ''City Trouble'' uses both the sprite overflow flag and the sprite 0 flag to make two scroll splits.


== Use of excess sprites for masking effects ==
== Use of excess sprites for masking effects ==
Line 16: Line 17:


=== Commercial ===
=== Commercial ===
* ''Castlevania II: Simon's Quest'' (a.k.a. ''Dracula 2''): when Simon enters a swamp, the lower half of his body should be "hidden".
* ''Castlevania II: Simon's Quest'' (a.k.a. ''Dracula 2''): When Simon enters a swamp, the lower half of his body should be hidden.<ref>[http://forums.nesdev.org/viewtopic.php?p=136304#p136304 BBS topic] with screenshots of ''Castlevania II: Simon's Quest''.</ref>
* ''Felix the Cat'': when entering or exiting a bag.
* ''Felix the Cat'': When entering or exiting a bag.
* ''Gimmick!'': when entering a level.  Also used to keep extra sprites out of the status bar.
* ''Gimmick!'': When entering a level.  Also used to keep extra sprites out of the status bar.
* ''Gremlins 2 - The New Batch'': uses multiple blank sprites to mask rows during cutscenes.
* ''Gremlins 2 - The New Batch'': Uses multiple blank sprites to mask rows during cutscenes.
* ''Majou Densetsu II: Daimashikyou Galious'': when entering a doorway, Popolon's body should gradually disappear (to imitate walking down stairs); [https://www.youtube.com/watch?v=9XHXYhb_gDo Youtube video] demonstrating the effect.
* ''Majou Densetsu II: Daimashikyou Galious'': When entering a doorway, Popolon's body should gradually disappear (to imitate walking down stairs).<ref> [https://www.youtube.com/watch?v=9XHXYhb_gDo Youtube video] demonstrating the effect on ''Majou Densetsu II: Daimashikyou Galious''.</ref>
* ''Ninja Gaiden'': some cutscenes (more details needed).
* ''Ninja Gaiden 1, 2 and 3'': All sprites in all cutscenes should be confined inside the black background borders.
* ''The Legend of Zelda'' (a.k.a. ''Zelda 1'', ''Zeruda no Densetsu''): when entering vertical (top-bottom-facing) doorways.
* ''The Legend of Zelda'' (a.k.a. ''Zelda 1'', ''Zeruda no Densetsu''): On the top or bottom of dungeon screens.
 
=== Homebrew ===
* ''Lizard'' hides sprites overlapping the pause overlay while the game is paused.
 
=== Detecting masking effects ===
Games will place 8 consecutive sprites with the same Y coordinate and same tile number. If you see this, then that is a sign that the game is using a masking effect, and the 8-sprite limit should be enforced for that area.


==Misc==
==Misc==
Line 29: Line 36:


== References ==
== References ==
* [http://forums.nesdev.org/viewtopic.php?p=136304#p136304 BBS topic] (with screenshots of ''Castlevania II: Simon's Quest'')
<references />

Latest revision as of 03:27, 10 April 2020

The following is a list of games which rely on putting more than 8 sprites on a scanline.

Use of sprite overflow flag

The sprite overflow flag is rarely used, mainly due to bugs when exactly 8 sprites are present on a scanline. No games rely on the buggy behavior. See sprite overflow bug for more details.

Nonetheless, games can intentionally place 9 or more sprites in a scanline to trigger the overflow flag consistently, as long as no previous scanlines have exactly 8 sprites.

Commercial

  • Bee 52: At the title screen, the game splits the screen with sprite overflow (at scanline 165), then splits the screen with a sprite 0 hit (at scanline 207). If sprite overflow is not emulated, the game will crash at a solid blue-purple screen.

Homebrew

  • blargg's sprite overflow test ROMs: tests behavior of sprite overflow, including the buggy behavior.
  • City Trouble uses both the sprite overflow flag and the sprite 0 flag to make two scroll splits.

Use of excess sprites for masking effects

Some games intentionally place multiple blank sprites early in the OAM at the same Y position so that other sprites on those scanlines are hidden.

Commercial

  • Castlevania II: Simon's Quest (a.k.a. Dracula 2): When Simon enters a swamp, the lower half of his body should be hidden.[1]
  • Felix the Cat: When entering or exiting a bag.
  • Gimmick!: When entering a level. Also used to keep extra sprites out of the status bar.
  • Gremlins 2 - The New Batch: Uses multiple blank sprites to mask rows during cutscenes.
  • Majou Densetsu II: Daimashikyou Galious: When entering a doorway, Popolon's body should gradually disappear (to imitate walking down stairs).[2]
  • Ninja Gaiden 1, 2 and 3: All sprites in all cutscenes should be confined inside the black background borders.
  • The Legend of Zelda (a.k.a. Zelda 1, Zeruda no Densetsu): On the top or bottom of dungeon screens.

Homebrew

  • Lizard hides sprites overlapping the pause overlay while the game is paused.

Detecting masking effects

Games will place 8 consecutive sprites with the same Y coordinate and same tile number. If you see this, then that is a sign that the game is using a masking effect, and the 8-sprite limit should be enforced for that area.

Misc

Commercial

  • Solstice: during the intro cutscene, there are stray sprites on the screen beyond the 8 per scanline, but the NES won't display the excess sprites. This is not a masking effect, it is merely the hardware covering up a mistake that wasn't caught by the original programmers.

References

  1. BBS topic with screenshots of Castlevania II: Simon's Quest.
  2. Youtube video demonstrating the effect on Majou Densetsu II: Daimashikyou Galious.