TASEmulators / TASEmulators/BizHawk
NesHawk's MMC3 chip doesn't support disabling PRG RAM
Nobody has claimed this yet.
- Dominant language
- C#
- Stars
- 2.8k
- Forks
- 468
- PR merge metrics
- No merged PRs in 30d
Description
Summary
With the MMC3 mapper, you can enable/disable the PRG RAM stored on the cartridge. When this PRG RAM is disabled, reading from the address $6000 through $7FFF range should return open bus, though currently NesHawk reads these addresses as if PRG RAM was always enabled.
Repro
I made a custom cartridge that runs the following ASM
LDA #$00
STA $A001
LDA $7964 ; This address is part of the disabled PRG RAM
The expected result would leave the A register with a value of $79, due to open bus behavior.
Here's a screenshot of the tracelog, with the A register ending with a value of $00.
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
Start by tracing the MMC3 mapper handling for writes to $A001 and reads in the $6000-$7FFF range. Reproduce the custom-cartridge ASM case and verify that disabling PRG RAM makes the read return the expected open-bus value rather than $00.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- game-dev
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100