I looked for the Rotodisc, but the sprite asm says that it also suffers from the same problems. A quick search through the collision detection routines show that the code treats
Spinjumping the same as
being on Yoshi (regardless of any jumping state) this is most likely linked with the glitches. I did some testing on my own by taking the Ball 'n chain sprite and changing the following code:
Code: Select all
LDA !RAM_OnYoshi
PHA
STZ !RAM_OnYoshi ;not on yoshi during the collision detection routine
JSL $01A7DC ; interact with Mario
PLA
STA !RAM_OnYoshi ;restore value
Now the collision detection with the ball is correct, and hits Demo directly rather than making Yoshi flee. This side effect is actually what I need for my level since you'll need his flying abilities throughout that sublevel. The hitbox is bit higher up, but I don't think it's too bad plus that could also be fixed.
However, Yoshi still flees when making contact with the center of the sprite. Apparently, there is something beyond the BnC's direct sprite code that cause damage here! I could put a muncher there to make it look normal, but I'll try to find where this collosion is caused from.