Has your program grown to a such a gargantuan size, such that you can't tell what is messing with your data? Never fear, data breakpoints are here. Data breakpoints are one of my favorite debugging tools. In Mesen-SX, they are often referred to as read/write breakpoints.

To create one:

  • Go to Debug->Debugger or press Ctrl+D.

  • In the bottom panel, you will see a frame called "Breakpoints"

  • Right click and select "Add..."

add_breakpoint-1653078939482.png

  • Choose "Work RAM" in the Breakpoint Type dropdown menu.

breakpoint_window-1653078939627.png

  • Then check the read and/or write checkbox to trip the debugger when your variable is read or written to.
  • If you have a particular variable you want to track, select the "Specific" radio button and type in the memory location (protip: # is the address-of operator in 65x, but use that in your source, not this breakpoint window!), otherwise you can select a memory range or "Any" for the whole space
  • Select "OK"

When the variable you have set a data breakpoint on is read/written, the debugger will stop on the following line. Aha! There's the culprit.

Note: Mesen-SX cannot yet distinguish between labels in audio RAM from labels in S-WRAM (https://github.com/NovaSquirrel/Mesen-SX/issues/71)

breakpoint_tripped-1653078939623.png

Tutorial by jeffythedragonslayer