TASEmulators / TASEmulators/BizHawk

[NesHawk] Pass TakuikaNinja's FDS-Mirroring-Test

Open
#4,282 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Core: NesHawk Homebrew (console-verified) Inaccuracy Repro: Affects 2.10
Dominant language
C#
Stars
2.8k
Forks
468
PR merge metrics
No merged PRs in 30d

Description

Summary

I recently helped discover some previously undocumented behaviour on the FDS. Bit 3 of $4030 reads return the value from bit 3 of $4025, which is the nametable arrangement/mirroring mode. I wrote a test program to verify the behaviour, and it fails on BizHawk's NesHawk core (and presumably SubNesHawk as well). Mesen2 and Nestopia have since implemented the behaviour.

NESdev forum post: https://forums.nesdev.org/viewtopic.php?p=300488#p300488
Test program source code: https://github.com/TakuikaNinja/FDS-Mirroring-Test

Repro
  1. Load the following test program: https://forums.nesdev.org/download/file.php?id=28216
  2. Test fails for $4030.D3 R.
Host env.
  • BizHawk 2.10; EndeavourOS on 6.13.8-zen1-1-zen
Screenshots

NesHawk:
Image

Original hardware (Twin Famicom):

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 locating the NesHawk core's handling of FDS reads at $4030 and the mirroring value at $4025. Run the linked FDS-Mirroring-Test program and compare the $4030.D3 R result with the documented original-hardware behavior; done means the test passes in NesHawk.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
game-dev
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.