BizHawk icon indicating copy to clipboard operation
BizHawk copied to clipboard

(NESHawk) Implement OAM decay

Open getCursorsExe opened this issue 1 month ago • 2 comments

On the NES, OAM is implemented using dynamic RAM rather than static RAM. This causes OAM to slowly decay into random data if not refreshed.

NESHawk does not emulate this. This is a problem because it is possible to create a test ROM that can detect emulators because of this. This also means it is possible to create a homebrew game that will not run on most emulators, making them unTASable.

As this effect is unpredictable and happens at inconsistent times, I suggest adding the option to enable them, as well as the seed and decay rate (as sync settings of course).

More info about it here.

getCursorsExe avatar Dec 02 '25 14:12 getCursorsExe

NESdev article doesn't link to a testrom, do you know of one? Is it covered by https://github.com/100thCoin/AccuracyCoin for example? Or is it decay at the level of hardware bits and thus not amenable to emulation?

YoshiRulz avatar Dec 02 '25 14:12 YoshiRulz

This effect was confirmed by several people. ~I'll find the test ROM in the meantime.~ Okay, I might be wrong, but here it is.

getCursorsExe avatar Dec 02 '25 16:12 getCursorsExe