| In rooms whose water is set to wave, an indirect HDMA channel writes BG2's X scroll on every line. Above the water each line points at the plain scroll; below it the lines walk through a ring of 16 values, the scroll plus a displacement of 0, 1, 1, 0, 0, −1, −1, 0 repeating, so the background ripples a pixel either way in an 8-line pattern that shifts one line every 6 frames. | src/bank_88.asm L7229–7234src/bank_88.asm L980–982src/bank_88.asm L7303–7306src/bank_88.asm L7523–7570src/bank_88.asm L7465–7472src/bank_88.asm L8365–8368src/bank_88.asm L8623–8638 | Code |
| The Ceres haze is an indirect HDMA table on the sub-screen backdrop color, used for color math. Its first entry covers 64 lines and 15 more cover 8 lines each; while the room fades in, the routine raises the bands' intensities over 16 frames, ending with 0 at the top and 1 to 15 in the bands below, a gradient down the screen. | src/bank_88.asm L10011–10018src/bank_88.asm L979–990src/bank_88.asm L10097–10134src/bank_88.asm L10246–10264 | Code |
| InsaneFirebat's sm_disassembly, assembled with asar for NTSC, equals Super Metroid (Japan, USA) (En,Ja) byte for byte. | test_build.bat L19src/main.asm L34–36 | Code |
Make_Samus_Jump picks the take-off speed from a table by medium and the Hi-Jump Boots: 4.875 px/frame up in air, 1.75 in water, 2.75 in lava or acid, and 6, 2.5, and 3.5 with the boots. With the Speed Booster equipped, it adds Samus's extra run speed, the whole part halved. | src/bank_90.asm L4198–4227src/bank_90.asm L4184–4196src/bank_90.asm L3995–3998src/bank_90.asm L5124–5134 | Code |
Gravity is one constant in air, $1C00 subpixels (0.109375 px/frame²) every frame of a jump or fall, held button or not; water uses $0800 and lava or acid $0900. A fall stops gaining speed at 5 px/frame. | src/bank_90.asm L5076–5082src/bank_90.asm L4719–4720src/bank_90.asm L2972–2994 | Code |
| In a normal or spin jump, letting go of jump while Samus rises sets her vertical speed to 0 and starts the fall at once; held, the rise lasts until gravity brings the speed to 0. | src/bank_90.asm L2785–2798src/bank_90.asm L2846–2857 | Code |
| Running accelerates Samus at 0.1875 px/frame² to 2.75 px/frame and slows her at 0.5 px/frame² once she lets go. Holding dash while running builds a separate extra run speed at 0.0625 px/frame², up to 2 px/frame, or 7 with the Speed Booster. | src/bank_90.asm L5192–5200src/bank_90.asm L3982–3998src/bank_90.asm L4040–4047src/bank_90.asm L5163–5173 | Code |
| In a normal jump with no acceleration mode set, holding neither left nor right sets Samus's base horizontal speed to 0 that frame; held, the speed table's jumping row accelerates her at 0.75 px/frame² to 1.25 px/frame. | src/bank_90.asm L2807–2819src/bank_90.asm L5195–5201 | Code |
An enemy's touch sets SamusInvincibilityTimer to $60 (96), and Samus's contact check returns early while it is above 0. DecrementSamusHurtTimers_ClearActiveEnemyIndicesLists takes 1 from it, which the gameplay routine calls once per frame. | src/bank_A0.asm L4915–4919src/bank_A0.asm L3392–3394src/bank_A0.asm L2093–2096src/bank_82.asm L1566 | Code |
An enemy's touch sets a 5-frame SamusKnockbackTimer and a knockback direction from Samus's position against the enemy's. The knockback launches her at 5 px/frame up, or 2 in water, lava, or acid, and the upward knockback then moves her with the usual Y-speed code, gravity included. | src/bank_A0.asm L4920–4931src/bank_90.asm L4352–4356src/bank_90.asm L5148–5149src/bank_90.asm L14262–14264 | Code |
| A new save file starts Samus with 99 energy and no missiles. | src/bank_81.asm L6230–6236 | Code |
| An energy tank adds its argument, 100, to Samus's maximum energy and sets her energy to the new maximum. | src/bank_84.asm L1452–1461src/bank_84.asm L15449 | Code |
| Missiles, super missiles, and power bombs are three separate pools, each with its own tank; each tank instruction adds its argument, 5, to that pool's maximum and its count. | src/bank_84.asm L1496–1508src/bank_84.asm L1520–1528src/bank_84.asm L1544–1552src/bank_84.asm L15474src/bank_84.asm L15499src/bank_84.asm L15524 | Code |
| The morphing transition reverts Samus's pose unless the Morph Ball is equipped. On the ground the ball's row of the speed table tops out at 3.25 px/frame, above running's 2.75. | src/bank_91.asm L15801–15822src/bank_90.asm L5200–5203 | Code |
| In a spin jump in air with the Space Jump, a new jump press makes a fresh jump only while Samus falls at 2.5 px/frame or faster and below 5. | src/bank_90.asm L5467–5540src/bank_90.asm L5056–5062 | Code |
A normal enemy's touch routine takes another path when ContactDamageIndex is nonzero: it damages the enemy and returns without hurting Samus. Its comment places the Screw Attack's damage at $A4C2, 2000 ($07D0) for index 3, before the enemy's vulnerability scales it. | src/bank_A0.asm L4812–4835src/bank_A0.asm L4860–4901 | Code |
| A wall jump starts only from a spin jump or another wall jump. Once the spin animation reaches its wall-jump frames, with a direction held away from a wall or solid enemy within 8 px, a new jump press jumps off at 4.625 px/frame up, or 5.5 with the Hi-Jump Boots. | src/bank_90.asm L4838–4861src/bank_90.asm L4941–4951src/bank_90.asm L4960–4986src/bank_90.asm L2897–2900src/bank_90.asm L5072–5074src/bank_90.asm L5136–5143 | Code |
The three games build the high jump three ways. Metroid's High Jump Boots lower the jump's gravity from $18 to $12 and keep the take-off speed. Metroid II's Hi-Jump starts the held rise at a lower counter and adds 1 px/frame to it, 3 px/frame for up to 31 frames against 2 for up to 15. Super Metroid's Hi-Jump Boots raise the take-off speed from 4.875 to 6 px/frame, with gravity unchanged. | src/bank_90.asm L5124–5131src/bank_90.asm L4702–4720 | Code |
The timer a hit sets starts at 50 in Metroid (SamusBlink, $32), 51 in Metroid II (samusInvulnerableTimer, $33), and 96 in Super Metroid (SamusInvincibilityTimer, $60). | src/bank_A0.asm L4918–4919 | Code |
Super Metroid's running acceleration is Metroid's, $30/256 (0.1875) px/frame² in both, but its top speed rises from Metroid's 1.5 px/frame to 2.75. Metroid II, between them, has no acceleration and walks at 1.5 px/frame. | src/bank_90.asm L5200 | Code |
| Super Metroid keeps Metroid's release cut, a release during the rise setting the vertical speed to 0, but drops Metroid's 32 px minimum rise. Metroid II, between them, holds a fixed rise for as long as A is held, up to a frame limit. | src/bank_90.asm L2786–2796 | Code |