Project64 Debugger 1 2 3 4 5 ... 7 »
Users browsing this thread: 1 Guest(s)

Some games that I would like to hack don't run well in Nemu, so I'm making a new debugger for Project64

• MIPS debugger
    º Built-in assembler functionality for testing code
• Memory read and write breakpoints
    º Support for cart-to-RAM DMA writes
• Symbol management for subroutines and variables
    º Live view of variable values
• Cart-to-RAM DMA logging
    º RAM-ROM address conversion
    º 4-byte ASCII file signature reporting
• Javascript API
    º CPU read/write/execute event hooking
    º Access to virtual memory
        • JS variable and object binding
    º Access to cartridge memory
    º Access to general purpose and floating point registers
    º Basic socket and server support
    º Console logging & input evaluation
• Static RDRAM allocation
    º Memory base is always 0x10000000 for programs like Cheat Engine


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. See apidoc.htm for javascript API documentation.

Video demos

If you have any suggestions or bug reports feel free to post them!
(This post was last modified: 20-07-2017, 05:06 PM by shygoo.)

I just wanted to say, having had the same problem wit Nemu, that this is fantastic! Already it's great and your TODO list looks to make it even better.
Thanks for releasing it Smile

Once nice feature would be highlighting uses of the selected instructions registers, so for example, if the selected instruction is LW T9, 0x0000(A0) you can quickly scan up the list to see where A0 is set, and down the list to see where T9 is used.
(This post was last modified: 26-09-2016, 07:23 AM by jaytheham.)

Awesome idea! It will be included in the next release.

Will it be possible to keep track of the calling stack with this debugging tool?

One thing that might be interesting to see for the purposes of reverse engineering is to be able to define labels for jump and branch instructions, preferrably through some external file. Would be really great is if it also allowed some sort of scripting so that you could define labels for code addressed to virtual spaces. For example, Ocarina of Time's boot animation code is addressed to 80800000, which is then translated to someplace in RAM

Function labeling combined with a callstack would be truly great Big Grin

Thanks so much for this Shygoo! Here's a peak at what I've cooked up with this PJ64 debugger that he's put together:

New snapshot is up - here are some notable new features:
Added javascript api (basic support; just runs whatever is in _api.js & _script.js in a single context on startup)
Made GPR registers in debugger proper 64-bit
Added PI register tab
Memory write breakpoints now catch cart-to-ram DMA transfers
Other features like register usage highlighting, a stack frame viewer, and a symbols manager have also been started - these are far from finished though. Smile

See /apidoc.htm for javascript api documentation


Just been using the latest version, great stuff Smile One minor niggle is that the font in the commands window isn't monospace, so if there are lots of As in a register, for example, the last value gets cut off.

Project64 Debugger 1 2 3 4 5 ... 7 »
Users browsing this thread: 1 Guest(s)

  EN ・日本語