# Mednafen Debugger Documentation

Valid as of version 0.6.0

## Quick Key Reference

Key | Action
--- | ---
R | Run
S | Step
Return | Edit disassembly address, or edit selected register.
SHIFT+Return | Edit watch address.
Space | Toggle opcode breakpoint on selected disassembly address.
SHIFT+R | Edit read breakpoints.
SHIFT+W | Edit write breakpoints.
Up, Left, Right, Down, PageUp, PageDown | Select disassembly address or select register.
SHIFT + (Up, Left, Right, Down, PageUp, PageDown) | Select watch address.
M | Toggle watch window between logical and physical(if available) addressing.
P | Poke a value to memory.
D | Dump memory to file, using the CPU's logical memory map. Prefix the first address with a '*' to dump using physical addresses.
SHIFT + D | Dump memory to file, using the video processor's logical memory map.
SHIFT + P | High-level poke a value to the underlying ROM or RAM.

## Memory Poking

High-level poking will attempt to write the desired value to the underlying storage(ROM or RAM). Normal(low-level) poking will go through the same write handlers as the virtual CPU operates through.

The format for the string to enter when poking memory(highlevel or lowlevel), is "[*]address value [size]", with values in brackets being optional. Prefixing the address with a "*" will cause the address to be treated as a physical address, which is currently only meaningful on systems that have paging registers internal to the CPU, such as the PC Engine/TurboGrafx 16.

## Read and Write Breakpoints

You may enter either a single address to break on, or a range. Read and write breakpoints operate on logical addresses, unless you prefix the address with a "*", or the first address in the case of a range. Multiple entries should be separated by one space character. Examples:

       2000-2007 4014 4015
       0000 1800 2300-23ff
       *1fe000