Added Warzard, or Red Earth as it was called in its limited distribution outside Japan, to the CPS3 script. The object handling and hitbox system has almost nothing in common with the Street Fighter III series, and I had to work from scratch to get it out.
The biggest thing that threw me off is, when reading from an register plus an immediate offset, the offset is inexplicably doubled. For example, this opcode ends up reading from R6 plus $0C:
06031340: MOV.W @($06,R6),R0
I couldn't figure out why the character's X-position, which is at offset $0C, wasn't getting read in the trace dumps. This only affects word reads. Byte reads are as expected.
Every object has eight potential boxes: one push, three vulnerability, two attack, and the last two seem to be for special throws. For example, Hauzer's charge knocks down if the red box hits, but does the gore 'n' toss if the yellow box touches your pushbox first. The heroes' special throws, such as Leo's SPD and Tao/Mai Ling's headstomp, are also handled this way. However, the normal throws are actually hardcoded and require a breakpoint to see.
Leo's sword and the wand of Tessa/Tabasa are handled as separate objects. By virtue of this they can negate projectiles, unlike Kenji's ninjazooka. That long red box below Leo during grounded sword attacks is real, though you'd have to hack the opponent under the floor to hit with it.
The camera zoom is controlled by the word at 0x040C006E, for all CPS3 games it seems. I was able to get the boxes to adjust to the scaling, which is important in Warzard because it zooms out when the opponents are at full screen. I should figure out how to apply this to the SF3 games as well, though it only takes effect in superfreeze situations. Unfortunately, FBA can't read from that region of memory, so I had to find mirrors of it in lower RAM for each of the games.
As mentioned earlier, 2nd Impact and New Generation have already been added, but no changes to 3rd Strike have been made other than making the extended vulnerability boxes a different shade of blue. I think Fugo's explanation that they are responsible for attack priorites is true. I'll look into that. I might also take a closer look at Warzard later. Right now my priorities are finishing up this script and testing out the new FBA-rr.
Really good work, as always.
I thought fba-rr RAM range issue has been fixed in latest build, as 3S active hitboxes are now directly available?
Posted by: ESN | 10/28/2011 at 02:32 AM
Ah Red Earth the test engine for the cps3 too bad this engine was only for Jojo's (Venture and Bizarre Adventure) and a canceled game.
Posted by: jedpossum | 10/28/2011 at 10:24 AM
ESN: I guess the 02xxxxxx, 04xxxxxx and 06xxxxxx regions are all handled differently.
Here's a simple script that reports the correct value in mame but always zero in fba:
emu.registerafter(function()
emu.message(string.format("%x", memory.readword(0x040C006E)))
end)
But this one's not really a big deal since there are copies of it in RAM.
jedpossum: What canceled game?
Posted by: dammit | 10/29/2011 at 01:22 PM