Movement

Horizontal Move Speeds

Vertical jump heights

Your jump height depends on how long you hold the jump button, nothing unusual. There are however two oddities.
Frames heldJump height
<1025
1028
1132
1236
1340
1444
>1464

Wall jump

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.

Ceiling clip

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.

Landing lag

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:

Ground dash

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.

Ladder dash

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.

Turnaround

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.

Ledge clip

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.

Camera

Important. It's what loads segments and allows any sort of progress.

Ghost Fall

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:

Weapons

Table

StageUpgradeReg weaponReg DMGReg ammoChrg weaponChrg DMGChrg Ammo
Buster1-Charge buster2-
Upgraded buster3-
Factory Fireblast31Firedash52
Sky Whirlwind42Double whirlwind43
Volcano Drill42Meteor shower104
Ocean Bubbles31Bubble shield 3
SpaceHelmetMissile42Large missile63
ForestArmor3 stars312 boomerangs62
CastleLegBouncing spikeball422 circling spikeballs84
BroadcastArmLaser42Large laser104
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.

Flame weapon

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.

Whirlwind

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.

Drill

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.

Bubbles

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.

Bubble shield

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.

Missile

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.

Stars

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.

Spikeball

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.

Laser

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.

Boss damage

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.

Hero state

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.

Charge Storage

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.

Charge Swap

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.
BasicFlameWhirlwindDirt spikeBubbleMissileStarSpike ballLaser
Basic Charge1Normal
Basic Charge2Normal
FlameNormalNormalNormalNormalNormalNormalNormalNormalNormal
Whirlwind ReplacementNormal Replacement Replacement
Dirt spike Sticky MeteorsGame resetNormal ReplacementSticky Meteors Sticky Meteors
BubbleNormalFragile BarrierFragile BarrierGone BarrierNormalGone BarrierFragile BarrierGone BarrierMurderBarrier
MissileGame resetDudDudDudDudNormalDudGame resetGame reset
Star ReplacementReplacementReplacement ReplacementNormal Replacement
Spike ball NormalReplacement
LaserFrozen LaserFrozen LaserFrozen LaserFrozen LaserFrozen LaserGame resetFrozen LaserFrozen LaserNormal

Game reset

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.

Replacement

Hitboxes change to those of the target weapon. Graphics often do, as well.

Sticky Meteors

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.

Fragile Barrier

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.

Gone Barrier

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.

MurderBarrier

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.

Dud

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.

Frozen Laser

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.

Tricks

Miniboss Skip

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.

Boss Skip

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.
Here are notes on boss re-fights during the end stages:
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.

Segment 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.

Frame Rules

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.

Objects

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
10-29: Projectiles
30-59: Enemies and collectibles. (Also minibosses and bosses are stored here)
The structure can be broken down as follows:
OffsetNameSize (bytes)Notes
0x0000offset x4Relative to left edge of screen
0x0004offset y4Relative to top edge of screen
0x0008sprite index2Existence (other than player), hitbox, and appearance
0x000Asprite map2
0x000C(bool) is facing left2
0x000Esprite related index2
0x0010animation frame2Affects what offset 0x0008 (sprite index) becomes
0x0012state2
0x0014entity2
0x0016action timer2
0x0018action id2
0x001Asomething sprite data index2
0x001Cfield_1C2
0x001Efield_1E2
0x0020field_204
0x0024field_244
0x0028enemy number2For determining which spawn point is occupied
0x002Afield_2A2
0x002Chp4Enemy HP
0x0030field_304
0x0034field_344
0x0038field_384
0x003Cfield_3C4
0x0040sprite related count4
0x0044field_444
0x0048damage enemy will take4Player projectile power
0x004Cfriend object 14Minibosses are made of multiple objects
0x0050friend object 24
0x0054friend object 34
0x0058invulnerable timer4Regular and minibosses; note bosses use something else
0x005Cfield_5C4
0x0060field_604
0x0064field_644
0x0068field_684
0x006Cfield_6C4
0x0070(pointer) some iwram address4Graphics related pointer

Item drops

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:
ValueIndexesItemProbabilityNotes
00,2,4,8,10,15,20,23,25,28,30Nothing11/32 (34.375%)Fewer objects might mean less lag
11,14,19Small Health Refill3/32 (9.375%)+2 HP
23,9,18,22Medium Health Refill4/32 (12.5%)+5 HP
36,13,29Health Tank3/32 (9.375%)Stored in pause screen, caps out at 9, +11 HP
45,12,17,31Small Energy Refill4/32 (12.5%)+2 Ammo
57,11,21,26Medium Energy Refill4/32 (12.5%)+5 Ammo
624,27Energy Tank2/32 (6.25%)Stored in pause screen, caps out at 9, +11 Ammo
716Extra Life1/32 (3.125%)Your usual extra life thing, caps out at 9

Useful tools

Team 1's main script - hitboxes, HP, drops, positions, and field of view.
Team 4's terrain script
Team 4's hitboxes script
Team 4's general script- RAM watch alternative, object stats, positions, drops
Team 4's externalized display script - Terrain and hitboxes in wide field of view

Contest banter

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.

GameResources/GBA/ZookManZX4 last edited by Samsara on 8/21/2023 9:28 AM
Page History Latest diff List referrers View Source