Basically I want to be able to create a suitable footnote for the last line of Errata: OAM and Sprites on the wiki:
So, I believe this issue comes up in StarTropics, where some sort of corrupt sprite is seen every time Mike is coming up through a door on the bottom of the screen. His shadow sprite crossing the render-disable for palette change puts its timing into the "unsafe" window. I noticed that previous PowerPak MMC3 mappers make this problem worse by delaying the IRQ very slightly, causing other sprites (especially the player) to visibly flicker on the map screen and in the dungeon. (Edit: actually StarTropics might have a different, undescribed sprite corruption issue with turning $2001 back on?)NESDev Wiki wrote:Turning rendering off in PPUMASK ($2001) before the PPU has finished evaluating sprites for that line (x=192 for lines with no sprites, x=240 for lines with at least one sprite) can corrupt OAM, leading to sprite flicker.
Does anybody have any other examples, more specific notes, or links to past discussions?
Edit: adding past discussions as I find them.
- 2008: Powerpak + Tetramino = sprite flicker - An instance where tepples discovered the bug, and blargg has posted some useful research there too. Unfortunately I believe tepples has redacted the Tetramino game so it's not a test case to re-evaluate.
- 2011: PPU quirks that I don't understand - Drag summarizes the hardware issue, but no new information is given.
- 2016: Technical viability of this game design - FrankenGraphics asks about a mid-screen palette change and the possibility of sprite corruption from render-off is discussed.
- 2017: Isolated Warrior unemulated graphical glitches - Fiskbit demonstrates sprite flickering in Isolated Warrior, presumably due to $2001=0 occasionally at an unsafe time near the bottom of the screen. Includes a very good oam_flicker_test test ROM to investigate render-off timing behaviour.
- 2017: Workaround for OAM corruption - rendering a blank frame? - Several theories are discussed as well as techniques for avoiding it.
- 2021: Sprite multiplexing on PAL - wiki incorrect? - Bananmos asks about Stunt Kids, an example that turns rendering off and on mid-frame successfully (with OAM DMA in between).
- 2022: OAM corruption in StarTropics - Investigating the little flashes on the status bar whenever you go through a vertical door.