There's a sprite in Super Mario World that is commonly referred to as the "Invisible Solid Block". You may have heard it in passing in my last video, because it too is technically a powerup sprite despite not being an intended collectable.
Lunar Magic (a Super Mario World level editor) displays the sprite as a translucent brown block, so that's why that graphic is used here.
What does this sprite actually do, and where is it found in the game? Why does it exist? Turns out this is one of those mysterious things that really can't be explained without talking to one of the game's developers.
Sprite number $6D is the invisible solid block sprite. It does exactly what you would think. It's just a single solid tile with no graphics associated with it.
Can you find where it is?
Now, this is an interactive sprite entity and not part of the tile-based level layout. This means this sprite behaves just slightly differently than an invisible solid tile just due to the different collision detection routines used for tiles as opposed to sprites.
Being a sprite, it can also be placed on top of any tile in the level, effectively turning it solid.
Woah, it's like magic!
So where is this sprite used? Well, the code for the invisible solid block is actually a more generic sprite routine that is responsible for making any sprite solid. It's just that sprite $6D only calls this subroutine and nothing else.
This is mostly used by various platforms, Dolphins, Bowser Statues, Message Block, and red ? block switch.
Mario can stand on all of these sprites (not an exhaustive list).
Sprite $6D is found in the game in its basic state in four different levels: the 4 rooms that hold the 4 different Switch Palace switches.
Now can you spot it?
So, because of reasons I'll talk about eventually, the outer corner tile here in the Switch Palaces is not a solid tile. So in order to prevent Mario from being able to enter this tile, they placed the solid invisible block sprite on top of the corner as a quick patch up. Due to the differences in collision like I mentioned, it is very easy to get Mario's feet to catch on the edge of this block if you jump at just the right spot.
It's really easy to "wall jump" off of too!
I had previously personally believed that maybe sprite $6D was originally going to be some sort of door or gate that would open when Mario got near to the big ! switches. That would sort of explain this anomaly--it's leftovers from something that ended up getting scrapped. However after looking into it more while writing this, I no longer think that is the case, and I do actually believe that it was honestly just a quick fix due to the tile being non-solid (again, I'll get to that later).
One small thing I'd like to point out first is where this sprite's code is in the game's ROM. For processing sprites, there is a massive jump table with basically all of the sprites in the game (like a huge switch statement). Often, sprites that are very similar share code, and so they all jump to the same block of code, where they are differentiated further.
;$01865E: Admist a large jump table for sprite processing
dw $8815 ; $49: Moving pipe lip
dw $8763 ; $4A: Green ? Orb
dw $8801 ; $4B: Pipe Lakitu
dw $87CF ; $4C: Exploding Turn Block
dw $E2CF ; $4D: Monty Mole (from ground)
dw $E2CF ; $4E: Monty Mole (from wall)
dw $87BB ; $4F: Jumpin' Piranha Plant
dw $87BB ; $50: Jumpin' Piranha Plant (fire)
Notice the Monty Moles and Piranha Plants have the same pointer.
The invisible solid block is bundled with a couple of other sprites, but you'd never be able to guess what they are.
;$0186A2: Amidst a large jump table for sprite processing
dw $8848 ; $6B: Wall Spring (left)
dw $8848 ; $6C: Wall Spring (right)
dw $875E ; $6D: Invisible Solid Block
dw $875E ; $6E: Dino Rhino
dw $875E ; $6F: Dino Torch
dw $87ED ; $70: Pokey
The Dino Rhino and Dino Torch! Then in the code block for these sprites, the very first thing that is done is checking the ID (again) to separate out the Invisible Solid Block.
;$039C34 - Invisible Block & Dinos Main Routine
InvisBlockDinosMain:
LDA SpriteNumber,X ;\ Check the sprite's ID
CMP #$6D ;/
BNE RunDinos
JSL RunInvisibleBlock
RTL
Gotta love extra inefficiency.
My guess is that sprite $6D used to be the sprite ID for a different type of Dino Rhino that could also spit fire (there are graphics in the game for fire-spitting Dino Rhinos), however this is just speculation. When the fire-spitting variant was cut, the invisible solid block took its ID number and slotted in right there (maybe it was made specifically for the Switch Palaces, who knows). Then the original jump table wasn't modified (that table and this code were in different banks, if that has anything to do with it), and a check was added here instead.
Here is where I was going to explain why the Switch Palace corner tile is not solid, but I realized it may double or even triple the size of this post, so I'll leave today on a cliffhanger and talk about it next week! Here's a very vague hint.
What a wild mix a graphics all contained in the same place...
You can support Retro Game Mechanics Explained on Patreon here! Any and all support is greatly appreciated!
