Special Features

Most of the debugging features are located in the debugger window that can be found by opening the menu "Debug > Disassembly". In this window you can view the disassembly of any place in the banks currently opened, view the values of the current registers, and the last 4 PC values (can be used to backtrack to examine how you got at the current location). You can also view the rom locations of the loaded banks (PRG and CHR if appicable) and add/delete breakpoints on ROM, RAM, or PPU read/writes/executions.

Some new recent additions is the "Master Dump" and the "ROM Following". The Master Dump, keeps track of what places in the ROM have been read, written, and executed. You can then save this data to a file, that is an exact overlay of the original rom minus the header. You can tell if a certain was touched/used if they have certain bits set. No bits on, means the area wasn't used in the emulator. The first bit on means the area was executed as a CPU instruction, the second bit means the area was read into memory, and the third bit means the was written to (usually as a Mapper register, since the ROM can't be modified). At this time none of the CHR bank's bits are set if they are used.

Once you reach the end of the PRG and CHR banks, there will also be a set of bytes the same size as there are total PRG banks (32k PRG = 8 total banks). These values tell you which location the bank was loaded when it was run in memory ($8000, $9000, etc...). No bits set mean this bank wasn't loaded, the first bit set means the bank was loaded into $8000 in RAM, the second bit set means the bank was loaded into $9000 in RAM, and so on. This will allow you to correctly disassemble the asm in the banks using their real addresses.

The Master Dump is great for tracking entire routines for study to see whats assembly and what is data. This dump will also be used in a future program to help decompile full games into C++.

Special Note: Don't use the Master Dump the logging found in the "Dumps/Command" window at the same time.

The ROM Following tracks the registers, memory, and PPU where they got their values from in the ROM. It doesn't track memory addresses or memory manipulation of the data, only where the initial value came from in the ROM. This allows you to easily find text and index locations in the ROM for easy edit. Also on the NameTable (NT) View [Debug > Level 3 (Nametables)] you can view the ROM addresses of the NT and the Pattern Table (PT) in the Detail Window when you put your mouse over a specific tile. The debugger window also allows you to manually enter in addresses while your debugging to look at specific locations.

Possible input values are 'A','X','Y' for the registers, and 'mXXXX' for memory location at XXXX, and 'pXXXX' for ppu locations at XXXX. A return value of "EMPTY" means there are no ROM Addresses that made up this value and "NULL" means this area isn't being tracked.

Special Note: The way the debugger is setup right now, the ROM Following is updated before the instruction is executed, so be sure to look at values before they are overwritten by the next step.

Final Notes

You don't need to leave the debug window open if you are using the Master Dump or the ROM Following, they will work even if you close the window. But the window will need to stay open if you plan on using the breakpoints as they will be erased when you close the window. I may change this later.