I've been scratching my head at this one for a while, and I can't figure it out. Big surprise, right?
I recently overhauled the PPU code for my emulator, to be "per-pixel". It all works fine until I get to the boss select screen in Mega Man 3:
Scroll Glitch
Shown on the left is the PPU Debugger window, showing that all Name Table data is loading properly (Otherwise they wouldn't render as they do). I know this is a scroll register issue. My question is, does anyone know what mechanism Mega Man 3 uses to time that effect? My sprite zero flag is functioning properly, and this screen was rendering just fine before the overhaul. I can post relevant code if it's needed, all my registers _should_ be fine.
Scrolling in the actual game works as expected, no problems there.
The second issue I'm having is more of an implementation issue. That is, how best to scroll attributes along with their associated tile bit planes? The way I'm doing this produces several attribute artifacts:
Attribute Artifacting
Anyways, as always responses are always appreciated!
I recently overhauled the PPU code for my emulator, to be "per-pixel". It all works fine until I get to the boss select screen in Mega Man 3:
Scroll Glitch
Shown on the left is the PPU Debugger window, showing that all Name Table data is loading properly (Otherwise they wouldn't render as they do). I know this is a scroll register issue. My question is, does anyone know what mechanism Mega Man 3 uses to time that effect? My sprite zero flag is functioning properly, and this screen was rendering just fine before the overhaul. I can post relevant code if it's needed, all my registers _should_ be fine.
Scrolling in the actual game works as expected, no problems there.
The second issue I'm having is more of an implementation issue. That is, how best to scroll attributes along with their associated tile bit planes? The way I'm doing this produces several attribute artifacts:
Attribute Artifacting
Anyways, as always responses are always appreciated!