Project64 Debugger
#1
The Project64 debugger is a debugger I've been working on as an alternative to the outdated Nemu64 emulator. It features roughly everything Nemu has, plus a stack trace, Javascript API, DMA logger, and a symbol manager.

Debugger feature overview & todo list: http://shygoo.net/pj64d/
Javascript API documentation: http://shygoo.net/pj64d/apidoc.php
Project64 repo: https://github.com/project64/project64
Development builds: https://www.pj64-emu.com/nightly-builds

Setup

How to use
To toggle a PC breakpoint, double click an instruction in the command viewer. To add a memory breakpoint, right click bytes in the memory viewer or press the + button next to the breakpoint list in the command viewer.

Video demos
Javascript CPU event hooking example
Javascript socket example
Debugging example (old)

If you have any bug reports, questions or suggestions, feel free to post them!

(This is a continuation of the Origami64 thread, which I'm no longer able to maintain.)

[Image: KJhd94F.png]
Reply
#2
Changes since the last post in the old Origami64 thread:

Javascript API:
    Add events.onopcode
    Add events.ongprvalue
    Add file system interface (fs)
    Make AddressRange inclusive (fix ADDR_ANY)

Commands window:
    Support more commands in code editor
    Add "Step over" button
    Improve GPR read/write highlighting
    Fix crash from viewing unmapped memory

Memory viewer:
    Add memory locks feature (interpreter mode only)
    Make auto-refresh optional
    Fix crash from viewing unmapped memory (can now view memory-mapped registers)

Stack viewer:
    Fix crash from viewing unmapped memory

I also went ahead and fixed PJ64's settings window for Wine, so Linux users shouldn't need to manually edit the config file anymore.

The development build section on PJ64's website was made public (https://www.pj64-emu.com/nightly-builds), so I'm no longer uploading github releases to my personal fork.
Reply
#3
Added this CPU logging tool last night:



When "Enable CPU Logging" is checked, the PC, opcode, and GP/FP register states are pushed to a list at the start of every CPU step. Setting "Buffer size" sets the maximum number of states it's allowed to log before it starts tossing out old states. Double-clicking an entry in the list brings up the PC address in the command viewer.

I also made it so that when there is a CPU-related error, instead of just showing a nondescript error message and quitting, PJ64 will now pause and show the commands window at the exception vector, so the COP0 registers can be checked for the cause of the error.
Reply
#4
Added a window that lets you pick which exception codes the debugger should break on:



For most games you can check everything except interrupt and coprocessor unusable (and watchpoint? may be a bug). Some games which use TLB exceptions to their advantage may need the TLB-related codes unchecked.
Reply
#5
I upgraded the memory search tool to look and feel like Cheat Engine:

[Image: 68747470733a2f2f696d6167652e70726e747363...672e706e67]

Added features include:
  • A watchlist
  • Faster scanning with no result limit
  • Floating point support
  • A scan option for strings of unknown 1-byte encoding
  • Simple gameshark code creation

Watchlist data is saved/loaded automatically per game.
David liked this post
Reply




Users browsing this thread: 1 Guest(s)