Donald Land has three types of levels, each with different physics. Ground, Air, and Water. There is one room with special ice physics. Each pixel is divided into 256 subpixels
Horizontal Move Speeds
Usual X movement
384 (1.5) Max speed
512 (2.0) Max speed, holding B
+64 Acceleration on ground
+96 Acceleration on ground, holding B
-32 Deceleration on ground
+24 Acceleration in air, "low acceleration mode"
+32 Acceleration in air, held A since start of jump
+64 Acceleration in air, didn't jump or released A at some point
-0 Deceleration in air
-1 Deceleration if Left/Right state changed from last frame
Deceleration always applies after acceleration, so the net change in ground speed is more like +32 and +64. However, the distinction is important when you want to move toward zero speed, where the numbers add rather than subtract, giving -96 and -128 instead.
In the air, you start in "high acceleration mode". If you change Left / Right input since the start of the jump, other than to blank input (which is not going to accelerate you anyway), you change to "low acceleration mode" for the remainder of your air time. The change in Left / Right inputs, again other than going to blank, also decelerates you by 1/256, useful for very carefully tweaking your position.
Of note, holding Down or Up prevents any sort of acceleration. Since apples always account for change in speed in the same frame they are tossed, dropping apples with Down will not benefit from one frame of acceleration as throwing them forward would. In addition, holding Down since the start of a jump allows you to face backwards without losing speed, and allows for "fast acceleration" if the need to stop arises, as the Left / Right state never changed from the start of the jump as you release Down.
L4 Sky World X movement
160 (0.625) Max speed
256 (1.0) Max speed, holding A
Sky World has free movement in any direction, but the speed limits are slow. Holding B will halt acceleration.
There is a particular enemy that accelerates you to 1024 (4.0), but this is an "illusion". The game has already applied your acceleration and deceleration, then change in position based on what your speed is after the Max Speed is applied, then the enemy gives its strong acceleration, then the frame boundary in which we can read our speed value. The 4.0 speed doesn't speed us up any, as again, it's limited by our Max Speed mid-frame before our position updates to match. The only benefit is to our thrown apple, which wouldn't have the one frame of slowing as usual.
L6 Cave World X movement
256 (1.0) Max speed
384 (1.5) Max speed, holding B
-3 Deceleration on ground
Numbers are otherwise identical to the usual case. The icy state uses the above numbers, and if cleared, the usual numbers are used.
Icy state is...
Set when standing on terrain.
Cleared when falling.
Preserved when rising from a jump.
Preserved when standing on objects.
Of note, the only time the icy physics take place is during a segment were we need to wait for the terrain to load in a special tile ID, so a quick start and a quick end is all that is important.
L9 Ocean World X movement
512 (2.0) Max Speed
Ocean World requires that you hold Left or Right and tap A to move.
When on an object, you decelerate to zero in most cases. Swim frames with tapping A are unaffected, but releasing A to tap again is affected. Holding Down, and Down alone (make sure Right is released!), will prevent this instant deceleration.
Vertical Move Speeds
Stage 3 movement strategy
"insert talk about using bottom of screen"
The stage 3 cutscene also has a small timesave that may go unnoticed for the most part. The cutscene starts Ronald out in a bunch of solid tiles for whatever unknown reason; probably it just didn't matter since the game takes control of ronald anyway. But, we are given 1 frame of freedom at the start, and that allows us to turn left which is just enough to give us that pixel boost zip that is readily apparent when you're inside of terrain. This causes the cutscene to play out just a few frames quicker than normal.
Stage 4 Strategies
So stage 4 is probably the best place to talk about enemy/apple behaviors. Normally when an apple is stuck to an enemy it will explode killing said enemy and turning it into a dead sprite that somehow exits the stage (usually by falling down). However, ramming Ronald directly into enemies also kills them, and doing this while an apple is already stuck to an enemy will cause the apple to reset it's timer and start flying as if the enemy didn't exist. This seemed useful at first, but the fact that Ronald is still stunlocked while taking damage makes it less useful, even despite the invincibility item we may pick up somewhere around halfway through the stage.
This same affect mentioned above will also happen when certain enemies turn into a completely different enemy. The enemies that converge forming a larger enemy are one example of this, and when they merge and your apple has reached the point where it explodes but not quite before the apple timer is up, it will actually reset that apple while still killing said enemy. Reset apple will then fall down and we can be in position to take advantage of it. Another instance of this happening, though completely non-useful for any valid purposes, is when enemies are bypassed really fast while an apple is stuck to them. If an enemy is despawned by going too far off screen, this will also reset the apple timer, and in general is best avoided because now you can't cast your second apple for a really long time. This generally won't happen in this stage though because of the slow movement speed, but can happen in any of the normal stages. (may want to break this off to another section later since it doesn't apply to stage 4)
Another attribute to the enemy/apple relationship is that if an enemy is killed with apple 1, while apple 2 is later stuck to it and hasn't exploded, then the dead sprite carries the second unexploded apple with it and doesn't reset that apple's timer. This actually has a few uses throughout this stage, because some of the enemies dead sprite patterns actually bring it up into the air quite a bit before descending. Since most enemies are located in a giant mass of burger icons that we want to avoid, killing enemies in this manner drags them up out of said burgers and we can use second apple to get our boost from.
If you're looking for the strategies used at the very end of the stage to setup the stage 5 Oasis skip, scroll down for the "Level 5 Oasis Warp" section.
Stage 9 movement strategy
Stage 9 is definitely one of those interesting stages that is handled quite differently from the others. Swimming as fast as possible is the fastest base movement for these stages, but that does pose a problem of height, which is generally a case for Donald Land. Fortunately we can ride apples downward to lose that height and also gain a hefty speed boost from them in the meantime (Apple boost 1.625 usually). This requires us to slow down enough for a basic downwards apple toss to be slow enough for immediate swimming to catch up and stick ronald's feet to it.
But if you toss the second apple immediately after the A press that gets ronald to the first apple, we now have an apple with a much higher boost value (around 2.937), and in fact the first apple will speed us up just enough to get us to the second one. Now that this apple has a really high boost value, generally we just want to stay on it as long as possible before exiting to get the most out of that apple. And if that apple hits the ground before we're able to ride it for a long distance, we can now use another technique to dramatically increase the speed; pressing Down between our swim frames. This preserves the speed between swims for whatever reason.
The screen can wrap around from either side of the screen where the camera is stopped enough for ronald to approach that side. This can be seen by moving to the left side of the screen at the start of stages and tossing an apple to the left, which then wraps around and comes out the right side of the screen. Be careful not to walk too far to the left or the apple will just get lost instead.
At first this just seemed like a funny little quirk to the game's mechanics, but further inspection showed it could actually be used for the stage 6 boss. Killing the boss from the left side of the screen allows us to get an easy apple boost ending since we're already to the left side of the "gravitational point" that the boss cutscene pulls us to.
There was even a further idea to use this for the stage 5 boss since ronald starts close to the left and the boss starts close to the right. In fact, we can get a first apple attached to the boss much faster this way, and since the boss takes 5 hits, that's the most important hit right? Well, the problem is getting back to the boss after said hit. We do still have to land the second apple before the third, so using the second apple to quickly approach the boss doesn't work. If there were some way of getting back to the boss quickly it could possibly be faster. If I recall, this method was tested and found to be just a few frames slower than the current method used, so it's a close call.
Donald Land levels consist of 16x16 pixel blocks, called tiles. Donald Land doesn't have the memory space to load the complete level into memory, so the tiles are continually loaded and unloaded into RAM memory from the ROM as you traverse the level. You can use the Namespace viewer in FCEUX or BizHawk to see how the level loads in and out, set "Display on scanline" to 239.
However, the game loads them rather slowly, at a speed one column of 16 pixels in 7 frames. The game allows Donald to move much faster than this by using bomb boosts.
When you pass the level loading border, you will visually and physically replay an earlier part of the level, two screens back. However, the screen scroll variable will still keep track of your actual position in the level. Most bosses will still load based on this scroll position.
The game stops loading new tiles to the right if your position on screen ($91) is less than 96, even if it is behind the screen scroll position.
Warps (Tile Storage)
The game checks the type (ID) of tile which Donald touches and stores it in $615. Some tile IDs have an interaction connected to them, like "go to next room".
The tile address isn't properly cleared between stages, and the ID is used before getting updated for the next stage. In some cases the previous level has tiles with the same ID as the "go to next room" tile in the next level, meaning that the next level loads, and then immediately considers you to have reached the exit.
Note that $615 is not updated when the player is currently out of bounds, either above or below the screen. There are garbage tiles out there, but it's moot anyway as nothing you can do will copy the ID of these tiles into $615.
This can be easily done going from level 8 to 9, and going from 11 to 12. It can also be done when going from 4 to 5 by utilizing a number of additional bugs to glitch a tile which is the end tile in level 5.
Level 3 Forest Warp
Not possible. While the game is looking for ID $7A in order to move on to the cutscene, the game isn't even making the checks until the boss activates, so there's no point looking for the same ID in level 2.
Level 5 Oasis Warp
A trick which requires knowledge of zips, how to delay the loader, which garbage tiles above the screen to attack, and of course the special tile ID to touch when the boss is defeated.
The ID needed is $79. This is part of the background window graphics seen in the area just before the boss itself. Keeping the tile loaded is difficult, as it requires the game doesn't load other tiles to overwrite this one. The ceiling can be used for zips, a 4-frame pattern is easy enough as you can alternate between 2 frames each of up and neutral inputs for height, then move right when your height is below the tile, and back left when inside the tile.
However, even with the 4-frame zips, the loader is still too fast, and the special window tile will still be overwritten before reaching the boss. In order to stop the loader, the player must no longer be at the latest pixel (address $91 must not be 96). After getting a tile zip, you must continue left, into open air, to stop the loader. Then you must carefully adjust speed and position so that, going back to the latest pixel, you have enough subpixels that going back left doesn't immediately put you back on the earlier tile, so that one more tile zip is possible.
FatRatKnight - Above explanation needs work. It is complicated, and it's hard to translate the images I have in mind into words.
Once the boss is reached, loading the boss's weakpoint tiles is in direct opposition with keeping the special tile loaded. However, the boss's mouth animation is working, and this affects garbage tiles at the top of the screen. There are one-frame windows where tiles $1A and $1B exist, and apples need to land there on the frame they exist in order to damage the boss. The frame they explode doesn't matter.
Level 6 Cave Warp
Not likely. The game is making checks for tile ID $38 right from the start of the stage, but the level 5 boss room not only lacks the tile necessary, but it also puts the player into an "auto-pilot" to a particular location.
Level 9 Ocean Warp
The game seeks either $30 or $83 to warp ahead. The $30 tile is the left part of a roof or steeple in the background, and you just need to touch this air block when Ronald's movement is locked from defeating the boss.
Level 12 Castle Warp
The boss's platform has the necessary ID $30 to touch in order to skip a large portion of the castle. All one has to do is stand on it as you win the stage in order to warp ahead. The platform needs to load in, however, putting a speed limit on level 11 for the needed tile.
None of the other levels have a special tile ID they are looking for, and so there are no warps possible in them.
The enemies, and other objects such as moving platforms, are loaded based on Donald's horizontal position in the level, calculated as the sum of $91 (Donald) and $CC-$CD (screen).
The objects have a range, where if the position is inside the range, the object is loaded. This range varies per object instance, but can be as small as 3 pixels, say 100-103 as an example. It is possible for Donald to hit pixel 99 with a high subpixel value, and then move 4:128 in a single frame with a bomb boost, meaning he is on 104 the next frame. When this happens, the range is never hit, and the object is not loaded.
This is most prominently used on the two big crocodiles in stage 7, Pond World, which prevent progress for about 3 seconds each. It can also be used on a lot of other enemies to decrease lag or avoid collision.
Fast boss kills
L7 Pond World Quick Kill
Usually you need to wait for the boss sprite to exit the screen before the game considers the stage complete. For the level 7 boss, the movement code is buggy, and if the boss dies while moving its head, it reads data outside its specified movement table. This causes it to shoot off the screen in 2-3 frames.
The boss only starts to move its head every 256 frames, based on a global timer located at $7D. This timer runs during all stages and controls other enemy behaviour too. If the timer is at a bad value it might be faster to kill the boss normally rather than wait for the timer.
L10 Ghost Town Quick Kill
The two ghosts will freeze and wait for their destruction if an apple lands on them. However, if left untouched, they will shortly disappear and teleport to another location. This is based on where the player happens to be, generally some height above where the player happens to be. There are no checks to ensure the destination is sane, allowing them to wrap to the bottom of the screen, and most sprites in the range of Y 241-255 will instantly self-destruct. All that needs to be done is for the player to reach a specific height and wait there until the ghosts disappear.
While there is a refight with these ghosts in the Castle World (L12), attempts at tricking them off screen as in level 10 have yet to succeed.
This game was featured in the Dream Team Contest 7
. As tradition, the teams play around and put jokes in the resource page of the relative game. To see how the page looked like before contest end, click here