In my last video, I showed a list of all of the (intended) powerups in Super Mario World. These included the Super Mushroom, Fire Flower, Cape Feather, Starman, 1up mushroom and moving coin.
The six standard "powerups".
These are indeed all of the intended powerups in the game, as per the definition I made in the video. What seems to be missing here? I got a handful of comments asking about the P-balloon and why it doesn't count. I completely forgot about it, since I know how it works and how it is not technically a powerup. So let's see what it actually is.
I think the consensus is that the "P" on everything stands for "power" so this is a Power Balloon. But not a powerup of course.Despite being an item that temporarily changes Mario state (like the Starman giving invincibility), the P-balloon that makes Mario puffy for a short period of time does not act like a powerup according to the game's code. Instead, it is treated as a held object.
Yes, a held object, just like a Koopa shell, P-switch, key, etc.
The P-balloon is just an ordinary item, until Mario touches it, that is. At that point, it triggers the animation to make Mario puffy, but it doesn't get deleted or despawned. It stays loaded in memory, and in fact stays in Mario's hands while he has the effect. The P-balloon is just invisible at this time.
This is what it would look like if the P-balloon was not made invisible while Mario was puffy.
This explains a few things about the P-balloon. You cannot grab an item while Mario is puffy. This is because he is technically already holding the P-balloon, and you can't pick up a second item if you're already holding one.
It would be difficult to pick up an object half the size of your body if you couldn't touch your hands together, I guess.
You also will get an item via the goal post if you end the level while puffy. This is because any item held by Mario when he ends the level will turn into another item.
I like to think that this wasn't actually intended, but during testing (which I'm sure this case actually happened), the developers decided to just keep it as is as a reward for beating the level before the P-balloon timer ran out.
Why is the P-balloon a held item while the Starman is a true powerup? Well, when Mario collects a Starman, a certain timer in memory gets set and counts down. This is the invincibility timer. This is what determines if Mario has invincibility or not. Once it decrements down to zero, Mario loses the status. It is the general high-level game logic that is responsible for checking this timer and giving Mario invincibility if he needs it. The Starman sprite has no purpose after it is collected, and therefore can be removed.
However, when it comes to the P-balloon, it's a different story. The code that is responsible for Mario's floaty controls, different graphics, and actually decrementing the P-balloon timer is found within the P-balloon sprite's code itself. Therefore, if the P-balloon despawns or is otherwise removed, Mario will instantly return to normal. Therefore, the P-balloon has to stick around while Mario is puffy, and can only be removed once the P-balloon timer hits zero.
The P-Balloon is also responsible for this animation playing when the timer is about to run out.
The P-balloon is actually part of a family of sprites that all share the same code. These are the P-balloon, Yoshi wings, winged golden 1up, and key.
These sprites have IDs $7D through $80, all in a nice group.
All of these sprites, by default, float in a sinusoidal pattern, and slightly upward. This means that the key, by default, has wings. (This is why it has wings if you were to glitch it into your item box and then press select to release it.) The default state of the Yoshi wings is actually a winged red coin. Normally you only find these wings in a ? block, and when they are revealed, they are put into a state that makes them act like Yoshi wings instead. The flying red coin (worth 5 coins) and golden 1up are both unused in the final game.
The golden mushroom is only worth a single 1up--maybe it was meant to be something else (or colored green) at some point?
There's also a bit of code that goes unnoticed regarding the Red Coin/Yoshi Wings sprite. The coin sprite has its palette cycle through a bunch of colors. However, it only does this if the sprite is in the Yoshi Wings state. And, when the sprite is in Yoshi Wings state, the coin object is hidden, so you can't actually see this happening. Makes you wonder if the Yoshi Wings item was originally going to be something else that had wings, and flashed like this!
Here's what the wings sprite looks like if I force the coin to always show up!
Being in the Yoshi Wings state is also what causes this sprite to spawn sparkles, to make it look extra special.
You can support Retro Game Mechanics Explained on Patreon here! Any and all support is greatly appreciated!
