Horizontal Move Speeds
- 3 pixels/frame - Ground dash, Flame Charge
- 2 pixels/frame - Walking, jumping
- 1 pixel/frame - During hitstun from taking damage
Vertical jump heights
Your jump height depends on how long you hold the jump button, nothing unusual. There are however two oddities.
- 9 frames or less all result in the same jump height.
- There is a big gap in jump height between 14 frames and more, giving you 20 extra pixels.
|Frames held||Jump height
When moving into certain walls during a fall, Zook will "catch on" to the wall and begin falling at 2 pixels/frame. Jumping at this time will move him 6 pixels/frame upward, which is the fastest way to gain height.
Wall jump into a ceiling. Nothing particularly tricky, the game's just that bad at stopping you. Wall jumps can trivially clip through one or two solid tiles in the way.
It is also possible to clip through three solid tiles, but the player's screen Y position (IWRAM:1E5C) must be 40 or more at the final wall jump that gets you through. This is at the point where the camera won't follow the player upward for at least one frame, and is somehow relevant to clipping through three solid tiles.
Note that floor tiles do not count as ceilings, so platforms that are apparently four tiles thick usually won't block you as it contains 3 solid tiles and 1 floor tile thickness. Also note that spikes count as ceilings, so a spiked platform is as thick as it looks.
An effect where the player is unable to move for a frame upon landing. This is due to the fact the game moved the camera too far, and did not shift the player out of the floor on that frame, stopping movement when the feet are momentarily inside the floor.
To avoid landing lag:
- Land while the camera isn't moving vertically, either by being near the top or the bottom of the segment.
- Land toward the end of the current platform you're aiming for
- Land on a slope
- Land on an object platform, of the sort seen in intro and volcano stages.
The leg upgrade is needed, found in Stage 7. After tapping left or right, a Dash Ready timer lasts for 20 frames, and a second tap in the same direction will trigger a dash. The dash will last 40 frames at a time.
After starting Dash Ready from the ground, get to a ladder, catch on to it, and then press and hold left or right. You may need to hold up or down for a few frames so the dash keeps going. This dash will have the character speed across in mid-air, and can also jump out of this dash in mid-air.
Variant: on ladders going down, you can start a dash on the ground above it, and hold down as you pass it. After the first 20 frames of fixed downwards ladder movement you will shoot off the ladder to the side at dash speed. Turning around will stop the mid-air dash, which can be used to get off ladders quicker than jumping off them.
The important pixel for vertical movement and ladders is slightly behind the character's apparent center. Turning around in the air requires two frames of holding left or right.
Early ladder catch
While approaching a ladder from the side, turn around. Up or down can then let you grab on the ladder a few frames early.
Early ledge land
Once in a while, you just barely miss landing on the next ledge. Turning around to face away from it might be just enough to make the landing. It is also sometimes possible to use a lower jump but land sooner, leading to a longer dash distance compared to jumping for a longer time.
Sometimes, you want to fall past the floor instead. Turning to face toward it will let you fall past it from a few pixels closer than facing away from it.
Additionally, some parts of the terrain has its floor below stop at the ledge, rather than slightly past it. It's these sorts of floors that allows the player to fall through, by turning once more, so that the important pixel, always slightly behind the player's center, is now inside the wall you're falling past. If the floor does not extend there, you will fall through.
Important. It's what loads segments and allows any sort of progress.
Get the player down far enough so that the feet is touching or below the camera's bottom edge, just as you load the next segment. This disables vertical terrain collision, so the player will fall endlessly, and if the next segment travels downward, allowing the player to skip by most obstacles on the way.
Without terrain, there are rather few ways to end a Ghost Fall:
- Lose a life
- Land on an object platform
- Use a Flame Charge
|Stage||Upgrade||Reg weapon||Reg DMG||Reg ammo||Chrg weapon||Chrg DMG||Chrg Ammo
| || ||Buster||1||-||Charge buster||2||-
| || || || || || Upgraded buster||3||-
|Sky|| ||Whirlwind||4||2||Double whirlwind||4||3
|Volcano|| ||Drill||4||2||Meteor shower||10||4
|Ocean|| ||Bubbles||3||1||Bubble shield|| ||3
|Forest||Armor||3 stars||3||1||2 boomerangs||6||2
|Castle||Leg||Bouncing spikeball||4||2||2 circling spikeballs||8||4
The time to charge any weapon is 60 frames, except upgraded Buster, which is 140 frames.
There is no boss weakness. All bosses and enemies take the same damage from all weapons.
All weapons which do 3 damage take 1 ammo. All weapons which do 4 damage takes 2 ammo. The full ammo bar is 11 units.
Helmet upgrade gives the option to exit a stage in the Start Menu. Armor upgrade does nothing, all hits do 1 damage with or without it. Leg upgrade unlocks dash. Arm upgrade unlocks charged boss weapons and upgraded buster.
A large flame projectile is shot forward. If this projectile exists for a few frames, it produces two smaller projectiles above and below it. All projectiles deal 3 damage, and they will disappear after hitting anything. The larger projectile is what is used to determine whether you can pause or switch weapons, and if removed, you can switch even with smaller projectiles still around.
Its charged shot is not a separate object, it doesn't even produce the Muzzle Flash. It changes the player state, gives the player a new animation, and makes the player invincible while flying forward.
Charged fire (fire dash)
Moves you at 3 pixels per frame, like a dash, but makes you (mostly) invulnerable and can be performed in the air. For this reason it's faster to fire dash across gaps than jumping, which is 2 pixels per frame.
This fire dash preserves whatever the player was doing, and will resume on the frame after the dash ends. For a jump, it will continue its vertical momentum. Regardless of whether you hold A, storing a jump like this will always go to its maximum height unless it has already begun its fall. It will also "snap" to floors and slopes, but unless it began from the ground state, it will stop the instant it reaches a floor tile (slopes don't block movement). Used from the air, after it finishes, it gives the player a standing pose that can be jumped out at any time; from the ground, the mid-air jump is only good on the one frame after the fire dash.
A medium projectile drops down. When it stops at some non-air tile, it will produce a few more damaging sprites above itself. Lasts for a while. All projectiles deal 4 damage, and will continue to exist after dealing damage.
Its charged shot is basically two of these, forward and back. One fewer sprite per projectile is produced, and instead of remaining stationary, will shortly move away. Still only 4 damage.
A projectile whose animation begins small, but grows in size only to shrink back down again. If fired on a floor tile, the projectile will move forward. In the air, it is completely stationary. Deals 4 damage, and will disappear after hitting anything.
The charged shot produces meteors from above, falling leftward until hitting some terrain. These deal 10 damage, and doesn't go away after hitting things. Note that these massive projectiles are likely to cause lag, so knowing some lag management tricks are necessary.
Produces a very slow moving projectile. If it continues to exist for a few frames, a second one is produced. Each of these two deals 3 damage, and will disappear after hitting anything.
Its charged shot produces a useful barrier around the player. The sprite normally has no hitbox, though if it did, it will disappear after hitting anything. It's not the sprite giving protection, but firing the charged shot will set some things to protect the player.
The shield has 6 hitpoints (address 16B4). Every time you take a hit a 48 frame countdown (address 16B8) is started, during which the shield can't take another hit. After the countdown ends the shield loses one hitpoint. When the shield has 0 hitpoints it disappears.
The delay between hits and the shield's disappearance makes it possible to lose the shield without taking damage.
While the shield is active you can move around like normal but you cannot attack or change weapons. (Unless you use a glitch such as Charge Swap.)
The shield does not protect against spikes, which still do 1 damage.
Creates a missile shot, which though it takes a while to form, does instantly have a damaging hitbox. Once it gets moving, it produces "inert" sprites behind itself which have no hitbox (the smoke trail). The missile deals 4 damage and disappears upon hitting anything. You can switch weapons when the missile is absent but the smoke remains, which gives the smoke a hitbox (they deal 0 damage).
The charged shot is virtually identical to the uncharged variant. The most notable difference is that this charged missile deals 6 damage.
Three stars are shot forward, in a fan pattern. You can switch weapons when the top shot is removed, even when the middle or bottom shots remain. These projectiles deal 3 damage, and will disappear after hitting anything.
Its charged shot produces two relatively quick stars that fly forward then back, each deals 6 damage and won't disappear after hitting something. The most notable feature is that they do not disappear after flying off-screen, and will only go away after they fly their pattern, allowing for hitting enemies significantly far off-screen.
A bouncy spikeball is shot forward, moving back and diagonally upward after hitting the screen edge and continuing to bounce around diagonally after. This deals 4 damage and won't disappear after hitting something. The projectile lasts a very long time.
When charged, a very large spikeball spirals out from where you shot it, with a second one of these, following a similar spiral, appearing after a few frames. These deal 8 damage, and won't disappear after striking an enemy. Considered particularly useful for boss fights.
Shoots a laser projectile forward, with a somewhat large hitbox. It deals 4 damage and won't disappear after hitting an enemy. The projectile thins itself after hitting each enemy.
Its charged shot is a large laser. The player state changes, unable to move but invincible to objects. This rather large laser deals 10 damage to anything it hits and won't disappear from hitting them. Once the laser shot finishes, the player's control is released and is vulnerable to attack again.
Shot Counter glitch
The uncharged laser shot, after hitting enough enemies, will start to decrement the shot counter (address 15DC) even though it doesn't actually remove itself. When the laser finally disappears, it is reduced once more. Most likely, the shot counter is now negative, which has a few effects.
As long as it is not exactly zero, the player can't pause or switch weapons. While it is negative, the player can shoot lasers to move it up toward zero. At that point, weapon swaps become available, even with on-screen lasers. Spikeballs will also use this same counter, allowing for swaps after they come into existence. One known use is to begin charging another weapon before the spikeballs are removed.
After firing a charged laser, the shot counter will be set to zero, ending the glitch.
Bosses have 11 full hitpoints. Every hitpoint has 5 subhitpoints. Damage is applied to the subhitpoints. When they reach 0 or below, full hitpoints are reduced by 1 and subhitpoints are increased by (not set to) 5. Because subhitpoints are increased rather than reset, it is possible to buffer damage from a powerful weapon (such as charged laser) and still have the next hit deal a full damagepoint.
When dealing damage to a boss, no more than one full hitpoint can be reduced per attack, no matter how low subhitpoints are. The minimum number of hits needed to defeat a boss is always 11.
Boss invincibility between hits is 96 frames.
It seems the hero's state is determined by the value stored at 0x15f0 in IWRAM.
A 0 means he's free to be controlled by the player.
Any event that temporarily disables player control (like taking damage, entering an ability capsule or touching a boss room door) changes this to some other value.
Old title: Glitched charged shot
If you have a charged shot ready, you can release the shot button to fire it at the same frame the action lock is released. You can then press it again on the next frame and you won't lose the charge.
Note that while the charge status is preserved, the charge counter is not. It is not possible to charge a level 3 buster shot any quicker off a glitched charge.
Pause at the same frame you release a charge. Select a different weapon, and unpause. The original weapon will fire, although the effects of changing the original shot to another weapon's animation functions do unexpected effects.
Note that pausing is disabled for specifically the basic weapon when it is charged. The Glitched charged shot is required to swap from the basic weapon to another.
| ||Basic||Flame||Whirlwind||Dirt spike||Bubble||Missile||Star||Spike ball||Laser|
|Basic Charge1||Normal|| || || || || || || || |
|Basic Charge2||Normal|| || || || || || || || |
|Whirlwind|| ||Replacement||Normal|| || || ||Replacement|| ||Replacement|
|Dirt spike|| ||Sticky Meteors||Game reset||Normal|| ||Replacement||Sticky Meteors|| ||Sticky Meteors|
|Bubble||Normal||Fragile Barrier||Fragile Barrier||Gone Barrier||Normal||Gone Barrier||Fragile Barrier||Gone Barrier||MurderBarrier|
|Missile||Game reset||Dud||Dud||Dud||Dud||Normal||Dud||Game reset||Game reset|
|Star|| ||Replacement||Replacement||Replacement|| ||Replacement||Normal|| ||Replacement|
|Spike ball|| || || || || || || ||Normal||Replacement|
|Laser||Frozen Laser||Frozen Laser||Frozen Laser||Frozen Laser||Frozen Laser||Game reset||Frozen Laser||Frozen Laser||Normal|
Actually calls the BIOS to do a full reset of the game, complete with the GameBoy Advance logo showing up. If it does something else, the complete reset generally makes these other effects frivolous.
Hitboxes change to those of the target weapon. Graphics often do, as well.
These meteors will exist indefinitely, even after landing, and even after scrolling them offscreen. Phantom duplicates of these meteors will show up if scrolled off-screen far enough, but these don't do anything. There are no known speed uses as of this time. 15DC freezes with a value of 5.
The barrier gains a hitbox, will deal 1 damage to an enemy once, then disappears after hitting an enemy. The barrier still has the full 6 HP, and will protect you even after the barrier sprite vanishes. The advantage is that, once the barrier sprite is gone, weapon swaps are fully available. Hitbox size depends on target weapon.
After a rather short time, the barrier just disappears. It still has the full 6 HP, and will protect you even after the barrier sprite vanishes. Without the sprite, weapon swaps are fully available.
A strange barrier that, upon contact with enemies, will instantly erase these enemies. It's not a destruction, as the enemy will not fly apart in shrapnel, will not drop items, and also prevents that specific enemy from respawning when coming back to the area. This also erases the weakpoint of the miniboss, and even bosses will be instantly erased, though this also denies triggers that would advance the game.
Another drawback is 15DC is decremented every time MurderBarrier erases an enemy. If this value is not exactly zero, you can't switch weapons or pause the game. This, and the fact we can't complete the stage by erasing a boss, means there are no known speed uses as of this time.
The shot vanishes. 15DC stays at 1, so you cannot fire again. Flame is an exception that does allow you to fire again and even charge the shot. A charged flame or a charged laser shot resets 15DC to 0.
The massive laser does not complete its animation. It will remain solid in place, and never releases the player (though Zook can regain control through other reasons, such as clearing dialog). The player is also immune to objects, as part of the laser attack. 15DC freezes with a value of 2.
For runs that end input early, this can be used as a finisher, as the projectile remains indefinitely and the boss will eventually kill itself on this hitbox block (exception: the hitbox for the basic weapon is temporary). Other than that one spot, there are no other known speed uses.
Action lock release
Sometimes two events that lock the controls can overlap, forcing one of them to override the other.
This can happen:
1. with the charged laser: The hero will move for 1 frame after firing it, allowing him to enter capsules (laser ends sooner, forcefully unlocking control) or touch spikes (damage animation ends sooner, unlocking control and retaining invulnerability to objects)
2. being damaged during boss dialogue: this is usually only possible after bypassing the boss door action lock with a charged laser. By standing very close to a boss and then jumping right when his dialogue starts, the hero will be stuck in a jump animation loop, with his hit box changing size as well. This will make he touch the boss' hitbox and take damage and the damage animation will restore control while the dialogue is still on screen.
On the same frame the miniboss would load, destroy an enemy. The game assumes that what you destroyed is the miniboss (as there shouldn't be other enemies when fighting a miniboss), and will shortly load the next segment.
- Intro - Maybe. There is a flying enemy, but it takes long enough that destroying the miniboss is faster. An alternative is to game over at the miniboss, then kill an enemy with the right position (.bk2) to skip the miniboss, but the game over process takes too long as well.
- Stage 1 - Maybe. There is an enemy off to the left of the miniboss. Close enough to be around until the miniboss segment. It can be reached with the charged star weapon, but routing suggests Stage 1 should be picked much earlier than Stage 6. Other weapons we'd have in the route by then will not reach.
- Stage 2 - Yes. There are flying enemies very close to the miniboss. Let them come in, flame charge through them on time with the miniboss segment.
- Stage 3 - Yes. There is an errant enemy spawn point in the save platform segment. Around the "doorway" of the miniboss room, moving left will spawn this enemy. Shoot it while triggering the miniboss.
- Stage 4 - Not likely. The nearest enemy is a submarine, who doesn't travel horizontally and is too far away. Any that would travel to the right are all very far away.
- Stage 5 - Yes. Several enemies spawn very close to the miniboss room. While in the miniboss room, but before the miniboss spawns, travel left, and a missile may spawn. Use something damaging enough on this missile.
- Stage 6 - Maybe. An enemy spawns at the top of Segment 1, but by the time you'd get there, Segment 2 will have already loaded, and it doesn't spawn that enemy there. The Segment Skip will be needed to bypass the load trigger and spawn the enemy, but the setup for Segment Skip takes too long.
- Stage 7 - Yes. A flying enemy from the breakable pillar can be lured to the miniboss, and this process is fast enough to save several frames.
- Stage 8 - Not likely. No enemy loads in the short segment before the miniboss, and none are in range from the segment before that.
Same concept as the Miniboss Skip -- Destroy a regular enemy when the boss spawns. However, most bosses are behind doors, and this erases all active enemies immediately.
This trick requires that enemies can spawn in the immediate segment the door exists in, which only happens in the final stage.
- Break the action lock of the door animation with a charged laser so you regain control.
- Move left for one frame when an enemy is within spawning range of the left border.
- Destroy that enemy, most likely with charged star, after the boss spawns.
Here are notes on boss re-fights during the end stages:
- 1st - Not likely. There are enemies in reach of the door, but these enemies vanish the instant the boss segment transitions in. There's no known method for moving enemies outside of their movement routines.
- 2nd - Done! A high spawning enemy can be shot down with charged Star.
- 3rd - Not likely.
- 4th - Done! Although enemies spawn too far away to remain existing, there is one that, with a well-timed jump facing left, you can fall far enough to trigger its movement to the right. It moves very fast, so a method to delay it after it starts moving will be needed.
- 5th - Done! There is a ground enemy that moves toward the wall under the door. It is possible to delay this enemy even with basic shots until the boss segment loads. Parts of the old wall then unloads, allowing the enemy to approach further and take more basic shots.
- 6th - Done!
- 7th - Done!
- 8th - Done!
Of note, the intro boss can also be skipped. Without a door, enemies will not disappear. Luring a flying enemy to the intro boss will allow a skip in a way similar to the Miniboss Skip.
Leave the stage after encountering a miniboss, before destroying it. The next enemy you destroy will be treated as though you won against a miniboss, and the current segment is skipped, preserving camera's position in the new segment relative to the top-left corner. An example in Stage 6 means one can skip the first segment, appear at the top of the second segment which requires a lot of climbing, then almost instantly reach the third segment from there.
The two known ways to leave a stage is to either get the head upgrade and use that, or get a game over against the miniboss. However, the time it takes to get to the miniboss from the start of the stage generally takes a while, and while the game over can be done starting from the save platform, there's no known way to fall to your death in the six stages where a save platform is present. As the known set-ups for the skip takes longer than the skip itself, there's no use for this skip as of this time.
Get rid of boss particles sooner
After a boss dies, 8 particles fly off in different directions. Only after they disappear well off-screen will the player advance to the next stage. Keep the camera as closely centered to where the boss died as possible until the particles go away, then jump up the wall to leave sooner.
A special mention is to be made for the Stage 2 boss. As luck would have it, the 11th hit is just as it flies off-screen upward. Follow the boss upward far enough to prevent it from teleporting to the next part of the attack and make the final hit there. If the boss was destroyed high enough, and the player is back on the ground, all 8 particles will disappear immediately, letting the player leave much earlier.
- 2 - Player invincibility time after being hit
- 4 - Animations
- 8 - Boss dialog
- 9 - Falling cycle
- 32 - Item drop cycle
The frame rule is an effect where an event will last a variable amount of time simply depending on when it is triggered, except for Falling cycle which depends from where Zook starts falling. There are no significant factors other than the game's internal frame counter. Clearing the boss dialog might end up taking exactly the same amount of time even though you got there 7 frames earlier, but save just one more frame, and that one frame is worth eight, as the frame rule is met.
Note that lag will delay the internal frame counter, so if one non-lag frame needed to be saved to beat the frame rule, but the action to save that non-lag frame causes 2 frames of lag, the frames saved will be the entire size of the frame rule, minus the lag gained. Also note that removing lag without losing pace are savings that will stick.
There's an array of 60 structures starting at 0x1DE4 in IWRAM, they represent all the objects in the game that are on screen. Including the HUD. These object structures are 0x74 bytes each.
0-9: Zook and HUD
30-59: Enemies and collectibles. (Also minibosses and bosses are stored here)
The structure can be broken down as follows:
|0x0000||offset x||4||Relative to left edge of screen|
|0x0004||offset y||4||Relative to top edge of screen|
|0x0008||sprite index||2||Existence (other than player), hitbox, and appearance|
|0x000A||sprite map||2|| |
|0x000C||(bool) is facing left||2|| |
|0x000E||sprite related index||2|| |
|0x0010||animation frame||2||Affects what offset 0x0008 (sprite index) becomes|
|0x0016||action timer||2|| |
|0x0018||action id||2|| |
|0x001A||something sprite data index||2|| |
|0x0028||enemy number||2||For determining which spawn point is occupied|
|0x0040||sprite related count||4|| |
|0x0048||damage enemy will take||4||Player projectile power|
|0x004C||friend object 1||4||Minibosses are made of multiple objects|
|0x0050||friend object 2||4|| |
|0x0054||friend object 3||4|| |
|0x0058||invulnerable timer||4||Regular and minibosses; note bosses use something else|
|0x0070||(pointer) some iwram address||4||Graphics related pointer|
Item drops in this game are predetermined, based on the current active frame. This active frame counter is read from IWRAM Address 0x17A0, with that value then bitwise AND operated with 0x1F (31 in decimal). This leads to a total of 32 possible values that can be read by the drop array (0-31).
The drop array is stored in ROM at address 0x3E8880. This array contains 32 indexes, with values ranging from 0-7. The array can be broken down into the following table:
|0||0,2,4,8,10,15,20,23,25,28,30||Nothing||11/32 (34.375%)||Fewer objects might mean less lag|
|1||1,14,19||Small Health Refill||3/32 (9.375%)||+2 HP|
|2||3,9,18,22||Medium Health Refill||4/32 (12.5%)||+5 HP|
|3||6,13,29||Health Tank||3/32 (9.375%)||Stored in pause screen, caps out at 9, +11 HP|
|4||5,12,17,31||Small Energy Refill||4/32 (12.5%)||+2 Ammo|
|5||7,11,21,26||Medium Energy Refill||4/32 (12.5%)||+5 Ammo|
|6||24,27||Energy Tank||2/32 (6.25%)||Stored in pause screen, caps out at 9, +11 Ammo|
|7||16||Extra Life||1/32 (3.125%)||Your usual extra life thing, caps out at 9|
This game was featured in the Dream Team Contest 6
. Before each of these competitions teams usually tease each other or make up discoveries
they have made, and post them in the relative game resource page. To see how the page looked like before contest end, click here