The CPS2 hitbox script can now show throwboxes for all its supported games with the help of breakpoints. Throwability boxes have also been added, which as usual are enabled with hotkey 5.

The third user-relevant change is that the validity checks that determine when to not draw the boxes have been made more accurate for all the box types. So for example, the blue boxes in vsav will disappear exactly when the opponent can no longer be juggled, and white boxes won't reappear until exactly the frame when the opponent can be thrown again.
This was achieved by studying trace after trace of asm dumps, sometimes using breakpoints or watchpoints to manipulate branch results, rather than my old guess & check methods. In some cases the solution dropped in easily, but some required swathes of new code to handle correctly. Once again I found that newer games are more systematic, while older games do everything the hard way.
BPs are applied in the same manner as described in the random SF2 damage post. That means most throws can only show up in MAME-rr with the debugger active. However, you can continue to use the new version normally in FBA-rr or without the debugger and still get all the rest of the functionality.

The actual breakpoint command to put in is printed in the Lua console when the game starts. Just copy it in and hit enter. To make it less tedious for the user, it's set up so that all BPs are merged into a single line. The BP addresses vary between different romsets (parents and clones), but the script is set to automatically adjust to whatever version you are running. Occasionally the game may glitch up as the BPs are entered, but this only happens once. Reset or load a savestate to proceed.
Be sure to enter bpc
or bpclear
before quitting or running a new game or MAME-rr will crash. If you want to run MAME with the debugger without having to launch from a command prompt window every time, you can create a batch file with the launch command in it and then just double click the .bat file.
Since these breakpoints work by scrawling some data into RAM where Lua can read it, it's possible they can interfere with the normal operation of the game if that RAM space is used for something else. It's difficult to confirm for certain there's no interference going on. (Ideally BPs would pass the info directly to the script. And ideally the user wouldn't have to deal with any of this.)
As was done with SF2, throws are inserted one frame ahead in the framebuffer so that they'll be drawn on the exact frame(s) they are attempted and not one frame too late. If the boxes aren't showing up at all, sometimes ground throws don't get attempted unless the opponent is on the ground, and likewise for air.
Below I'll discuss some findings for each game.
Recent Comments