Originally posted by ThomasI'm not quite sure what you're trying to do here. Are you checking the sprite status after calling the Mario-sprite interaction routine ($01A7DC) or something? Because that shouldn't really work since most causes of death will set a different sprite state than immediately 0 (specifically 2-4, plus 5 if you're also running object interaction somewhere). Your best bet would just be to immediately clear $1938 if the sprite status is less than 6 following that routine's call.
Yeah, in retrospect I don't know how that ended up working for non-spin kills. In the end I just stuck the code in uberASM instead (cycle through sprites, and if they're that sprite and status 0, then reset their entry in the respawn table). eh~
Originally posted by ThomasYour code is partially correct, though you'll want an AND #$01 after loading $1588 to make sure the sprite is specifically off the ground. To handle the slope issue, you should change the way you set your sprite's "on ground" Y speed; rather than clearing the speed, you should assign a downwards value when the sprite is on a slope (SMW uses #$18). See the subroutine SMW uses at $019A04.
Oh hey, I didn't even notice the STZ $AA,x there - guess I didn't take as close a look at the code I copied as I should have. Replacing that with a copy of SMW's code, plus adding that AND #$01 at the top, did the trick. Thanks a bunch!