TASEmulators / TASEmulators/BizHawk
(NESHawk) Implement OAM decay
Nobody has claimed this yet.
- Dominant language
- C#
- Stars
- 2.8k
- Forks
- 468
- PR merge metrics
- No merged PRs in 30d
Description
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.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
The issue names no files or tests. Start by locating NESHawk's PPU/OAM implementation, then read the linked NESdev dynamic-RAM-decay reference. Done should include configurable decay behavior with seed, decay rate, and synchronization settings, plus coverage showing the behavior can be enabled and reproduced.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- game-dev
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100