Forgive me in advance for the length of this post, but I will try and explain how I think the rules should be laid out to allow/disallow what we want.
Sorry in advance for the complexity of this post, I blame my math/programmer/proof background, also I apologize for my lame MS Paint Skillz.
I am also going to explain how the game is programmed in terms of tiles, so that could be VERY confusing to some people. If you want to get right to the "rules" skip down to the big
RULES ARE HERE section
*clears throat* Ahem *clears throat*
First I will start by defining "tiles". Tiles are the basic level building mechanic in LA(dx). Each screen is made up of a grid of tiles that is 10 across x 8 tall. Take for example this room in dungeon 8 where one gets the fire rod,
If you break it up into a grid, think of it like a chess board (not square) with the bottom left corner being A1, bottom right corner J1, top left A8, top right J8. You can also think of it like a plot on an X,Y graph if you want with tile (1,1) being in the bottom left, (10,1) bottom right, (10,8) top right, (1,8) top left. I will be using the "graph" style notation since it's easier to deal with numbers then letters
.
For a better grid look at how BGB splits it up when you view the VRAM, each 2x2 box counts as one "tile", but take note that this shows one extra row down to account for when the screen is transitioning.
The way the game is coded, looking in the debugger of an emulator you can see this grid laid out in RAM by looking in the rows/values of F700 through F790. The grid is surrounded by "FF" which is the highest hex code value that can fit in those spaces (or what the developers used as a buffer). Each tile is programmed/painted onto the screen using a corresponding hex code to determine the properties of that tile. For instance in our D8 room, the walls/look/art/hit detection/interaction/everything is the same on the wall squares. If we look at the very top row (row
we see the following tiles from left to right: C0, 25, 6 x 21's 26, C0 (10 across). These hex codes map directly to a tile and how it works: Eyeball Statue, TopLeft Corner D8 Wall, Top D8 Wall x6, TopRight Corner D8 Wall, Eyeball Statue. These values are used throughout the ENTIRE game because that is how the code is attached to them. For instance look at the down stairs at (3,4) with a hex code of BE, in every location in the game a down stairs is represented in memory with that same BE code. I could paste a bunch of screen shots showing this but that is crazy tedious so you just have to trust me on this one or check it out yourself
These codes are what give Link the ability to act within the tiles they represent. Tiles that the game wants Link to move on have those properties. Walls the game wants Link to not move through have that property. Trees in the overworld... you get the idea. The tiles in dungeons are special versus the ones in the overworld, which explains a bit why the super jumps work in dungeons and not in overworld (most of the time
).
In our D8 example look at the walls that act as "northern" walls represented by "21" in the hex code, you see them at the top row 8, you see some of them in row 5, some in row 2. Since the game is built in dungeons so that these walls can normally be "hopped down" the programmers re use the coding for the high walls the same as low walls, so the wall at (2,2) (3,2) has the same properties as (2,5) through (5,5). The programmers wanted Link to be able to drop down those ledges to make it to the lower sections. This allows super jumps off the top most wall in row 8 because the programmers lazily used the same wall code (for look and feel and ease of coding) with the same hex value as the walls in row 2 and 5. This is why Link can super jump off certain tiles. In most dungeons the programmers used this same method since a lot of the dungeon puzzles involve dropping down to lower sections. In the overworld they shut everything off a lot more by making it blocked off a lot better with more varying codes.
I could go into a lot more detail and proofing of this, but for now I'll get to the good part. If anyone wants me to do a more legit and full breakdown of this I could gladly do a big pastebin/write up for all the tiles, properties, etc. with more examples. Feel free to PM/message/skype/etc me with questions and clarifications on this.
RULES ARE HEREUsing the D8 grid as a quick example then I'll show other examples further down...
- Link is allowed to move within tiles that the game "normally" allows
This means any normal tiles the game wants you to walk on (ground, stairs, ladders, orange crystal blocks) {(2,1) (3,1) (5,1) (7/8,1) (5,2) (7,2) (8,2) (9,2) (2,3) (3,3) (4,3) (8,3) (2,4) (3,4) (4,4) (5,4) (7,4) (8,4) (9,4) (7,5) (8,5) (9,5) (2,6) (3,6) (4,6) (5,6) (8,6) (3,7) (5,7) (6,7) (7,7) (8,7)}
- Link is allowed to move within tiles that are "+1/-1 Adjacent" in the X or Y direction away from "normal" tiles.
This is the crux of the rule which allows super jumping. This means any tile that is directly adjacent to a moveable "normal" can be walked in/on/through/etc. In our D8 example it is easier to say what is not a "+1/-1 Adjacent" since a lot of tiles are. The D8 room tiles that are NOT +1/-1 (or "normals"): (10,1) (1,2) (6,3) (10,3) (1,5) (10,6) (1,7) (10,7) (1,8) (2,8) (9,8) (10,8).
I'll so better examples below of this later.
- Link is not allowed to transition/move/exit screens while within a "+1/-1 Adjacent" tile. Entering from one is OK!
This makes it so tricks like super jumps cannot be abused to break caves, dungeons, and such wide open in terms of movement in weird ways. This keeps all super jumps in check, and also allows for internal tile movement within a screen allowed by rules (Walrus Skip, Hookshot Damage boost throughs, etc.)
Let's take a look at another example. In Dungeon 4 we find this room. Link can move around in this room at will on normal tiles and tiles outlined in blue, but not allowed to move on red tiles. Link is not allowed to transition screens while within a blue tile. This means if there was in theory a jump that allowed Link to move from the bottom section, jump over the gap of red, to the top with the stairs... Link could exit the room from the "normal" tiles in the top left NOT EXITING FROM A BLUE TILE.
I'll finish with one final example in the overworld, up near where Flame Skip occurs. Again, "+1/-1 Adjacent" tiles are highlighted in blue and the non "+1/-1 Adjacent" tiles are highlighted in red. The Yellow tiles are ones we normally don't walk to, but Link is allowed to move on them through the normal rules of the game. If Link were to somehow make it to a yellow tile, Link would be allowed to exit this screen to the left through that small window (NOT EXITING FROM A BLUE TILE). If Link manages to do this, the next screen over would boost him to the left and past the rock wall he normally could not pass similar to Villa Skip. This would be allowed, since the movement/exit/transition of the screen happened within a valid "normal" tile. If Link were to exit the previous screen from an invalid tile, this move is illegal. This still allows Villa Skip within this rule set, since Link can jump into the pit that is above the skip, which makes it a "normal" tile. Link is transitioning from a tile that he can MOVE on. I say MOVE here because it is important to note MOVING does not mean WALKING. Link can jump to move in the Villa Skip example.
Enjoy
-amBASSador