I really like the basic movement changes, but I feel like the actual movesets themselves are a bit...lacking. Not because they don't work or they aren't useful, far from it, they do exactly what they're meant to do and are fun to use. It's just that there are a lot of situations where you can't really do anything. To show what I mean, I'll give a few examples.
Rolling - Pressing Spin or Shield does nothing when Rolling (with the exception of using the Whirlwind Shield in the air). When in the air, pressing Jump also does nothing.
Spring Curl - You can cancel the Spring animation into the Jump animation, but for some reason you can't use your Jump Action or Shield Abilities afterwards.
Tails - Pressing Spin or Shield during Flight does nothing, which is especially weird for Spin since that used to be the descent button. Pressing Shield on the ground also does nothing, and pressing Spin in the air does nothing as well.
Knuckles - Pressing Spin or Shield while Gliding does nothing, as do both pressing Shield on the ground and pressing Spin in the air.
Amy - Pressing Spin during her Hammer Twirl does nothing. For this one, I have a suggestion. Since pressing Spin is how Amy used to activate her Hammer Attack in Vanilla SRB2, and Spin is left open, it could be implemented here as a way to cancel the Hammer Twirl into the Hammer Bounce. Speaking of, pressing Shield during or after the Hammer Bounce does nothing as well.
Fang - Pressing Shield on the ground does nothing. Another suggestion for this is that you could implement Fang's Bomb Throw from his boss fight as his grounded Shield ability. Similarly, pressing Spin or Shield while Bouncing also both do nothing. Lastly, maybe Super Fang could drop Bombs when he bounces like in the boss fight too?
Metal Sonic - Pressing Shield on the ground during DashMode does nothing and pressing Spin or Shield while using Jet Boost also both do nothing. A possible solution for Jet Boost (as well as Flying or Gliding) could be to allow them to be canceled with the current version of the Spring Recurl.
Shield Abilities - The Whirlwind Shield is the only Shield that can be used while Rolling or Falling, which (while faithful to vanilla SRB2) has always confused me as to why all Shields don't do that. That could fix a lot of other instances in the Air where pressing Shield does nothing (like Flying, Gliding, Hammer Bouncing, Bouncing, or Jet Boosting). If it's a matter of wanting the Whirlwind Shield to be unique, that same goal could be accomplished by having it lower the player's gravity. Not only that, but pressing Jump still activates the Whirlwind Shield despite now having a dedicated button, which is one of the things limiting the Spinning state from being able to use Jump Actions.
One more thing as well, I occasionally get an error when starting a level along the lines of Z_CheckHeap with varying numbers after. If nothing else, could you please fix that?