These 4 blocks are useful for puzzle/balloon levels that interact with the player differently, these include:
-a reuseable solid block that makes mario balloon if he's hitting the bottom or spinjumping the top.*
-an "anti-balloon" block that takes away mario's balloon.
-a block that is solid when mario isn't balloon mode.
-a block that is solid when mario is balloon mode. (balloon timer won't expire when mario is inside, to prevent dying inside/falling inside the now-solid block).
*Note that it actually spawns the sprite on the player, rather than setting the timer and flags, (due to the fact that mario has no controls when doing that). You can use any SP4 and glitch graphics still aren't visible (you see some pixels around mario but not a major problem).
NOTE2: balloon mario is immune to damage if he is inside balloon_passable.asm so he can't die instantly afterwards (even though he isn't small), I also use a check so it doesn't lower his flashing invulnerabilty timer (when if he takes damage, gets the balloon, then touches the balloon pass block while prior flashing, wouldn't set it to 1 (being the minimum value the block allows), thats why there is a branch)
Tester's Note: There's like a 1/100 chance you don't collect the P-balloon after it spawns when hitting the corner in some weird way. Can't really reproduce it with certainty. Maybe you want to set SP4 after all.