Memory breakpoints can be managed from the Memory window by right-clicking values
Individual scripts are now stored in "/Scripts"
The API script is now compiled into the binary
Scripts can be run from the Scripts window by double clicking them
Symbols window is somewhat functional
Some additions in this snapshot are half-baked but I figured I'd put something up right now because it's been a while since the last update and having convenient memory breakpoints is important.
Much better now!
Double-clicking a script name in the list runs a script in its own thread. Yellow means initialising, and green means the event loop is running and events are waiting to fire. If the selected script is in its event loop state, the text input on the bottom can be used to evaluate code within its context (press Enter to run the code, up and down arrows to scroll through input history).
Opening the symbols window while a game is running creates a file in "/Save" named "[GAME NAME].sym". Clicking the "+" button adds a new symbol (it doesn't save to the file yet, but manually edited files do work). Double-clicking a symbol with the "code" type opens its address in the commands debugger, and doing the same for any other type opens the memory viewer.
Symbol names with the "code" type show in the command debugger's "Symbol" column and can replace jump targets:
The format for the symbols (.sym) file is plaintext CSV where each line has a hexadecimal address, data type, name, and an optional description in that order. This might be tweaked later to be a superset of Nemu's COD file format for compatibility.
Valid symbol types are: code, data, u8, u16, u32, s8, s16, s64, float, and double.
A symbols file might look something like this:
SUPER MARIO 64.sym Wrote:802CA8E8,code,exampleProcA
802CB1C0,code,beh_mario_a,mario behavior function
8033B1AC,float,mario_x,Mario's x position
I'll be sure to address the register textbox overflow and unfinished bits in the next snapshot, hopefully it won't take long