Skip to main content
1 of 4

I didn't analyze the code, but I'd risk to say that the state of Mario consists of 2 different variables:

  • big or small mario state
  • big or small mario image

When you're hit and you end a level, the game only updates one of the variables: mario state, and doesn't have time to update the other one, resulting in an inconsistency. This should not happen but it did.

Now when you pick the mushroom, since the state is known as "small mario", the game probably toggles the sprite (by EORing it), so it swaps it, which can explain why mario doesn't remain big, but swaps to small.

And note that there is no firing frame as small. In this video https://www.youtube.com/watch?v=v2lVgHaRDf8 we can witness that firing mario is small unless when he fires. The frame where he fires is the one from a big mario.

Now why are there 2 variables/states for the same thing? probably for speed purposes. It's easier to pre-compute a state when changing it, than to recompute it each time, specially on those not-that-fast processors.