My RAM watch file. There's still much to discover though.
- The "facing flags" have only visual effect.
- The "Fighting condition" variable determines whether the character is alive, dead or frozen at the round start.
- The "character" variables represent current character fighting. You can use it to change fighters during the battle, but without freezing it'll revert back at the start of the next round.
- "Special" charges determine whether the character can or can't perform a special. The charge is accumulated by holding certain direction button and has a set max value for each character. When the charge is maxed, the player get's a bit of time to perform the special. Some additional notes on that:
- All the characters have to charge. Yet Shredder, Leo and Hothead have very low charge values so they get their moves working almost immediately.
- You can start accumulating the charge at almost any state, except the pause and few other conditions.
- Raph has the option to start his special way before his charge is maxed. The value of charge accumulated will determine how far his attack will travel.
- When the direction button is released, the charge isn't lost immediately, yet goes down rapidly. But it still enables Raph to max out his charge, perform some other moves and then activate the special. This may lead to some impressive cancels, considering it's possible to accumulate charge while performing the special.
- It seems impossible to perform a special while ducking. So if the character gets charge by holding the "down" button, he has to wait several frames to get up before performing the move. This often leads new players to fail at specials. It should be noted that all characters are forced to duck before and after jumping (although jump punch seems to be an exception).
- The pause button freezes the charge values. It doesn't seem to affect the way special are performed. The AI stops any activity during the pause, yet it seems to be impossible to affect his charge accumulation process.
- The values at 0x0570 seem to be reflecting the current state of the character somehow, yet their logic is unknown to me.
- The "Event Timer" at the end of the list is used to implement the time limit for such things as logo screen, demo mode and some other things. Freeze it during the demo and watch how AI actually tries to play story mode.