TASEmulators / BizHawk

BizHawk is a multi-system emulator written in C#. BizHawk provides nice features for casual gamers such as full screen, and joypad support in addition to full rerecording and debugging tools for all system cores.
http://tasvideos.org/BizHawk.html
Other
2.2k stars 385 forks source link

"Changes" column is broken in certain cases in RAM watch #4001

Closed RetroEdit closed 2 months ago

RetroEdit commented 3 months ago

This is a long-standing issue that I became aware of just now because I don't use RAM watch often.

It was pointed out to me using the example of the RNG address in Minish Cap for GBA, which is 03001150 System Bus (or equivalently 1150 IWRAM). Once the game starts, the change count seems to increment almost constantly on the title screen, though it pauses occasionally. This is despite the value itself not changing (observable if you go frame-by-frame with frame advance). See: TMC_wch.zip

This seems to be an issue exclusive to the 4-byte watch size(?), as seen with the attached watch file. But I'm not entirely sure what causes the erroneous increments. In testing some 4-byte sized watches in a GB game, I didn't observe any issues, but that doesn't necessarily mean it's exclusive to GBA.

Semi-related(?): #3020

Host env.

Reported as affecting at least BizHawk 2.4 through BizHawk 2.9.1 and the current dev build as of 2024-08-12 ( ab7f379e745bb241e537ee6fe0212f98ab421dad ).

Morilli commented 3 months ago

This has been implicitly fixed, at least for Ram Search, by the refactor in #3954... which has since been reverted. The same changes I did there should be applied to the ram watch code to fix this.

Notably setting the previous type to Last Search or Last Frame is an issue in the current code, because it handles this badly.