pj64team / Project64-Legacy

Finishing what we started.
79 stars 7 forks source link

Support for DMAs in watchpoint handler #54

Closed parasyte closed 5 months ago

parasyte commented 1 year ago

This partially resolves points 2, 3 and 4 in #49.

For point 2, watchpoint addresses are now normalized to physical address space. The GUI will reject addresses outside of KSEG0 and KSEG1, but will allow addresses below 0x2000_0000; they just get interpreted as physical addresses. (This is the wrong way to do it, but it was easy.)

For point 3, DMAs started by VR4300 now notify the debugger when memory accesses occur. DMAs started by plugins do not (point 5).

For point 4, DMAs are able to be compared against watchpoints over a large memory range. Users are NOT able to define watchpoints over a range yet; that requires UI and watchpoint API changes.

The watchpoint API changes needed are passing a "size" parameter when adding, removing, and toggling watchpoints, so that it can iterate over the full range in the watchpoints map.