TASEmulators / TASEmulators/BizHawk

NesHawk's MMC3 chip doesn't support disabling PRG RAM

Open
#4,212 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Core: NesHawk Inaccuracy
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.

Image

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.