Skip to content

Commit

Permalink
Fix PRG writes in CD Logger
Browse files Browse the repository at this point in the history
This code was added for FDS RAM, but it breaks PRG writes with normal
cartridge-based memory controllers.

The bug inappropriately resets (clears) the access mode bits previously
recorded when an MMIO register is written in PRG address space. For
instance, if an instruction is executed at $8000 and then some code
later writes to $8000, the instruction execution would have been
forgotten.
  • Loading branch information
parasyte committed Sep 12, 2024
1 parent f980ec2 commit 9da8020
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion src/debug.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -569,7 +569,12 @@ void LogCDData(uint8 *opcode, uint16 A, int size)
newDataHit = true;
}
}
else
// Unclear why the write destination's access types gets reset for FDS...
// See:
// - https://github.com/TASEmulators/fceux/commit/a4fa6225a04b5ab8d3dfca3fc9abd7190bceec85
// - https://github.com/TASEmulators/fceux/commit/b10b6254c3d5c9519a85cb4382cdb22846d2e394
// - https://github.com/TASEmulators/fceux/commit/67942accc72149ae028d58f36419b64ea8651db9?diff=unified&w=1
else if(GameInfo && GameInfo->type == GIT_FDS)
{
if (cdloggerdata[j] & 1)
{
Expand Down

0 comments on commit 9da8020

Please sign in to comment.