Yes - this behavior exists because you can open a save state file directly and have Mesen load the corresponding game. If it's freezing for a few seconds, you likely have several hundreds/thousands ROMs, which is not really a typical scenario.Fiskbit wrote:The search seems pretty clunky, though; it plays the current audio repeatedly and then speeds up afterward to compensate for the lost time. If it finds another matching ROM, does it automatically load that to work with the state, or what? This strikes me as surprising behavior
I've done some changes (halfway done or so):
-Current byte in hex editor is always highlighted
-Right-click on nametable can put a breakpoint (on a "nametable ram" location, which is new, too)
-DMC reads will now trigger breakpoints (but this will trigger in the middle of the instruction, even if sub-instruction breakpoints are disabled (because otherwise this would require predicting the next DMC read ahead of time, which implies predicting the APU's behavior, which is a lot of trouble/CPU time)
-Copy action on text boxes should be fixed
-The "read" cycle for the DMC will now show up as "DMC" in the instruction progress. Stall cycles aren't marked, yet, though.
-Break on decayed oam read option should no longer trigger when cpu cycle counter reaches 2^31
-Added an option to the hex editor to highlight the current column/row
If you mean the breakpoint list is displaying the "wrong" address, this is normal in this case. The breakpoint is added to the real offset in PRG ROM, and then the matching (current) CPU address for that breakpoint is calculated as needed - several addresses can match, when mirrors exist, and only the first one will be shown. e.g, on a 8kb PRG ROM game, putting a breakpoint on $E500 might show "$8500 [$0500]" as the address, the first one being the current (calculated) CPU address (for the first mirror) and the 2nd one is the offset in PRG ROM (which is where the breakpoint is actually set). It doesn't know that you put the breakpoint on $E500 specifically, it'll break when any of the mirrors is executed/read/written.Fiskbit wrote:- When creating a breakpoint by clicking in the code view in a 24 KB mapper 0 ROM on an address $C000-FFFF, the breakpoint claims to be on an address $8000-BFFF.