<html> <head> <meta http-equiv=Content-Type content="text/html; charset=windows-1252"> <meta name=Generator content="Microsoft Word 11 (filtered)"> <title>Geiger's Snes9x Debugger</title> <style> <!-- /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {margin:0in; margin-bottom:.0001pt; font-size:12.0pt; font-family:"Times New Roman";} a:link, span.MsoHyperlink {color:blue; text-decoration:underline;} a:visited, span.MsoHyperlinkFollowed {color:purple; text-decoration:underline;} p.MsoPlainText, li.MsoPlainText, div.MsoPlainText {margin:0in; margin-bottom:.0001pt; font-size:10.0pt; font-family:"Courier New";} @page Section1 {size:8.5in 11.0in; margin:1.0in 65.95pt 1.0in 65.95pt;} div.Section1 {page:Section1;} --> </style> </head> <body lang=EN-US link=blue vlink=purple> <div class=Section1> <p class=MsoPlainText>Geiger’s Snes9x Debugger Mark 10</p> <p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt; font-family:"Courier New"'>Coded by: Michael Springer (t.geiger@gmail.com)</span></p> <p class=MsoPlainText> </p> <p class=MsoPlainText>This version of Snes9x was compiled by Michael Springer (aka Geiger). The official Snes9x team will not support it.</p> <p class=MsoPlainText>GSD does not support either Glide, Fmod, or JMA. </p> <p class=MsoPlainText> </p> <p class=MsoPlainText>GSD was built with Visual Studio 2005 and the latest Microsoft development kits. As such, you may need:</p> <p class=MsoPlainText> </p> <p class=MsoPlainText><strong><a href="http://geigercount.net/crypt/vcredist_x86.exe">Microsoft Visual C++ 2005 SP1+ Redistributable Package (x86)</a></strong></p> <p class=MsoPlainText><strong><a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=2da43d38-db71-4c1b-bc6a-9b6652cd92a3">DirectX End-User Runtime Web Installer</a></strong></p> <p class=MsoPlainText> </p> <p class=MsoPlainText><b><i>Due to the way some things work, and to save myself a ton of support headaches, this application will convert your ROM to be both headerless and non-interleaved if necessary. It will also use this format for saving.</i></b></p> <p class=MsoPlainText> </p> <p class=MsoPlainText> </p> <p class=MsoPlainText>Features:</p> <p class=MsoPlainText> </p> <p class=MsoPlainText>Debugger</p> <p class=MsoPlainText><i>Many of these features were originally coded as part of the commandline debugger, but have been ported to MFC.</i></p> <p class=MsoPlainText>- Run . execute (until next break)</p> <p class=MsoPlainText></p> <p class=MsoPlainText>- Next Op . displays current operation (the next instruction to be executed)</p> <p class=MsoPlainText>- Step Into . goes to next instruction, stepping into any subroutines</p> <p class=MsoPlainText>- Step Over . goes to next instruction, stepping over any subroutines (they are still executed)</p> <p class=MsoPlainText>- Step Out . executes until current subroutine returns</p> <p class=MsoPlainText>- Skip Op . goes to next instruction without executing the current operation (be careful with jumps and branches)</p> <p class=MsoPlainText>- Clear Text . Empties tracing buffer</p> <p class=MsoPlainText>- Reset . reset ROM execution</p> <p class=MsoPlainText></p> <p class=MsoPlainText>- Reset Debug . resets all internal debug and tracing variables back to their bootup values.</p> <p class=MsoPlainText>- Frame Adv . execute and advance one frame</p> <p class=MsoPlainText></p> <p class=MsoPlainText>- Vector Info . display CPU and APU vectors</p> <p class=MsoPlainText></p> <p class=MsoPlainText>- Sprite Status . display various information about onscreen sprites</p> <p class=MsoPlainText></p> <p class=MsoPlainText>- APU State . display various information related to the APU</p> <p class=MsoPlainText>- Sample Address . displays addresses for samples stored in the APU</p> <p class=MsoPlainText>- What’s Used . displays SNES features currently used by ROM</p> <p class=MsoPlainText></p> <p class=MsoPlainText>- Breakpoints . Set breakpoints</p> <p class=MsoPlainText>- Show Hex . show hex editor window</p> <p class=MsoPlainText>- Edit Registers . Edit registers PC, DP, Stack, A, X, Y, and Flags.</p> <p class=MsoPlainText></p> <p class=MsoPlainText>- Disassemble . disassembles specified range to display</p> <p class=MsoPlainText>- Trace From . Set auto-logging</p> <p class=MsoPlainText>- Dump RAM . dump memory to a binary file</p> <p class=MsoPlainText>- Dump Palette . displays color data</p> <p class=MsoPlainText>- What’s Missing . displays SNES features currently used by ROM that are not implemented</p> <p class=MsoPlainText> </p> <p class=MsoPlainText>Breakpoints</p> <p class=MsoPlainText>- Exec . break on execution of a SNES byte address (works for any address in instruction)</p> <p class=MsoPlainText>- Read . break on reading from a SNES byte address</p> <p class=MsoPlainText>- Write . break on writing to a SNES byte address</p> <p class=MsoPlainText> </p> <p class=MsoPlainText>Tracing</p> <p class=MsoPlainText>- Logging . log execution of CPU, APU, SA1, and Sound DSP instructions</p> <p class=MsoPlainText>- Trace From, To . trace from a SNES address after its been executed a certain number of times until it reaches another SNES address a certain number of times. Place a zero in any unwanted fields.</p> <p class=MsoPlainText>- Capture Every Pass . available on the Trace From dialog, this setting will trace a section of code to file every time its executed.</p> <p class=MsoPlainText>- Special Tracing . display data for DMA, HDMA, VRAM, DSP-1, or “Unknown Registers”</p> <p class=MsoPlainText> </p> <p class=MsoPlainText>Trace Options</p> <p class=MsoPlainText>- Trace Once . trace each instruction once only</p> <p class=MsoPlainText>- Squelch . squelches some of the less useful information (reduces trace file size by 25%)</p> <p class=MsoPlainText>- Split . splits trace files after 65535 lines (around 5 megs in squelch mode)</p> <p class=MsoPlainText>- Tabbed Output . produces tabbed fields for spreadsheets or databases</p> <p class=MsoPlainText> </p> <p class=MsoPlainText>Misc Options</p> <p class=MsoPlainText>- Tilde FF . use the tilde key (~) for fast forward, like ZSNES</p> <p class=MsoPlainText>- Alt Menu Behavior . causes the escape key to call the menu and pause emulation</p> <p class=MsoPlainText>- Auto Usage Map . automatically creates a usage map (see below)</p> <p class=MsoPlainText> </p> <p class=MsoPlainText>Usage Maps</p> <p class=MsoPlainText><i>Similar in purpose to the CDL files in FCEUXD, these maps contain usage information about what bytes in ROM and RAM are executed or read as data.</i></p> <p class=MsoPlainText>- Open Usage . open a usage map, wiping out current usage log</p> <p class=MsoPlainText>- Merge Usage . open a usage map, combining with current usage log</p> <p class=MsoPlainText>- Save Usage . save usage log to file</p> <p class=MsoPlainText>- Gen Offsets . generate a readable offsets file from the current usage log (tab-delimited text format)</p> <p class=MsoPlainText> </p> <p class=MsoPlainText>Hex Editor</p> <p class=MsoPlainText><i>Shows data being emulated. Data is live for both read and write.</i></p> <p class=MsoPlainText>- View selector . choose which of ROM, RAM, VRAM, SRAM, or ARAM to view</p> <p class=MsoPlainText>- Set Range . limit range of view</p> <p class=MsoPlainText>- Freeze . keep a range of RAM from changing (only one range in this version)</p> <p class=MsoPlainText>- Open TBL . open a TBL file for ASCII column</p> <p class=MsoPlainText>- Save ROM . save changes to file</p> <p class=MsoPlainText> </p> <p class=MsoPlainText> </p> <p class=MsoPlainText> </p> <p class=MsoPlainText>Version History</p> <p class=MsoPlainText>Mark 10 Release 1 (1.51 code base)</p> <p class=MsoPlainText>Released: 2010-01-26</p> <p class=MsoPlainText><em><strong>New</strong></em></p> <p class=MsoPlainText>- All log, usage, and dump files are saved to the Log subdirectory (user configurable)</p> <p class=MsoPlainText>- Hotkeys for Run, NextOp, StepInto, StepOver, StepOut, and SkipOp</p> <p class=MsoPlainText>- All hotkeys are user configurable (hotkey page 5)</p> <p class=MsoPlainText>- APU and SA1 now obey TraceOnce and Split</p> <p class=MsoPlainText>- SA1 breaks up code blocks and obeys Squelch.</p> <p class=MsoPlainText>- SRAM viewable in Hex Editor</p> <p class=MsoPlainText>- Register editing</p> <p class=MsoPlainText><em><strong>Changed</strong></em></p> <p class=MsoPlainText>- GSD has been integrated into the system changes the 1.51 base uses. This includes directory structures, config files, and other changes.</p> <p class=MsoPlainText>- SkipOp no longer reprints the previous line if its the same one being skipped.</p> <p class=MsoPlainText>- DMA trace now prints length in hex</p> <p class=MsoPlainText>- Breakpoint addresses and the PC register will accept up to eight characters and will filter out common address notation ("$x:\/")</p> <p class=MsoPlainText><em><strong>Fixed</strong></em></p> <p class=MsoPlainText>- Merging usage files caused a crash due to incorrect array sizes</p> <p class=MsoPlainText>- Execution breakpoints work for alternate RAM addresses (7E vs 00)</p> <p class=MsoPlainText>- Usage maps were saved even if Auto Usage was off</p> <p class=MsoPlainText>- Wrong bank for Opcode 4C (JMP)</p> <p class=MsoPlainText>- Write breakpoints in PPU operations caused data errors (which frequently caused code to take branches it otherwise wouldn't)</p> <p class=MsoPlainText>- Tab stops in breakpoint window</p> <p class=MsoPlainText> </p> <p class=MsoPlainText>Mark 9 Release 8 (1.43 code base)</p> <p class=MsoPlainText>Released: 2005-04-19</p> <p class=MsoPlainText><b><i>Fixed</i></b></p> <p class=MsoPlainText>- Accessing the valid extension list caused the Open ROM dialog to crash</p> <p class=MsoPlainText> </p> <p class=MsoPlainText>Mark 9 Release 7 (1.43 code base)</p> <p class=MsoPlainText>Released: 2005-04-11</p> <p class=MsoPlainText><b><i>Fixed</i></b><br> - Breakpoints no longer reset when resetting emulation<br> - Proper read / write breaking and usage map marking for MV and other dual mode commands<br> - Trace flag now resets when resetting emulation. Keeps certain visual problems from occurring when tracing is not enabled (Zelda: LttP). Visual issues will still be present when tracing is enabled though, due to the way the Snes9x code handles the trace flag.</p> <p class=MsoPlainText> </p> <p class=MsoPlainText>Mark 9 Release 6 (1.43 code base)</p> <p class=MsoPlainText>Released: 2005-02-22</p> <p class=MsoPlainText><b><i>Fixed</i></b></p> <p class=MsoPlainText>- Read / write breakpoints for DMA had some faulty logic, which often signaled a false positive</p> <p class=MsoPlainText> </p> <p class=MsoPlainText>Mark 9 Release 5 (1.43 code base)</p> <p class=MsoPlainText>Released: 2005-02-21</p> <p class=MsoPlainText><b><i>New</i></b></p> <p class=MsoPlainText>- Read / write breakpoint support for DMA and Fill RAM operations</p> <p class=MsoPlainText><b><i>Changed</i></b></p> <p class=MsoPlainText>- Fill RAM operation now displays RAM address for disassembly</p> <p class=MsoPlainText>- Hex Editor now displays LoROM as upper bank only</p> <p class=MsoPlainText> </p> <p class=MsoPlainText>Mark 9 Release 4 (1.43 code base)</p> <p class=MsoPlainText>Released: 2005-02-16</p> <p class=MsoPlainText><b><i>New</i></b></p> <p class=MsoPlainText>- Smarter disassembler. Allows setting of accumulator and x/y register status. Changes status flags for REP/SEP commands.</p> <p class=MsoPlainText>- Save ROM support for JMA archives (to an uncompressed file)</p> <p class=MsoPlainText><b><i>Fixed</i></b></p> <p class=MsoPlainText>- Memory Freeze</p> <p class=MsoPlainText><b><i>Removed</i></b></p> <p class=MsoPlainText>- Duplicate zlib code</p> <p class=MsoPlainText> </p> <p class=MsoPlainText>Mark 9 Release 3 (1.43 code base)</p> <p class=MsoPlainText>Released: 2005-02-15</p> <p class=MsoPlainText><b><i>New</i></b></p> <p class=MsoPlainText>- Debugger and Hex Editor windows now retain their position and size</p> <p class=MsoPlainText><b><i>Fixed</i></b></p> <p class=MsoPlainText>- Optimization problems caused some special chip games to work incorrectly (Super Mario Kart, Super Mario RPG)</p> <p class=MsoPlainText>- Occasionally, the main window will just disappear on startup. I have applied a band-aid style fix, so hopefully this will no longer occur</p> <p class=MsoPlainText>- Step Over no longer turns off an Execution breakpoint</p> <p class=MsoPlainText>- Step Out can now continue past a breakpoint</p> <p class=MsoPlainText><b><i>Changed</i></b></p> <p class=MsoPlainText>- Registry settings were being saved to the wrong name. All settings will be reset.</p> <p class=MsoPlainText>- PNG and Zip libraries updated</p> <p class=MsoPlainText> </p> <p class=MsoPlainText>Mark 9 Release 2 (1.43 code base)</p> <p class=MsoPlainText>Released: 2005-02-11</p> <p class=MsoPlainText><b><i>Fixed</i></b></p> <p class=MsoPlainText>- Write breakpoints did not always work correctly</p> <p class=MsoPlainText>- Saving the ROM no longer crashes if the file cannot be opened for write access</p> <p class=MsoPlainText><b><i>Changed</i></b></p> <p class=MsoPlainText>- Hex editor did not “live” update when in step mode</p> <p class=MsoPlainText> </p> <p class=MsoPlainText>Mark 9 (1.43 code base)</p> <p class=MsoPlainText>Released: 2005-02-10</p> <p class=MsoPlainText><b><i>Changed</i></b></p> <p class=MsoPlainText>- Build recreated from scratch. Essentially, this is a brand new product.</p> <p class=MsoPlainText> </p> <p class=MsoPlainText>Mark 8 (1.43-dev code base)</p> <p class=MsoPlainText>Released: 2004-08-13</p> <p class=MsoPlainText><b><i>Fixed</i></b></p> <p class=MsoPlainText>- The last release was not an up-to-date compile, so some of the features I mentioned were missing</p> <p class=MsoPlainText>- NMI / IRQ messages silenced</p> <p class=MsoPlainText>- Ending a trace log with Num-Mult or Num-Div will now reset the line counter. The first log will no longer be only a few hundred kilobytes long.</p> <p class=MsoPlainText>- A debug log file for Windows messaging, left accidentally in the last release, has been removed</p> <p class=MsoPlainText> </p> <p class=MsoPlainText>Mark 7 (1.43-dev code base)</p> <p class=MsoPlainText>Released: 2004-07-13</p> <p class=MsoPlainText><b><i>New</i></b></p> <p class=MsoPlainText>- Incorporated 1.43-dev code base</p> <p class=MsoPlainText><b><i>Changed</i></b></p> <p class=MsoPlainText>- Split registry settings off from normal Snes9x (you will need to manually reset everything)</p> <p class=MsoPlainText>- Converted the following dialogs to MFC: </p> <p class=MsoPlainText> About</p> <p class=MsoPlainText> Add Cheat From Search</p> <p class=MsoPlainText> Cheat Search</p> <p class=MsoPlainText> Play Movie</p> <p class=MsoPlainText> Record Movie</p> <p class=MsoPlainText>- Cheat Search dialog has been slightly rearranged</p> <p class=MsoPlainText>- Some code optimization</p> <p class=MsoPlainText><b><i>Fixed</i></b></p> <p class=MsoPlainText>- Reset trace memory now resets all trace variables and stops tracing if active</p> <p class=MsoPlainText>- Trace files now always append a four digit hex sequence number</p> <p class=MsoPlainText> </p> <p class=MsoPlainText>Mark 6 (1.42 code base)</p> <p class=MsoPlainText>Released: 2004-06-11</p> <p class=MsoPlainText><b><i>New</i></b></p> <p class=MsoPlainText>- Alternate menu behavior (ESC will call menu and pause emulation)</p> <p class=MsoPlainText>- Trace To added to Trace From dialog. Only trace what you want.</p> <p class=MsoPlainText>- Capture Every Pass added to Trace From dialog. Every time a section of code is executed, it is traced to file.</p> <p class=MsoPlainText>- Reset Trace Memory command added to menu</p> <p class=MsoPlainText>- Aspect Ratio stretch available in Display Settings</p> <p class=MsoPlainText><b><i>Fixed</i></b></p> <p class=MsoPlainText>- Trace memory now resets when a new game is loaded</p> <p class=MsoPlainText>- No longer produces a meaningless “out.txt” file</p> <p class=MsoPlainText><b><i>Changed</i></b></p> <p class=MsoPlainText>- Open ROM dialog converted to MFC (major internal changes)</p> <p class=MsoPlainText>- Trace and Trace All will now show a checkmark in the menu when active</p> <p class=MsoPlainText>- Some code optimization</p> <p class=MsoPlainText><b><i>Removed</i></b></p> <p class=MsoPlainText>- Trace command line support</p> <p class=MsoPlainText> </p> <p class=MsoPlainText>Mark 5 (1.42 code base)</p> <p class=MsoPlainText>Released: 2004-03-22</p> <p class=MsoPlainText><b><i>New</i></b></p> <p class=MsoPlainText>- Requires MFC</p> <p class=MsoPlainText>- Menu driven support for tracing commands</p> <p class=MsoPlainText>- Some trace settings now stored in the registry</p> <p class=MsoPlainText><b><i>Fixed</i></b></p> <p class=MsoPlainText>- Some general code optimization</p> <p class=MsoPlainText> </p> <p class=MsoPlainText>Mark 4 (1.42 code base)</p> <p class=MsoPlainText>Released: 2004-01-07</p> <p class=MsoPlainText><b><i>New</i></b></p> <p class=MsoPlainText>- Added Trace From, Trace Squelch, and Trace Split commands</p> <p class=MsoPlainText><b><i>Fixed</i></b></p> <p class=MsoPlainText>- Removed abbreviated commands</p> <p class=MsoPlainText> </p> <p class=MsoPlainText>Mark 3 (1.42 code base)</p> <p class=MsoPlainText>Released: 2003-12-05</p> <p class=MsoPlainText><b><i>New</i></b></p> <p class=MsoPlainText>- Switched to C Core (ASM Core crashes)</p> <p class=MsoPlainText> </p> <p class=MsoPlainText>Mark 2 (1.41-1 code base)</p> <p class=MsoPlainText>Released: 2003-10-16</p> <p class=MsoPlainText><b><i>New</i></b></p> <p class=MsoPlainText>- Supports trace and trace all functionality</p> <p class=MsoPlainText>- Trace can be activated by either NumDiv key press or using -trace as a command line argument</p> <p class=MsoPlainText>- Trace All requires either NumMult or -traceall</p> <p class=MsoPlainText>- Trace files can use -tabbed for tabbed field output (for spreadsheets or databases)</p> <p class=MsoPlainText>- All trace files have extra line breaks after subroutine jumps and returns</p> <p class=MsoPlainText>- A function level field has been appended to the end of each line. Indicates the function depth for any particular instruction.</p> <p class=MsoPlainText> </p> <p class=MsoPlainText>Mark 1 (1.41-1 code base)</p> <p class=MsoPlainText>- Test version only</p> </div> </body> </html>