WIKI · CURIOSITIES

What exists in the cartridge and never shows up in play.

Things that are in the original Mega Man X cartridge but that a normal play session does not show. Each item has a seal that says how far it is proven:

Ghost shots

proven-unreachable

Four shots are on the game's list of shots and have real damage values in the damage table, but no play session ever fires them. The images come from a test in the original game, where we created each shot directly in the game's memory.

The spiral buster shot

A buster shot with a movement of its own. It moves 6 pixels per frame and makes a full turn every 8 frames, rising and falling within a band 39 pixels tall. It looks like the normal buster shot, but the area that hits enemies is larger. It takes 8 health from normal enemies; the normal shot takes 2.

Proof: the game decides which shot to create from a number, and the number that would lead to this shot never comes up.

Six frames from the original game: X fires the spiral shot, a ball of energy that moves right while rising and falling.
Image from the original game. The spiral shot, which we created directly in the game's memory in a test. In normal play it never appears. Open at full size
Six frames from the original game: X fires the normal buster shot, which goes straight to the right.
Image from the original game. For comparison: the normal buster shot, in the same place. Open at full size
  • The spiral buster shot in motion— open: enlarge, silent

    The spiral buster shot in motion

    Forced in the emulator: does not happen in normal play

    In the Chill Penguin stage cave, X fires a normal shot and then a second shot, which we swapped for the spiral buster: a big ball that rises and falls as it moves right and hits the spiked-wheel enemy rolling in.

    Download GIF

The ninth weapon, normal and charged

These are two shots, one normal and one charged, of a weapon that is not in the game: it sits at position 18 of the weapon list. They have no code of their own and use Storm Tornado's. Only the damage changes: they take 4 health from normal enemies, while Storm Tornado takes 1. In the test the shot exists in memory but does not appear on screen, because Storm Tornado's graphics are not loaded while X is using the buster.

Proof: the game would only pick weapon 18 if the stage number were 9, and at that point of the code the stage number only goes from 1 to 8.

Six frames from the original game: X standing, with no shot visible on screen.
Image from the original game. The ninth weapon, created directly in the game's memory in a test: the shot exists, but nothing appears on screen. Open at full size
Six frames from the original game: X standing, with no charged shot visible on screen.
Image from the original game. The charged ninth weapon, in the same test: nothing appears either. Open at full size

The Ride Armor's strong punch

The punch of the Ride Armor, the robot armour, is an invisible hit area that follows the armour. There is a strong version of the punch that takes 10 health, twice the normal punch (5). Without the armour, this strong version vanishes on the first frame, and nothing appears on screen.

Proof: the weapon that would create this punch is never picked, and the armour only creates the normal punch.

We also forced this punch in the emulator, with the armour on. Because the punch is an invisible hit area, the clip looks the same as the normal punch, so it is not shown here.

Six frames from the original game: X standing, without the Ride Armor, and nothing else on screen.
Image from the original game. The strong punch created without the Ride Armor: it vanishes on the first frame, and nothing appears on screen. Open at full size
Technical details

The shot numbers (OID) are 5 (spiral buster), 15 and 24 (ninth weapon, slot 18, normal and charged) and 26 (strong punch); in hexadecimal, 05, 0F, 18 and 1A.

OID 5 has its own routine at 81:A412, uses the buster graphic (sprite $08, animation 5) and has collision box 11, against the normal shot's 4. Proof: the index that would pick it (forceShot>>1 = 7) never exists (81:98AC, table 86:BA71).

OIDs 15 and 24 point to Storm Tornado (83:9550). Proof: curWeapon 18 could only come from 80:AFF0 with stage 9, and there the stage goes from 1 to 8.

OID 26 uses the same routine as the normal punch (OID 25, 81:A70A). Proof: curWeapon 22 (stage 11) never occurs, and the armour only creates the normal punch (83:8247).

The damage comes from table 86:EF37, adding the target class and the OID, in 30-byte rows; that is why the four values are real. The sources are knowledge_base/mmx1/rom/x1_shot_oids_unported_2026-10-03.json (proofs), x1_ghost_shots_2026-10-03.json (measurements) and x1_unused_content_2026-10-03.json; the bytes are pinned by tools/tests/test_x1_unused_content.py.

The images come from build/ghost-shots/ (oid00_buster_controle, oid05_buster_espiral, oid15_slot18_tornado, oid24_slot18_tornado_carregado, oid26_soco_ride_armor_forte), with six frames per image, and are published as they are: they already come enlarged 2× without smoothing.

In the spiral buster clip (build/W2, w2_spiral_buster_oid05), at the exit of the shot chooser (81:9539, after 81:94AF-81:9536), the shot OID byte at 7E:1272 (slot $1268 + $0A) went from 0 to 5 at frame 30, from the savestate tools/oracle/fixtures/cp_long_f1350_thispc.mss. The clip covers frames 14 to 103 (90). The first shot (frame 20) was not touched.

The strong punch was recorded but not published (w2_ride_punch_oid26 against w2_ride_punch_oid25_control): at 83:8945 (after 83:8942 STA $000A,X; caller 83:824D LDA #$19), 7E:1232 (slot $1228 + $0A) went from 25 to 26 at frames 6431, 6471, 6503 and 6535. With the armour present ($0E3F = 16), the slot is not cleared. Of the 142 frames, 15 differ from the comparison, all in the armour pose timing. No enemy is hit, so the damage (10 against 5) does not show.

The left-facing arrival

only-not-seen

At the start of each stage X comes down in a beam of light and always forms facing right, because just before the arrival the game sets his direction to “right”.

In the ending, the same piece of code turns X to the left and tells the arrival to start. But three commands later it replaces that order with the walk of the final scene. The order to arrive facing left stays in memory for about 15 processor cycles, about 5 millionths of a second, and is never drawn on screen.

Other paths through the game that could lead to this arrival have not been ruled out yet; that is why the seal is only-not-seen.

Nine frames from the original game at the start of the Armored Armadillo stage: a beam of light falls, becomes a drop and forms X facing right.
Image from the original game. Frames 1276 to 1300 of a verified recording of the Armored Armadillo stage: the beam falls, becomes a drop and forms X facing right. The labels are in Portuguese (quadro means frame). Open at full size
Technical details

Player action $22 is the stage-start teleport, and 81:81AB stores the right direction just before it. In the ending, the routine turns X to the left (81:81B4) and writes $22 (81:81CE), but three instructions later replaces it with $44 (81:81D7), the walk of the final scene. That lasts about 15 CPU cycles, about 5 microseconds. The only-not-seen seal covers the general case, because other paths are not closed yet.

The image is build/coord/pose22-teleporte-armadillo.png, with frames 1276 to 1300 of a verified recording of the Armored Armadillo stage, enlarged 2× without smoothing for the site.

In the clips (build/W2, w2_teleport_facing_left and w2_teleport_control), at 81:81B6 (after 81:81AB LDA #$40 / 81:81AD STA $0C11), 7E:0C11 (w_blaster_direction) went from 64 to 0 at frame 1021 of the recording knowledge_base/_movies/chill-penguin. The clips cover frames 1011 to 1190 (180). The comparison is the same recording, with no write.

A hidden tool to view and edit the map

not-referenced

The cartridge holds a test tool left by the programmers. When it runs, the game stops and only the tool works, with controls of its own. No part of the game leads to it.

On controller 1, A turns the background layers on and off, Y turns a grid over the map on and off, and holding X, L and R together closes the tool.

On controller 2, the D-pad moves a cursor (2 pixels at a time, or 8 with B). L and R choose the number of a map block, A copies a stored value, and Y places that block on the map, under the cursor.

The screen shows the texts POS X., POS Y., CH CELL NO., CELL NO. and HIT NO..

The button names were deduced from the order in which the Super Nintendo reads the controller.

  • The map tool running— open: enlarge, silent

    The map tool running

    Staged in the emulator: we placed this directly in memory; what follows is the game's own code, but we made the start happen

    In the Chill Penguin stage cave, the tool takes over the game: the texts POS X., POS Y., CELL NO., HIT NO. and CH CELL NO. appear at the top with values, a small cursor square sits on the map, and controller 2 moves the cursor right while the view follows.

    Download GIF
Technical details

The tool is lunchDebugSuite, at 84:833D (it ends in RTL, 84:83C4), with 19 internal labels up to 84:893D. No instruction in the export calls these labels from outside the block, and the bytes 3D 83 84 (long pointer) and 3C 83 84 appear nowhere in the ROM. An indirect jump through RAM has not been ruled out.

It has a table of 9 states at 84:83C5. On controller 1, the layers are at 84:880F, the grid on BG3 at 84:849F and 84:8500, and the exit with X+L+R at 84:83A3. On controller 2, the cell number goes up to $1FFF (84:88AC), and the cell is written to the map by JSL 84:9111 at 84:88D3. The texts are read from 86:A568. The buttons were inferred from the SNES bit order (the D-pad is in bits 0-3 of the byte the export calls Lo).

In the staged clip (build/W2, w2_debug_suite), at the RTL 84:909F of shuffleGetRNG (84:9086), with the index flag set, the return address on the stack (7E:0138..013A, SP $0137) went from 99 9A 80 to 3C 83 84, and the RTL landed on 84:833D (lunchDebugSuite) at frame 20, from cp_long_f1350_thispc.mss. The clip covers frames 18 to 95 (78).

A test check that never runs

not-referenced

Every frame, the game repeats the same piece of code that drives the game. In the middle of it sits a check left by the programmers: with a test switch turned on, the game would stop drawing the characters and objects on screen. But right before that check, the code always jumps to another spot, so the check is never made. And the switch is turned on whenever the game enters that piece of code: if the check ran, the screen would have no characters and no objects.

Technical details

The game's main loop starts at 80:9102. After the BRA at 80:911F comes the check LDA w_debugModSlot / BNE at 80:9121, which no branch reaches. With the flag set, it would skip mainOAM (80:D56F), the sprite drawing. The flag is 1 whenever the game enters the loop (80:9104).

Map pieces the camera does not show

only-not-seen

Below the camera

In two stages there is a strip 16 pixels tall below the lowest point the camera reaches: in the Armored Armadillo stage, with 83 solid blocks, and in the Boomer Kuwanger stage, with 16. The game's camera works in three ways, and none of them goes past that limit. Still to check: one more piece of code that changes the camera position, and how the camera position is tied to the scrolling of the scenery.

Scenery strip of Armored Armadillo: brown rock on both sides and, in the middle, a dark red stretch.
Map made from the original cartridge's data. Armored Armadillo: the scenery of the strip below the camera, with brown rock and a dark red stretch. It is a drawing made from the cartridge's data, not a capture of the game running. Scroll sideways to see the whole strip. Open at full size
Scenery strip of Boomer Kuwanger: green and blue panels.
Map made from the original cartridge's data. Boomer Kuwanger: the scenery of the strip below the camera, with green and blue panels. It is a drawing made from the cartridge's data, not a capture of the game running. Open at full size

A closed gap in the Sting Chameleon stage

Three map blocks in a closed-off space. The proof that nobody can get there is not complete yet.

Checklist pieces

A tool that walks the map automatically examined 57 pieces of the X1 checklist and did not prove any of them unreachable.

Technical details

The vertical limit of mode 2 (camera_borders_2026-10-02.json) leaves the strips: in Armored Armadillo at y 2800 (x 3584-5375, 83 solid cells) and in Boomer Kuwanger at y 6128 (x 0-255, 16 cells). The mode table 80:DE13 has 3 entries: 80:DE19 (starts), 80:DE40 (follows and limits) and 80:DE3F (only RTS, the camera stays still). The horizontal limit does not hide the strips; the vertical one does. Still to check: the writer 80:C51D and the relation between camY and the BG1 scroll. The BG1 images are in build/WK1/.

In Sting Chameleon, the cells $38 are at (304,64), (304,74) and (304,90), and the proof has complete=false (terrain_unreachable_proofs_2026-10-03.json). For the ledger pieces, the flood fill proved 0 of 57 pieces unreachable (unreachable_parts_2026-10-02.json).

The two strips come from build/WK1 (armored-armadillo_bg1_strip_y2800.png, 1792x48, and boomer-kuwanger_bg1_strip_y6128.png, 256x48), enlarged 2×: they are drawings of the BG1 tiles made from the ROM data, not emulator captures (checked by eye on 2026-10-09, W3 manifest).

Map areas with no access

only-not-seen

A tool walks the map from the start of the stage and from each checkpoint, with and without dash and wall jump. No area of 3 blocks or more lies below the camera.

It found 14 closed pockets in the map with no object from the cartridge, where X never went in the recordings: 6 in the Flame Mammoth stage, 2 in Launch Octopus, 3 in Spark Mandrill, 2 in Storm Eagle and 1 in Boomer Kuwanger. Still to rule out: doors, breakable blocks and variations of the map.

In the recordings, X went through another 184 areas the tool does not reach. And 16 closed rooms have objects from the cartridge, such as doors and the teleporters of the Sigma 3 stage. Those areas and rooms do not count as unreachable. The tool cannot handle ladders, moving platforms, water, the Ride Armor, slopes or dashing off an edge yet.

Technical details

tools/maps/unreachable.py runs reach.py from the spawn and the checkpoints, without and with dash/wall kick. The pockets (column,row:cells) are: FM 178,40:4 363,46:9 389,46:7 412,46:3 439,46:6 0,59:16; LO 449,28:14 396,64:4; SM 0,42:16 0,50:16 62,58:10; SE 241,31:14 57,72:5; BK 80,0:30. Left out of the count: the top of the map (3) and SM's outer ceiling (4). The images are in build/WK2/, one per stage.

Enemies that seemed to be in no stage

A count of 108 object types treated as placed in the stages only the 93 that had shown up in our captures of the stages. But the cartridge itself keeps lists of what each stage places, and those lists change the count.

Six are created by another object

Three Utuboros objects, an egg, Storm Eagle and a generator. They appear when another object in the game creates them.

Six are in the cartridge's lists

They appear in the lists of several stages: the opening highway, the Chill Penguin, Armored Armadillo, Sting Chameleon and Storm Eagle stages, and the Sigma 1 and Sigma 2 stages. This was corrected in a second round of checks.

Three with no creator found

only-not-seen

They are not on the stage lists, and no known piece of code creates them. Still to check: a piece of code that picks between two object types at random, and the code that writes to memory at a spot worked out while the game runs.

Technical details

The census had 108 OIDs and counted as placed the 93 seen in the captures (*_full.json). The ROM lists are at 85:82C2 and are read by 80:DB71 (tools/rom/extract_events.py).

The ones created by another object are: Utuboros 0x23, 0x24 and 0x25 (82:FE5A, 82:C2C2, 82:C2EB); the egg 0x55 and Storm Eagle 0x56 (87:DD9D, 87:E283); and the generator 0x45 (87:FD23).

In the ROM lists (round 2 correction): 0x0F crusher (IH 15), 0x15 spiky (IH 2, AA 4, CP 8, Sigma 1 3, Sigma 2 3), 0x19 bombBeen (IH 6, CP 4), 0x0B axeMax (SC 3, CP 2), 0x46 airPortGasTank (SE 5) and 0x51 rayBit_bunny (CP 5). They are records with locator 3 (enemy slots, 82:8321).

No creator found: 0x00 (empty stub at 80:F9B5), 0x09 RT55J (81:CC13) and 0x3E tomBotGen. Every LDA #$09 or #$3E followed by a write to +$0A writes a slot of page $1928 or an enemy-shot slot (for example 88:C454 after 88:C44B). Not checked yet: 80:A31F (OID 0 or 6 at random, page not traced) and the writes through an indirect pointer.

Enemies that are never born

declared-impossible

In 647 verified recordings, three enemies placed in the stages were never born, that is, the game never created them: one in the Spark Mandrill stage (no. 84 on the stage's list) and two in the Armored Armadillo stage (nos. 0 and 62). None of the 647 recordings shows any of them being born, and every automatic search ended without them being born.

All three sit in empty map space: the Spark Mandrill one above the ceiling; in Armored Armadillo, one below the start area and one under the floor. In those recordings the camera never reached the area where they would be born.

In the Armored Armadillo corridor, the game's own camera locks set the limit back to the same height before the camera gets there. By the code, X moves at most 4 pixels per frame sideways and rises at most 7, and the camera follows 128 pixels behind him. Four automatic searches got to within 4 to 12 pixels of the goal and stopped.

David decided to treat all three as impossible in normal play. The complete proof from the code is not finished yet, so the seal is declared-impossible, not proven-unreachable. They are born only when the camera is forced, as the clips below show.

Map of the Spark Mandrill stage with a Portuguese legend: the red marker of enemy no. 84 on the list sits in the empty space above the ceiling, inside a yellow box; the blue areas, where the camera reached, are below, along the ceiling.
Map made from the original cartridge's data. Spark Mandrill, enemy no. 84 on the stage's list: above the ceiling, in empty map space. Colours: red, where the cartridge places the enemy; yellow, the area the camera must reach for it to be born; blue, where the camera reached in verified recordings; white dashed, the recorded screen that came closest; green, the spots where the game locks the camera. The legend inside the image is in Portuguese. Open at full size
Map of the start of the Armored Armadillo stage with a Portuguese legend: the red marker of enemy no. 0 on the list sits far below the start area, in empty space, inside a yellow box; the blue areas, where the camera reached, are up at the top.
Map made from the original cartridge's data. Armored Armadillo, enemy no. 0 on the stage's list: below the start area, in empty map space. Colours: red, where the cartridge places the enemy; yellow, the area the camera must reach for it to be born; blue, where the camera reached in verified recordings; white dashed, the recorded screen that came closest; green, the spots where the game locks the camera. The legend inside the image is in Portuguese. Open at full size
Map of the Armored Armadillo mine with a Portuguese legend: the red marker of enemy no. 62 on the list sits under the floor, in empty space, inside a yellow box; the blue areas, where the camera reached, are above the floor.
Map made from the original cartridge's data. Armored Armadillo, enemy no. 62 on the stage's list: under the floor, in empty map space. Colours: red, where the cartridge places the enemy; yellow, the area the camera must reach for it to be born; blue, where the camera reached in verified recordings; white dashed, the recorded screen that came closest; green, the spots where the game locks the camera. The legend inside the image is in Portuguese. Open at full size

In the clips, we moved the game's camera to that spot in the emulator. The game itself then creates the enemy from the stage's list.

  • Spark Mandrill, enemy no. 84 on the list— open: enlarge, silent

    Spark Mandrill, enemy no. 84 on the list

    Forced in the emulator: does not happen in normal play

    In the dark part of the stage, with X on a pillar, the camera rises 248 pixels into the dark and the game creates the enemy. It flies left, its light cone lighting up the background, and leaves the screen. Then the camera returns to X.

    Download GIF
  • Armored Armadillo, enemy no. 62 on the list— open: enlarge, silent

    Armored Armadillo, enemy no. 62 on the list

    Forced in the emulator: does not happen in normal play

    In the mine, the stage action goes on, with explosions around a spiked digging machine. The camera moves left and goes down below the floor, where the game creates a bat, which hangs in the dark band under the rock. Then the camera returns.

    Download GIF
  • Armored Armadillo, enemy no. 0 on the list— open: enlarge, silent

    Armored Armadillo, enemy no. 0 on the list

    Forced in the emulator: does not happen in normal play

    At the start of the stage, the camera leaves X and goes 629 pixels left and 738 down, past the brown walls into a screen with only the backdrop colour. There the game creates a bat, which hangs alone. Nothing else is drawn at that spot of the map.

    Download GIF
Technical details

In Spark Mandrill it is placement 84; in Armored Armadillo, placements 0 and 62. None was born in 647 verified recordings (R104), and every automatic search stopped. The camera never reached their spawn area in those recordings.

In the clips (build/W2), at 80:E152, the RTS of the clamp 80:E0DE..80:E152, on every frame of the pan, the camera targets 7E:1E4D/1E4E (x) and 7E:1E50/1E51 (y) received the forced value. The spawner 80:DC36/80:DCDB runs after it in the same frame and creates the enemy from the ROM list itself; nothing else is written.

Spark Mandrill 84: y from 768 to 520 (6 px per frame), hold 60, back to 768, in frames 22050 to 22194 of the recording spark-mandrill-death-hunt; OID 0x37 is born at (6513, 590) at frame 22076. Armored Armadillo 62: x from 3081 to 2960 and then y from 768 to 900 (6 px per frame), hold 60 and back, in frames 2940 to 3067 of the recording armored-armadillo; OID 0x2D is born at (3080, 1053) at frame 2965. Armored Armadillo 0: x from 629 to 0 and then y from 412 to 1150 (8 px per frame), hold 60, no return, in frames 1345 to 1577; OID 0x2D is born at (26, 1305) at frame 1503.

The maps come from build/R106 (render.py), drawn from the ROM-decoded maps (content/x1/stages/tiles/<stage>_full.json) and enlarged 2×. Blue is the camera targets reached in R104 WRAM-equal recordings; yellow, the camera window in which 80:DC36 -> 80:DCDB tests the record; green, the lock events 81:F6AB.

Armored Armadillo placement 62: object 0x2D at (3080, 1053); for it to be born, the camera would have to be at x 2784..3135 and y 782..1085. The camera lock is written at 81:F718 (records 86:E4E2 and 86:ECD0), with $1E52 := 2 at 81:F6FA. Route B (bottom limit 1024 from i91, carried west through i90, 86:E76C, y 800..943): the crossing writes bottom_t 768 and camY falls at least 2 px per frame (80:E282..80:E2B9). Route T (top limit 1024 from i103, 86:E78A): past x 4575 going west, X enters i101 (86:E780, y 1040..1167) and top_t goes back to 768.

Result of each route in R110: B open (closed only for X's own movement) and T open; the digging machine route (Mole Borer, OID 0x2C, 83:BF44) and the void below the corridor (X dies in the pit, 80:E12D..80:E146) closed; the lower band west and the checkpoint 1 respawn (86:A934) reduce to route T; the route through 83:F82A/83:F82D ($0318 = 792) stays open.

X's limits from the ROM (R110): integration at 82:820A..82:823D (x += xSpd $0BC2, y -= ySpd $0BC4); x-speed table at 86:B9B1. The largest resolved sideways step is the dash, 885/256 = 3.457 px per frame (so at most 4); the largest upward step is the wall kick with $0621 = 1569/256 = 6.13 px per frame (so at most 7). Camera: camX = X x - 128 (80:DE9D..80:DEBB), y between X y - 128 and X y - 96 (80:DEBC..80:DEDA), per-frame change limited to SpdMax $1E54 = 8 (80:DE36..80:DE39); offset 128.

The four R108 automatic searches (XEON), all with the input-frame budget exhausted and without the event: r108-aa62-bottom-west with best distance 4, r108-aa62-top-west with 12, r108-aa62-birth-i91 with 8 and r108-aa62-birth-i103 with 8.

The seal comes from stage_population_declared_impossible_2026-10-09.json: David's decision on 2026-10-09, in chat, with the evidence R104 (647 WRAM-equal recordings and the searches), R106 (camera locks and borders), R108 (seven routes and four searches), R110 (X's speed and the camera offset and speed from the ROM) and W2 (each placement is born only when the camera is forced). It is not a complete ROM proof: R110 leaves open 29 external writers of X's position, the terrain ceiling probe and 267 unresolved store sites (54 indexed by X at $0001/$0002, 1 at 82:D9CA, 43 indirect and 169 direct-page without an annotation); it is counted by the owner's decision.

Boss animations the game has but never uses

proven-unreachable

For each boss, the cartridge stores the animations he shows in the fight. Some are there, complete, but the game never uses them: the boss’s code never asks for them, so no match shows them. Each one has a written proof, checked in the cartridge’s code.

To see how they would look, we forced each one in the emulator: we wrote the start of the animation into the game’s memory, the same way the game itself would, and let the game play it by itself. That is why every GIF in this part carries the “forced” notice: none of this happens in normal play.

First we checked the method on an animation the game really uses: the forced version came out identical, pixel for pixel, to the recording of the normal game.

Boomer Kuwanger

The game has this Boomer Kuwanger animation, but never uses it. His code picks this animation by a number, and the proof shows that number is never 22, the number of this animation. That is also why it left the list of recording requests.

Forced GIF: Boomer Kuwanger, the animation the game never uses.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself until the boss's own code asked for another. Does not happen in normal play. Boomer Kuwanger: the animation the game never uses. Open the GIF · Still picture
Technical details

Proof (knowledge_base/mmx1/rom/boss_unrequested_cells_2026-10-11_h29.json, proof bk-dynamic-a-22, row boss.boomer-kuwanger.presentation; as the KB has it): 87:8C32 passes A = +0F & 7F (87:8C2E-87:8C30). In the OID 05 closure, +0F is stored by 84:8F44 (8-bit, SEP 84:8F3A): the current record's flags, sprite 117 (87:8AB3 via 82:827D) flags & 7F = 0..19, sprite 133 (82:802D) 0..2; and by 82:839E (16-bit, REP 82:8398) = 0000 inside the despawn routine 82:8398. 82:80D6 (STZ, SEP 82:80D4), 82:80DD (STA #81, SEP 82:80D9) and 84:90F2 (SEP 84:90B6) are 8-bit and write +0E only. Intro sub-state 0 (87:8AE7) sets +0F at 87:8B15 (A = 24) before 87:8C02 stores the fight state. So 84:8F07 never starts animation 22 of sprite 117.

w7_forced_boomer-kuwanger_05_75_22.gif (with w7_forced_boomer-kuwanger_05_75_22.png): OID 05, sprite 75, animation 22; 118 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 7ba23b76b6772f47f673c6136e2f7df337c2b0d02805a30805d61fd219accb3e. Recording boomer-kuwanger, savestate at frame 18338; write at frame 18346 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = 0D D4, +13 = 02, +0F = 00, +17 = 8F, 7E:000E = 16 (the routine had written +13 16 +14 D447 +0F 00 +17 80). Sources: H29; proof: bk-dynamic-a-22. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = 0D D4, +13 = 02, +0F = 00, +17 = 8F, 7E:000E = 16 (the start of animation 22 of sprite 75, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 22 of sprite 75 by itself until the boss's own code asked for another animation at frame 18562. Does not happen in normal play.

Launch Octopus

The game has these 22 Launch Octopus animations, but never uses them: his code changes animation at 18 places, and none of them asks for one of these.

Forced GIF: Launch Octopus, animation 1 of 22.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself for 240 frames. Does not happen in normal play. Launch Octopus: animation 1 of 22 the game never uses. Open the GIF · Still picture
See the other 21 animations
Forced GIF: Launch Octopus, animation 2 of 22.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself for 240 frames. Does not happen in normal play. Launch Octopus: animation 2 of 22 the game never uses. Open the GIF · Still picture
Forced GIF: Launch Octopus, animation 3 of 22.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself for 240 frames. Does not happen in normal play. Launch Octopus: animation 3 of 22 the game never uses. Open the GIF · Still picture
Forced GIF: Launch Octopus, animation 4 of 22.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself for 240 frames. Does not happen in normal play. Launch Octopus: animation 4 of 22 the game never uses. Open the GIF · Still picture
Forced GIF: Launch Octopus, animation 5 of 22.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself for 240 frames. Does not happen in normal play. Launch Octopus: animation 5 of 22 the game never uses. Open the GIF · Still picture
Forced GIF: Launch Octopus, animation 6 of 22.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself for 240 frames. Does not happen in normal play. Launch Octopus: animation 6 of 22 the game never uses. Open the GIF · Still picture
Forced GIF: Launch Octopus, animation 7 of 22.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself for 240 frames. Does not happen in normal play. Launch Octopus: animation 7 of 22 the game never uses. Open the GIF · Still picture
Forced GIF: Launch Octopus, animation 8 of 22.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself for 240 frames. Does not happen in normal play. Launch Octopus: animation 8 of 22 the game never uses. Open the GIF · Still picture
Forced GIF: Launch Octopus, animation 9 of 22.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself for 240 frames. Does not happen in normal play. Launch Octopus: animation 9 of 22 the game never uses. Open the GIF · Still picture
Forced GIF: Launch Octopus, animation 10 of 22.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself for 240 frames. Does not happen in normal play. Launch Octopus: animation 10 of 22 the game never uses. Open the GIF · Still picture
Forced GIF: Launch Octopus, animation 11 of 22.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself for 240 frames. Does not happen in normal play. Launch Octopus: animation 11 of 22 the game never uses. Open the GIF · Still picture
Forced GIF: Launch Octopus, animation 12 of 22.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself for 240 frames. Does not happen in normal play. Launch Octopus: animation 12 of 22 the game never uses. Open the GIF · Still picture
Forced GIF: Launch Octopus, animation 13 of 22.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself for 240 frames. Does not happen in normal play. Launch Octopus: animation 13 of 22 the game never uses. Open the GIF · Still picture
Forced GIF: Launch Octopus, animation 14 of 22.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself for 240 frames. Does not happen in normal play. Launch Octopus: animation 14 of 22 the game never uses. Open the GIF · Still picture
Forced GIF: Launch Octopus, animation 15 of 22.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself for 240 frames. Does not happen in normal play. Launch Octopus: animation 15 of 22 the game never uses. Open the GIF · Still picture
Forced GIF: Launch Octopus, animation 16 of 22.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself for 240 frames. Does not happen in normal play. Launch Octopus: animation 16 of 22 the game never uses. Open the GIF · Still picture
Forced GIF: Launch Octopus, animation 17 of 22.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself for 240 frames. Does not happen in normal play. Launch Octopus: animation 17 of 22 the game never uses. Open the GIF · Still picture
Forced GIF: Launch Octopus, animation 18 of 22.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself for 240 frames. Does not happen in normal play. Launch Octopus: animation 18 of 22 the game never uses. Open the GIF · Still picture
Forced GIF: Launch Octopus, animation 19 of 22.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself for 240 frames. Does not happen in normal play. Launch Octopus: animation 19 of 22 the game never uses. Open the GIF · Still picture
Forced GIF: Launch Octopus, animation 20 of 22.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself for 240 frames. Does not happen in normal play. Launch Octopus: animation 20 of 22 the game never uses. Open the GIF · Still picture
Forced GIF: Launch Octopus, animation 21 of 22.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself for 240 frames. Does not happen in normal play. Launch Octopus: animation 21 of 22 the game never uses. Open the GIF · Still picture
Forced GIF: Launch Octopus, animation 22 of 22.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself for 240 frames. Does not happen in normal play. Launch Octopus: animation 22 of 22 the game never uses. Open the GIF · Still picture
Technical details

Proof (knowledge_base/mmx1/rom/boss_unrequested_animation_cells_2026-10-11_r125.json, proof never-requested-07, row boss.launch-octopus.presentation; as the KB has it): H26 'never requested' (build/H26/result-notes.md, Proofs): the OID 07 closure from main 81:C433 (3052 instructions, complete, no unresolved dispatch) has 18 resolved 84:8F07 (setSpriteAnim) callers; the A each one passes is listed below; none passes the k of an animation listed here, so 84:8F07 never starts it and no frame record of it becomes current (84:8EEA steps only the current animation). +16 = 118 is set by the sprite stores listed. Main 81:C433. H26, first animation: never requested: the OID 07 closure (3052 instructions, complete) has 18 resolved 84:8F07 callers, none with A = 0: 81:C4E8=[2], 81:C709=[7], 81:C771=[8], 81:C7A7=[9], 81:C859=[8], 81:C8D7=[3], 81:C4AF=[15, 19], 81:C581=[5, 14], 81:C5D4=[5, 14], 81:C625=[10, 11], 81:C66A=[15, 19], 81:C686=[1, 13], 81:C6B9=[15, 19], 81:C897=[15, 19], 81:C953=[4, 12], 81:C972=[1, 13], 81:C9AD=[15, 19], 81:CAC3=[5, 14].

w7_forced_launch-octopus_07_76_0.gif (with w7_forced_launch-octopus_07_76_0.png): OID 07, sprite 76, animation 0; 124 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 d53af51e31cf5806784057bfde9331bdd22157e66b50a75c93f4242af347b332. Recording b15-d-rex-61-1-normal-hunt, savestate at frame 14274; write at frame 14282 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = EC D4, +13 = 08, +0F = 80, +17 = 80, 7E:000E = 00 (the routine had written +13 06 +14 D589 +0F 00 +17 80). Sources: H26 records/34 (R125); proof: build/H26/callers.json#/records/34. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = EC D4, +13 = 08, +0F = 80, +17 = 80, 7E:000E = 00 (the start of animation 0 of sprite 76, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 0 of sprite 76 by itself for 240 frames. Does not happen in normal play.

w7_forced_launch-octopus_07_76_6.gif (with w7_forced_launch-octopus_07_76_6.png): OID 07, sprite 76, animation 6; 124 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 a5683e1cb254c84bb8d0f111e3528af98f4a4325db2559f430569b0cd4ef2f8e. Recording b15-d-rex-61-1-normal-hunt, savestate at frame 14274; write at frame 14282 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = 9A D5, +13 = 09, +0F = 00, +17 = A0, 7E:000E = 06 (the routine had written +13 06 +14 D589 +0F 00 +17 80). Sources: H26 records/37 (R125); proof: build/H26/callers.json#/records/37. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = 9A D5, +13 = 09, +0F = 00, +17 = A0, 7E:000E = 06 (the start of animation 6 of sprite 76, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 6 of sprite 76 by itself for 240 frames. Does not happen in normal play.

w7_forced_launch-octopus_07_76_16.gif (with w7_forced_launch-octopus_07_76_16.png): OID 07, sprite 76, animation 16; 124 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 0d0f16f1515b0814f28fad42b7b379c12cf128005f4447d9d55591b99e6a6234. Recording b15-d-rex-61-1-normal-hunt, savestate at frame 14274; write at frame 14282 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = 7D D6, +13 = 08, +0F = 80, +17 = CA, 7E:000E = 10 (the routine had written +13 06 +14 D589 +0F 00 +17 80). Sources: H26 records/42 (R125); proof: build/H26/callers.json#/records/42. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = 7D D6, +13 = 08, +0F = 80, +17 = CA, 7E:000E = 10 (the start of animation 16 of sprite 76, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 16 of sprite 76 by itself for 240 frames. Does not happen in normal play.

w7_forced_launch-octopus_07_76_17.gif (with w7_forced_launch-octopus_07_76_17.png): OID 07, sprite 76, animation 17; 124 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 9091061efbc3fda305af48b836e5e63cafbd6d1984e57e8128ab8cdd8b48e9c4. Recording b15-d-rex-61-1-normal-hunt, savestate at frame 14274; write at frame 14282 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = 82 D6, +13 = 06, +0F = 00, +17 = CB, 7E:000E = 11 (the routine had written +13 06 +14 D589 +0F 00 +17 80). Sources: H26 records/43 (R125); proof: build/H26/callers.json#/records/43. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = 82 D6, +13 = 06, +0F = 00, +17 = CB, 7E:000E = 11 (the start of animation 17 of sprite 76, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 17 of sprite 76 by itself for 240 frames. Does not happen in normal play.

w7_forced_launch-octopus_07_76_18.gif (with w7_forced_launch-octopus_07_76_18.png): OID 07, sprite 76, animation 18; 124 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 d55c1ba25bc9eae0d0660494863be9ccce82343d3d43b6eb97205755b579c54c. Recording b15-d-rex-61-1-normal-hunt, savestate at frame 14274; write at frame 14282 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = 90 D6, +13 = 06, +0F = 00, +17 = CE, 7E:000E = 12 (the routine had written +13 06 +14 D589 +0F 00 +17 80). Sources: H26 records/44 (R125); proof: build/H26/callers.json#/records/44. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = 90 D6, +13 = 06, +0F = 00, +17 = CE, 7E:000E = 12 (the start of animation 18 of sprite 76, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 18 of sprite 76 by itself for 240 frames. Does not happen in normal play.

w7_forced_launch-octopus_07_76_20.gif (with w7_forced_launch-octopus_07_76_20.png): OID 07, sprite 76, animation 20; 124 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 dfd9ac9ca1df128e657f6f21077d73870bbb0ecb915d5d60033155148284ceeb. Recording b15-d-rex-61-1-normal-hunt, savestate at frame 14274; write at frame 14282 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = A9 D6, +13 = 04, +0F = 00, +17 = D1, 7E:000E = 14 (the routine had written +13 06 +14 D589 +0F 00 +17 80). Sources: H26 records/46 (R125); proof: build/H26/callers.json#/records/46. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = A9 D6, +13 = 04, +0F = 00, +17 = D1, 7E:000E = 14 (the start of animation 20 of sprite 76, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 20 of sprite 76 by itself for 240 frames. Does not happen in normal play.

w7_forced_launch-octopus_07_76_21.gif (with w7_forced_launch-octopus_07_76_21.png): OID 07, sprite 76, animation 21; 124 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 124b110597a061c2d8b8ccdf021dc85360d2278460e5366aa3c49951d5da6bb2. Recording b15-d-rex-61-1-normal-hunt, savestate at frame 14274; write at frame 14282 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = B4 D6, +13 = 08, +0F = 80, +17 = D3, 7E:000E = 15 (the routine had written +13 06 +14 D589 +0F 00 +17 80). Sources: H26 records/47 (R125); proof: build/H26/callers.json#/records/47. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = B4 D6, +13 = 08, +0F = 80, +17 = D3, 7E:000E = 15 (the start of animation 21 of sprite 76, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 21 of sprite 76 by itself for 240 frames. Does not happen in normal play.

w7_forced_launch-octopus_07_76_22.gif (with w7_forced_launch-octopus_07_76_22.png): OID 07, sprite 76, animation 22; 124 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 bde5cd8bd5ee994f114d6b8cc9184f2c944172bc4d79c21033ea90f1096941ed. Recording b15-d-rex-61-1-normal-hunt, savestate at frame 14274; write at frame 14282 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = B9 D6, +13 = 08, +0F = 80, +17 = D4, 7E:000E = 16 (the routine had written +13 06 +14 D589 +0F 00 +17 80). Sources: H26 records/48 (R125); proof: build/H26/callers.json#/records/48. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = B9 D6, +13 = 08, +0F = 80, +17 = D4, 7E:000E = 16 (the start of animation 22 of sprite 76, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 22 of sprite 76 by itself for 240 frames. Does not happen in normal play.

w7_forced_launch-octopus_07_76_23.gif (with w7_forced_launch-octopus_07_76_23.png): OID 07, sprite 76, animation 23; 124 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 dbf145e7801d33ddeec94549653c3541fa4dfd5528b949a4b22157bb9e753d8d. Recording b15-d-rex-61-1-normal-hunt, savestate at frame 14274; write at frame 14282 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = BE D6, +13 = 08, +0F = 80, +17 = D5, 7E:000E = 17 (the routine had written +13 06 +14 D589 +0F 00 +17 80). Sources: H26 records/49 (R125); proof: build/H26/callers.json#/records/49. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = BE D6, +13 = 08, +0F = 80, +17 = D5, 7E:000E = 17 (the start of animation 23 of sprite 76, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 23 of sprite 76 by itself for 240 frames. Does not happen in normal play.

w7_forced_launch-octopus_07_76_24.gif (with w7_forced_launch-octopus_07_76_24.png): OID 07, sprite 76, animation 24; 124 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 da2b25e310d1a25ff20cb472e286e2d7493498285ffcbb55113feeaf41ee8bdf. Recording b15-d-rex-61-1-normal-hunt, savestate at frame 14274; write at frame 14282 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = C3 D6, +13 = 08, +0F = 80, +17 = D6, 7E:000E = 18 (the routine had written +13 06 +14 D589 +0F 00 +17 80). Sources: H26 records/50 (R125); proof: build/H26/callers.json#/records/50. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = C3 D6, +13 = 08, +0F = 80, +17 = D6, 7E:000E = 18 (the start of animation 24 of sprite 76, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 24 of sprite 76 by itself for 240 frames. Does not happen in normal play.

w7_forced_launch-octopus_07_76_25.gif (with w7_forced_launch-octopus_07_76_25.png): OID 07, sprite 76, animation 25; 124 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 7184f461d1cd527fff1c6ff09d10727766836a66ec882745a83f93305d0b21c1. Recording b15-d-rex-61-1-normal-hunt, savestate at frame 14274; write at frame 14282 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = C8 D6, +13 = 08, +0F = 80, +17 = D7, 7E:000E = 19 (the routine had written +13 06 +14 D589 +0F 00 +17 80). Sources: H26 records/51 (R125); proof: build/H26/callers.json#/records/51. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = C8 D6, +13 = 08, +0F = 80, +17 = D7, 7E:000E = 19 (the start of animation 25 of sprite 76, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 25 of sprite 76 by itself for 240 frames. Does not happen in normal play.

w7_forced_launch-octopus_07_76_26.gif (with w7_forced_launch-octopus_07_76_26.png): OID 07, sprite 76, animation 26; 124 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 6fec74addf533e7be54f6d276257e7a1b753ce12c9abf52137a4fca21714cf25. Recording b15-d-rex-61-1-normal-hunt, savestate at frame 14274; write at frame 14282 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = CD D6, +13 = 08, +0F = 80, +17 = D8, 7E:000E = 1A (the routine had written +13 06 +14 D589 +0F 00 +17 80). Sources: H26 records/52 (R125); proof: build/H26/callers.json#/records/52. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = CD D6, +13 = 08, +0F = 80, +17 = D8, 7E:000E = 1A (the start of animation 26 of sprite 76, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 26 of sprite 76 by itself for 240 frames. Does not happen in normal play.

w7_forced_launch-octopus_07_76_27.gif (with w7_forced_launch-octopus_07_76_27.png): OID 07, sprite 76, animation 27; 124 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 e936a1b205c01eb2102a1767bc06d35dc2da37a0b04054510c1c74151aeeaf24. Recording b15-d-rex-61-1-normal-hunt, savestate at frame 14274; write at frame 14282 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = D2 D6, +13 = 08, +0F = 80, +17 = D9, 7E:000E = 1B (the routine had written +13 06 +14 D589 +0F 00 +17 80). Sources: H26 records/53 (R125); proof: build/H26/callers.json#/records/53. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = D2 D6, +13 = 08, +0F = 80, +17 = D9, 7E:000E = 1B (the start of animation 27 of sprite 76, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 27 of sprite 76 by itself for 240 frames. Does not happen in normal play.

w7_forced_launch-octopus_07_76_28.gif (with w7_forced_launch-octopus_07_76_28.png): OID 07, sprite 76, animation 28; 124 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 82ebc889b5ea1e9f8fdd8446c282a073ec59640506e3b67bb360d6d10abffd9a. Recording b15-d-rex-61-1-normal-hunt, savestate at frame 14274; write at frame 14282 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = D7 D6, +13 = 08, +0F = 80, +17 = DA, 7E:000E = 1C (the routine had written +13 06 +14 D589 +0F 00 +17 80). Sources: H26 records/54 (R125); proof: build/H26/callers.json#/records/54. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = D7 D6, +13 = 08, +0F = 80, +17 = DA, 7E:000E = 1C (the start of animation 28 of sprite 76, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 28 of sprite 76 by itself for 240 frames. Does not happen in normal play.

w7_forced_launch-octopus_07_76_29.gif (with w7_forced_launch-octopus_07_76_29.png): OID 07, sprite 76, animation 29; 124 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 870f9acb27637e4331dd80ab67b54696cb1f9815ef43fc4c2e43a7adada3da9b. Recording b15-d-rex-61-1-normal-hunt, savestate at frame 14274; write at frame 14282 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = DC D6, +13 = 08, +0F = 80, +17 = DB, 7E:000E = 1D (the routine had written +13 06 +14 D589 +0F 00 +17 80). Sources: H26 records/55 (R125); proof: build/H26/callers.json#/records/55. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = DC D6, +13 = 08, +0F = 80, +17 = DB, 7E:000E = 1D (the start of animation 29 of sprite 76, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 29 of sprite 76 by itself for 240 frames. Does not happen in normal play.

w7_forced_launch-octopus_07_76_30.gif (with w7_forced_launch-octopus_07_76_30.png): OID 07, sprite 76, animation 30; 124 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 68a902aa40212b9b108e618f7bd5e2a3e1568720d1695b722dec65735c906996. Recording b15-d-rex-61-1-normal-hunt, savestate at frame 14274; write at frame 14282 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = E1 D6, +13 = 08, +0F = 80, +17 = DC, 7E:000E = 1E (the routine had written +13 06 +14 D589 +0F 00 +17 80). Sources: H26 records/56 (R125); proof: build/H26/callers.json#/records/56. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = E1 D6, +13 = 08, +0F = 80, +17 = DC, 7E:000E = 1E (the start of animation 30 of sprite 76, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 30 of sprite 76 by itself for 240 frames. Does not happen in normal play.

w7_forced_launch-octopus_07_76_31.gif (with w7_forced_launch-octopus_07_76_31.png): OID 07, sprite 76, animation 31; 124 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 ca747b042d3b6915b9265c9112d10a26576807a72a2a9786bd19f1b836aba018. Recording b15-d-rex-61-1-normal-hunt, savestate at frame 14274; write at frame 14282 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = E6 D6, +13 = 08, +0F = 80, +17 = 86, 7E:000E = 1F (the routine had written +13 06 +14 D589 +0F 00 +17 80). Sources: H26 records/57 (R125); proof: build/H26/callers.json#/records/57. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = E6 D6, +13 = 08, +0F = 80, +17 = 86, 7E:000E = 1F (the start of animation 31 of sprite 76, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 31 of sprite 76 by itself for 240 frames. Does not happen in normal play.

w7_forced_launch-octopus_07_76_32.gif (with w7_forced_launch-octopus_07_76_32.png): OID 07, sprite 76, animation 32; 124 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 f821e5529528375234fcaeec7ce547d93c529731b7a0c94743b70f87f72d6c0d. Recording b15-d-rex-61-1-normal-hunt, savestate at frame 14274; write at frame 14282 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = EB D6, +13 = 08, +0F = 80, +17 = 87, 7E:000E = 20 (the routine had written +13 06 +14 D589 +0F 00 +17 80). Sources: H26 records/58 (R125); proof: build/H26/callers.json#/records/58. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = EB D6, +13 = 08, +0F = 80, +17 = 87, 7E:000E = 20 (the start of animation 32 of sprite 76, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 32 of sprite 76 by itself for 240 frames. Does not happen in normal play.

w7_forced_launch-octopus_07_76_33.gif (with w7_forced_launch-octopus_07_76_33.png): OID 07, sprite 76, animation 33; 124 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 53c441a2533bf6dcb1a5c3dc852bb8b47e7ebd2cb98858ac6ce8c74e5503834a. Recording b15-d-rex-61-1-normal-hunt, savestate at frame 14274; write at frame 14282 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = F0 D6, +13 = 08, +0F = 80, +17 = 88, 7E:000E = 21 (the routine had written +13 06 +14 D589 +0F 00 +17 80). Sources: H26 records/59 (R125); proof: build/H26/callers.json#/records/59. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = F0 D6, +13 = 08, +0F = 80, +17 = 88, 7E:000E = 21 (the start of animation 33 of sprite 76, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 33 of sprite 76 by itself for 240 frames. Does not happen in normal play.

w7_forced_launch-octopus_07_76_34.gif (with w7_forced_launch-octopus_07_76_34.png): OID 07, sprite 76, animation 34; 124 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 68d81531468328c6aec422565bc69750f4e3cce27286067652067a5cdb186dc5. Recording b15-d-rex-61-1-normal-hunt, savestate at frame 14274; write at frame 14282 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = F5 D6, +13 = 08, +0F = 80, +17 = D1, 7E:000E = 22 (the routine had written +13 06 +14 D589 +0F 00 +17 80). Sources: H26 records/60 (R125); proof: build/H26/callers.json#/records/60. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = F5 D6, +13 = 08, +0F = 80, +17 = D1, 7E:000E = 22 (the start of animation 34 of sprite 76, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 34 of sprite 76 by itself for 240 frames. Does not happen in normal play.

w7_forced_launch-octopus_07_76_35.gif (with w7_forced_launch-octopus_07_76_35.png): OID 07, sprite 76, animation 35; 124 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 1e43971dcd6ee13b62a03bbeced563f0aefaa59634685a6109abd9d0fb2c01e3. Recording b15-d-rex-61-1-normal-hunt, savestate at frame 14274; write at frame 14282 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = FA D6, +13 = 08, +0F = 80, +17 = 8F, 7E:000E = 23 (the routine had written +13 06 +14 D589 +0F 00 +17 80). Sources: H26 records/61 (R125); proof: build/H26/callers.json#/records/61. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = FA D6, +13 = 08, +0F = 80, +17 = 8F, 7E:000E = 23 (the start of animation 35 of sprite 76, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 35 of sprite 76 by itself for 240 frames. Does not happen in normal play.

w7_forced_launch-octopus_07_76_36.gif (with w7_forced_launch-octopus_07_76_36.png): OID 07, sprite 76, animation 36; 124 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 530b08722096cc584cd30b8be6a4e003234da85f960bdab5caa92b343b872cf0. Recording b15-d-rex-61-1-normal-hunt, savestate at frame 14274; write at frame 14282 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = FF D6, +13 = 08, +0F = 80, +17 = D2, 7E:000E = 24 (the routine had written +13 06 +14 D589 +0F 00 +17 80). Sources: H26 records/62 (R125); proof: build/H26/callers.json#/records/62. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = FF D6, +13 = 08, +0F = 80, +17 = D2, 7E:000E = 24 (the start of animation 36 of sprite 76, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 36 of sprite 76 by itself for 240 frames. Does not happen in normal play.

Sting Chameleon

The game has these 6 Sting Chameleon animations, but never uses them: his code changes animation at 20 places, and none of them asks for one of these.

Forced GIF: Sting Chameleon, animation 1 of 6.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself until the boss's own code asked for another. Does not happen in normal play. Sting Chameleon: animation 1 of 6 the game never uses. Open the GIF · Still picture
See the other 5 animations
Forced GIF: Sting Chameleon, animation 2 of 6.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself until the boss's own code asked for another. Does not happen in normal play. Sting Chameleon: animation 2 of 6 the game never uses. Open the GIF · Still picture
Forced GIF: Sting Chameleon, animation 3 of 6.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself until the boss's own code asked for another. Does not happen in normal play. Sting Chameleon: animation 3 of 6 the game never uses. Open the GIF · Still picture
Forced GIF: Sting Chameleon, animation 4 of 6.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself until the boss's own code asked for another. Does not happen in normal play. Sting Chameleon: animation 4 of 6 the game never uses. Open the GIF · Still picture
Forced GIF: Sting Chameleon, animation 5 of 6.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself until the boss's own code asked for another. Does not happen in normal play. Sting Chameleon: animation 5 of 6 the game never uses. Open the GIF · Still picture
Forced GIF: Sting Chameleon, animation 6 of 6.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself until the boss's own code asked for another. Does not happen in normal play. Sting Chameleon: animation 6 of 6 the game never uses. Open the GIF · Still picture
Technical details

Proof (knowledge_base/mmx1/rom/boss_unrequested_animation_cells_2026-10-11_r125.json, proof never-requested-0A, row boss.sting-chameleon.presentation; as the KB has it): H26 'never requested' (build/H26/result-notes.md, Proofs): the OID 0A closure from main 88:853E (3496 instructions, complete, no unresolved dispatch) has 20 resolved 84:8F07 (setSpriteAnim) callers; the A each one passes is listed below; none passes the k of an animation listed here, so 84:8F07 never starts it and no frame record of it becomes current (84:8EEA steps only the current animation). +16 = 35 is set by the sprite stores listed. Main 88:853E. H26, first animation: never requested: the OID 0A closure (3496 instructions, complete) has 20 resolved 84:8F07 callers, none with A = 9: 88:85C6=[3], 88:8664=[17], 88:8681=[6], 88:86A2=[5], 88:8705=[0], 88:8756=[21], 88:87E6=[1], 88:87F9=[1], 88:8894=[6], 88:88EB=[18], 88:8954=[3], 88:8976=[3], 88:8AFA=[4], 88:8B72=[8], 88:8BB3=[8], 88:8BE2=[7], 88:8BFA=[12, 13, 14, 15], 88:8C24=[12, 13, 14, 15], 88:8C71=[7], 88:8CBF=[2].

w7_forced_sting-chameleon_0A_23_9.gif (with w7_forced_sting-chameleon_0A_23_9.png): OID 0A, sprite 23, animation 9; 43 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 e975e2baa1e36bfd5afc16ab56f5df506590db6672ef4209e673e2b27f533015. Recording sting-chameleon, savestate at frame 20034; write at frame 20042 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = 67 B5, +13 = 08, +0F = 80, +17 = 9E, 7E:000E = 09 (the routine had written +13 10 +14 B4C9 +0F 00 +17 80). Sources: H26 records/106 (R125); proof: build/H26/callers.json#/records/106. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = 67 B5, +13 = 08, +0F = 80, +17 = 9E, 7E:000E = 09 (the start of animation 9 of sprite 23, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 9 of sprite 23 by itself until the boss's own code asked for another animation at frame 20107. Does not happen in normal play.

w7_forced_sting-chameleon_0A_23_10.gif (with w7_forced_sting-chameleon_0A_23_10.png): OID 0A, sprite 23, animation 10; 43 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 f4b379327c5addf9cb85f908beaa2fb1942becf4040cec5f5041747ad24874fa. Recording sting-chameleon, savestate at frame 20034; write at frame 20042 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = 6C B5, +13 = 08, +0F = 80, +17 = 9F, 7E:000E = 0A (the routine had written +13 10 +14 B4C9 +0F 00 +17 80). Sources: H26 records/107 (R125); proof: build/H26/callers.json#/records/107. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = 6C B5, +13 = 08, +0F = 80, +17 = 9F, 7E:000E = 0A (the start of animation 10 of sprite 23, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 10 of sprite 23 by itself until the boss's own code asked for another animation at frame 20107. Does not happen in normal play.

w7_forced_sting-chameleon_0A_23_11.gif (with w7_forced_sting-chameleon_0A_23_11.png): OID 0A, sprite 23, animation 11; 43 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 a0ceefb2b6dd69bd1d1649d30aef7e733f22d66e79c4e570b4848f9aa6edef15. Recording sting-chameleon, savestate at frame 20034; write at frame 20042 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = 71 B5, +13 = 08, +0F = 80, +17 = A0, 7E:000E = 0B (the routine had written +13 10 +14 B4C9 +0F 00 +17 80). Sources: H26 records/108 (R125); proof: build/H26/callers.json#/records/108. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = 71 B5, +13 = 08, +0F = 80, +17 = A0, 7E:000E = 0B (the start of animation 11 of sprite 23, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 11 of sprite 23 by itself until the boss's own code asked for another animation at frame 20107. Does not happen in normal play.

w7_forced_sting-chameleon_0A_23_16.gif (with w7_forced_sting-chameleon_0A_23_16.png): OID 0A, sprite 23, animation 16; 43 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 607437312fb847441bf03af86b610d80cc3a4361c22888c4fb3c979d51b4f1b7. Recording sting-chameleon, savestate at frame 20034; write at frame 20042 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = 02 B6, +13 = 08, +0F = 80, +17 = AE, 7E:000E = 10 (the routine had written +13 10 +14 B4C9 +0F 00 +17 80). Sources: H26 records/110 (R125); proof: build/H26/callers.json#/records/110. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = 02 B6, +13 = 08, +0F = 80, +17 = AE, 7E:000E = 10 (the start of animation 16 of sprite 23, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 16 of sprite 23 by itself until the boss's own code asked for another animation at frame 20107. Does not happen in normal play.

w7_forced_sting-chameleon_0A_23_19.gif (with w7_forced_sting-chameleon_0A_23_19.png): OID 0A, sprite 23, animation 19; 43 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 d28f5ea67dfb0c31c5903710510ea73c63207905411e9ec4f4352496b16cbef5. Recording sting-chameleon, savestate at frame 20034; write at frame 20042 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = 23 B6, +13 = 7F, +0F = 80, +17 = B0, 7E:000E = 13 (the routine had written +13 10 +14 B4C9 +0F 00 +17 80). Sources: H26 records/111 (R125); proof: build/H26/callers.json#/records/111. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = 23 B6, +13 = 7F, +0F = 80, +17 = B0, 7E:000E = 13 (the start of animation 19 of sprite 23, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 19 of sprite 23 by itself until the boss's own code asked for another animation at frame 20107. Does not happen in normal play.

w7_forced_sting-chameleon_0A_23_20.gif (with w7_forced_sting-chameleon_0A_23_20.png): OID 0A, sprite 23, animation 20; 43 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 df249d4fbecbd1730bf798871c2e46529bc35435398863072671db4e59bf15e6. Recording sting-chameleon, savestate at frame 20034; write at frame 20042 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = 28 B6, +13 = 7F, +0F = 80, +17 = B1, 7E:000E = 14 (the routine had written +13 10 +14 B4C9 +0F 00 +17 80). Sources: H26 records/112 (R125); proof: build/H26/callers.json#/records/112. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = 28 B6, +13 = 7F, +0F = 80, +17 = B1, 7E:000E = 14 (the start of animation 20 of sprite 23, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 20 of sprite 23 by itself until the boss's own code asked for another animation at frame 20107. Does not happen in normal play.

Armored Armadillo

The game has these 5 Armored Armadillo animations, but never uses them: the part of the code that asks for animations with these numbers always takes them from another set of the boss’s drawings, never from this one.

Forced GIF: Armored Armadillo, animation 1 of 5.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself until the boss's own code asked for another. Does not happen in normal play. Armored Armadillo: animation 1 of 5 the game never uses. Open the GIF · Still picture
See the other 4 animations
Forced GIF: Armored Armadillo, animation 2 of 5.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself until the boss's own code asked for another. Does not happen in normal play. Armored Armadillo: animation 2 of 5 the game never uses. Open the GIF · Still picture
Forced GIF: Armored Armadillo, animation 3 of 5.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself until the boss's own code asked for another. Does not happen in normal play. Armored Armadillo: animation 3 of 5 the game never uses. Open the GIF · Still picture
Forced GIF: Armored Armadillo, animation 4 of 5.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself until the boss's own code asked for another. Does not happen in normal play. Armored Armadillo: animation 4 of 5 the game never uses. Open the GIF · Still picture
Forced GIF: Armored Armadillo, animation 5 of 5.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself until the boss's own code asked for another. Does not happen in normal play. Armored Armadillo: animation 5 of 5 the game never uses. Open the GIF · Still picture
Technical details

Proof (knowledge_base/mmx1/rom/boss_unrequested_child_cells_2026-10-11_h28.json, proof aa-helper-pairing, row boss.armored-armadillo.presentation; as the KB has it): Armored Armadillo (OID 14): every caller of A = 2..6 (H26 records 99:2-99:6) enters helper 83:B9C8; A != 0B goes 83:B9D7 LDA table, 83:B9DA LDX #62, 83:B9DC STX $16, 83:B9DE JSL 84:8F07 (sprite 98); A = 0B goes 83:B9EA LDX #63, 83:B9EC STX $16, 83:B9EE LDA #00, 83:B9F0 JSL 84:8F07 (99:0). The OID's other +16 stores: 82:802D (85), 83:B17F via 82:827D (62), 84:825C (7E); its only other 84:8F07 call is 83:B28F (A = 21). So 84:8F07 never starts animations 2..6 under sprite 99.

w7_forced_armored-armadillo_14_63_2.gif (with w7_forced_armored-armadillo_14_63_2.png): OID 14, sprite 63, animation 2; 59 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 2d79c30ee3f567d544beafc51738bdcb6cdc3ab7d53f742c71775e5145c521ae. Recording armored-armadillo, savestate at frame 10144; write at frame 10152 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = 3D CE, +13 = 02, +0F = 00, +17 = 88, 7E:000E = 02 (the routine had written +13 01 +14 CE21 +0F 00 +17 80). Sources: H28; proof: aa-helper-pairing. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = 3D CE, +13 = 02, +0F = 00, +17 = 88, 7E:000E = 02 (the start of animation 2 of sprite 63, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 2 of sprite 63 by itself until the boss's own code asked for another animation at frame 10249. Does not happen in normal play.

w7_forced_armored-armadillo_14_63_3.gif (with w7_forced_armored-armadillo_14_63_3.png): OID 14, sprite 63, animation 3; 59 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 b0a63508522dae630186a8558bcb82e2cad56302a28d5fe381cc4d60535ed835. Recording armored-armadillo, savestate at frame 10144; write at frame 10152 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = 48 CE, +13 = 02, +0F = 00, +17 = 8B, 7E:000E = 03 (the routine had written +13 01 +14 CE21 +0F 00 +17 80). Sources: H28; proof: aa-helper-pairing. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = 48 CE, +13 = 02, +0F = 00, +17 = 8B, 7E:000E = 03 (the start of animation 3 of sprite 63, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 3 of sprite 63 by itself until the boss's own code asked for another animation at frame 10249. Does not happen in normal play.

w7_forced_armored-armadillo_14_63_4.gif (with w7_forced_armored-armadillo_14_63_4.png): OID 14, sprite 63, animation 4; 59 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 f246cb749570ba15f8e4d19781bb4434032d03e6c5a977f14e32782c0e2081d3. Recording armored-armadillo, savestate at frame 10144; write at frame 10152 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = 56 CE, +13 = 02, +0F = 80, +17 = 8E, 7E:000E = 04 (the routine had written +13 01 +14 CE21 +0F 00 +17 80). Sources: H28; proof: aa-helper-pairing. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = 56 CE, +13 = 02, +0F = 80, +17 = 8E, 7E:000E = 04 (the start of animation 4 of sprite 63, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 4 of sprite 63 by itself until the boss's own code asked for another animation at frame 10249. Does not happen in normal play.

w7_forced_armored-armadillo_14_63_5.gif (with w7_forced_armored-armadillo_14_63_5.png): OID 14, sprite 63, animation 5; 59 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 5a794c1b761c5c995638fee75d54fd63857b8a945dfb1a942024e338a83bcf2e. Recording armored-armadillo, savestate at frame 10144; write at frame 10152 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = 5B CE, +13 = 02, +0F = 80, +17 = 8F, 7E:000E = 05 (the routine had written +13 01 +14 CE21 +0F 00 +17 80). Sources: H28; proof: aa-helper-pairing. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = 5B CE, +13 = 02, +0F = 80, +17 = 8F, 7E:000E = 05 (the start of animation 5 of sprite 63, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 5 of sprite 63 by itself until the boss's own code asked for another animation at frame 10249. Does not happen in normal play.

w7_forced_armored-armadillo_14_63_6.gif (with w7_forced_armored-armadillo_14_63_6.png): OID 14, sprite 63, animation 6; 59 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 c1ca9772a14a2708b5e4e5b0ffc774f2b6ba1a59b966ca4ed4a965dee798a930. Recording armored-armadillo, savestate at frame 10144; write at frame 10152 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = 60 CE, +13 = 02, +0F = 80, +17 = 90, 7E:000E = 06 (the routine had written +13 01 +14 CE21 +0F 00 +17 80). Sources: H28; proof: aa-helper-pairing. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = 60 CE, +13 = 02, +0F = 80, +17 = 90, 7E:000E = 06 (the start of animation 6 of sprite 63, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 6 of sprite 63 by itself until the boss's own code asked for another animation at frame 10249. Does not happen in normal play.

Storm Eagle

The game has this Storm Eagle animation, but never uses it: the only part of the code that asks for an animation with this number first switches the boss’s set of drawings, so it shows another one, never this one.

Forced GIF: Storm Eagle, the animation the game never uses.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself for 240 frames. Does not happen in normal play. Storm Eagle: the animation the game never uses. This GIF is over the site’s size limit; a still picture from the same forced clip takes its place. Still picture
Technical details

Proof (knowledge_base/mmx1/rom/boss_unrequested_animation_cells_2026-10-11_r125.json, proof caller-sprite-differs-52, row boss.storm-eagle.presentation; as the KB has it): H26 'every caller has +16 proven != 137' (build/H26/result-notes.md, Proofs): every caller has +16 proven != 137: 87:DB7D +16 [138] (87:DBCD). The only 84:8F07 caller with A = 2 in the OID 52 closure (main 87:D85C) runs, on every path, after the +16 store listed, so it starts animation 2 of another sprite, never of sprite 137. Main 87:D85C. H26, first animation: every caller has +16 proven != 137: 87:DB7D +16 [138] (87:DBCD).

w7_forced_storm-eagle_52_89_2.gif (with w7_forced_storm-eagle_52_89_2.png): OID 52, sprite 89, animation 2; 124 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 3214150f2dbdb3e232c9a67b8f21d56f96e529a544187584642ae81638253c08. Recording storm-eagle, savestate at frame 15210; write at frame 15218 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0EA8: 7E:0EBC/0EBD = 49 DB, +13 = 05, +0F = 00, +17 = 80, 7E:000E = 02 (the routine had written +13 06 +14 DB38 +0F 00 +17 81). Sources: H26 records/113 (R125); proof: build/H26/callers.json#/records/113. The GIF (1456619 bytes) is not on the site: it is over the 1 MB per GIF limit of tools/validate_site.py; the still takes its place. W7 label, exact: Forced in the emulator: we wrote 7E:0EBC/0EBD = 49 DB, +13 = 05, +0F = 00, +17 = 80, 7E:000E = 02 (the start of animation 2 of sprite 89, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 2 of sprite 89 by itself for 240 frames. Does not happen in normal play.

Sigma

The game has this Sigma animation, but never uses it: the only part of the code that asks for an animation with this number first switches his set of drawings, so it shows another one, never this one.

Forced GIF: Sigma, the animation the game never uses.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself for 240 frames. Does not happen in normal play. Sigma: the animation the game never uses. Open the GIF · Still picture
Technical details

Proof (knowledge_base/mmx1/rom/boss_unrequested_animation_cells_2026-10-11_r125.json, proof caller-sprite-differs-65, row boss.sigma-humanoid.presentation; as the KB has it): H26 'every caller has +16 proven != 62' (build/H26/result-notes.md, Proofs): every caller has +16 proven != 62: 88:C447 +16 [161] (88:C46D 82:827D). The only 84:8F07 caller with A = 0 in the OID 65 closure (main 88:C3B2) runs, on every path, after the +16 store listed, so it starts animation 0 of another sprite, never of sprite 62. Main 88:C3B2. H26, first animation: every caller has +16 proven != 62: 88:C447 +16 [161] (88:C46D 82:827D).

w7_forced_sigma-humanoid_65_3E_0.gif (with w7_forced_sigma-humanoid_65_3E_0.png): OID 65, sprite 3E, animation 0; 124 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 d8ac918aafdb8423bdc52574d9f6d6f9b7a903ef707a45a7e5fdc1d3c49ab9ce. Recording b15-sigma-final-65-0-normal-hunt, savestate at frame 9326; write at frame 9334 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 0E68: 7E:0E7C/0E7D = 24 BF, +13 = 10, +0F = 80, +17 = 80, 7E:000E = 00 (the routine had written +13 10 +14 BF3A +0F 80 +17 85). Sources: H26 records/90 (R125); proof: build/H26/callers.json#/records/90. W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = 24 BF, +13 = 10, +0F = 80, +17 = 80, 7E:000E = 00 (the start of animation 0 of sprite 3E, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 0 of sprite 3E by itself for 240 frames. Does not happen in normal play.

Flame Mammoth: an object of the fight

An object Flame Mammoth creates in the fight has this animation, but the game never uses it: that object’s code only asks for four other animations, never this one.

Forced GIF: Object of the Flame Mammoth fight, the animation the game never uses.
Forced in the emulator: we wrote the start of this animation into memory, the way the game itself would; the game played it by itself for 240 frames. Does not happen in normal play. Object of the Flame Mammoth fight: the animation the game never uses. Open the GIF · Still picture
Technical details

Proof (knowledge_base/mmx1/rom/boss_unrequested_cells_2026-10-11_h29.json, proof fm-1428-21-calls, row boss.flame-mammoth.presentation; as the KB has it): animation [17]: child 1428:21 (main 87:86E2) calls 84:8F07 only at 87:874F (A = 14), 87:8777 (A = 15), 87:87FE (A = 2, after 87:87FC LDA #02) and 87:884E (A = 0, after 87:884C), the last two in its data-marked states decoded from bytes (87:87D3, 87:8817; 87:885A has none); the routines they call (84:8EEA, 84:91BE, 84:9B03, 82:83A3, 82:80B4, 87:8881) call 84:8F07 at no site

w7_forced_flame-mammoth_1428-21_06_17.gif (with w7_forced_flame-mammoth_1428-21_06_17.png): object 1428:21 (OID 21), sprite 06, animation 17; 124 frames in the 256 × 224 GIF, shown at 2x without smoothing; GIF SHA-256 934f663f893b92133eb8e2976d00a7b33e698cd2de566ffc714e88a12c0f9180. Recording flame-mammoth, savestate at frame 25611; write at frame 25619 at 84:8F51 (RTL of the owner's own 84:8F07 call), slot 1428: 7E:143C/143D = 46 A7, +13 = 01, +0F = 00, +17 = BC, 7E:000E = 11 (the routine had written +13 06 +14 A72F +0F 00 +17 B6). Sources: H29; proof: fm-1428-21-calls. W7 label, exact: Forced in the emulator: we wrote 7E:143C/143D = 46 A7, +13 = 01, +0F = 00, +17 = BC, 7E:000E = 11 (the start of animation 17 of sprite 06, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 17 of sprite 06 by itself for 240 frames. Does not happen in normal play.

Technical details

Proofs: H26 (build/H26/callers.json, result-notes.md) for Launch Octopus, Sting Chameleon, Storm Eagle and Sigma, counted by R125 in the KB knowledge_base/mmx1/rom/boss_unrequested_animation_cells_2026-10-11_r125.json; H28 for Armored Armadillo (KB knowledge_base/mmx1/rom/boss_unrequested_child_cells_2026-10-11_h28.json); H29 for Boomer Kuwanger 117:22 and Flame Mammoth's object 1428:21 (KB knowledge_base/mmx1/rom/boss_unrequested_cells_2026-10-11_h29.json). Cards H26 to H29 write the sprite in decimal and W7's files in hexadecimal: 117 = $75, 118 = $76, 35 = $23, 99 = $63, 137 = $89, 62 = $3E.

Each GIF's visible label says it is forced and what the game did by itself; the bytes we wrote, with the addresses, are below, in each part, in W7's exact label.

Source: the game’s build/W7/manifest.json (card W7-forced-gifs-impossible-animations, 2026-10-11), imported from commit a57a6ea1b by tools/render_wiki.py --import-forced (data/wiki-forced-animations.json): 37 boss animation GIFs in 7 parts, 73 files in this part, each checked against the manifest’s SHA-256 and size and copied byte for byte; 1 GIF over 1 MB left out (w7_forced_storm-eagle_52_89_2.gif). Format, as the manifest has it: GIF 256x224 (rows 7..230), nearest, 30 fps, palettegen diff / paletteuse no dither; PNG still 256x224. Emulator: headless Mesen (--testrunner via tools/oracle/run_mesen.py, --disable-frame-skipping), one at a time, below normal; raw frames on S:/mmx-captures/W7, deleted after each GIF. Manifest count: {"items": 116, "done": 38, "not_done": 79}; 79 items without a GIF, listed below.

Method check (check_seen_animation): on an animation the game does use (OID 05, sprite 75, animation 24, recording boomer-kuwanger), the forced version and the recording with nothing forced gave 248 of 248 frames equal pixel for pixel (frames 18339 to 18586). As the manifest has it: seen animation: BK (OID 05) sprite 75, its own call with A = 18 (k 24) at f18346; run B set A's low byte to 00 at 84:8F07, then wrote k 24's bytes at 84:8F51; compared with the unforced run W7 label, exact: Forced in the emulator: we wrote 7E:0E7C/0E7D = 47 D4, +13 = 16, +0F = 00, +17 = 80, 7E:000E = 18 (the start of animation 24 of sprite 75, as 84:8F07 writes it), right after one of the boss's own calls; the game played animation 24 of sprite 75 by itself for 240 frames. Does not happen in normal play.

Forced check GIF: Boomer Kuwanger in an animation the game does use.
Forced in the emulator, to check the method: the forced animation came out equal to the normal game’s. Boomer Kuwanger: an animation the game does use, forced to check the method. Open the GIF · Still picture

No GIF: thunder-slimer, 36 (03_01_0, 03_01_1, 03_01_2, 03_01_3, 03_02_0, 03_02_1, 03_02_10, 03_02_11, 03_02_12, 03_02_13, 03_02_2, 03_02_3, 03_02_4, 03_02_5, 03_02_6, 03_02_7, 03_02_8, 03_02_9, 03_04_0, 03_04_1, 03_1E_0, 03_1E_1, 03_20_0, 03_20_1, 03_20_10, 03_20_11, 03_20_12, 03_20_2, 03_20_3, 03_20_4, 03_20_5, 03_20_6, 03_20_7, 03_20_8, 03_20_9, 03_3C_0). W7’s reason, as the manifest has it: no call of 84:8F07 by this owner with this sprite in the take (b15-thunder-slimer-03-0-normal-hunt), so nothing to replace

No GIF: lo-midboss-0x21, 25 (21_10_0, 21_10_1, 21_10_10, 21_10_11, 21_10_12, 21_10_13, 21_10_14, 21_10_15, 21_10_2, 21_10_3, 21_10_4, 21_10_5, 21_10_6, 21_10_7, 21_10_8, 21_10_9, 21_14_0, 21_14_1, 21_14_2, 21_14_3, 21_14_4, 21_78_0, 21_78_1, 21_78_2, 21_78_3). W7’s reason, as the manifest has it: no call of 84:8F07 by this owner with this sprite in the take (b15-lo-midboss-0x21-21-1-normal-hunt), so nothing to replace

No GIF: armored-armadillo, 1 (1928-02_08_5). W7’s reason, as the manifest has it: its record after the loop is never drawn because the child despawns on it (H28 proof despawn-1928:02); a start written the way 84:8F07 writes it replays the same records, so the forcing cannot show it

No GIF: armored-armadillo, 1 (1928-22_17_0). W7’s reason, as the manifest has it: its record after the loop is never drawn because the child despawns on it (H28 proof despawn-1928:22); a start written the way 84:8F07 writes it replays the same records, so the forcing cannot show it

No GIF: sting-chameleon, 1 (1928-02_08_5). W7’s reason, as the manifest has it: its record after the loop is never drawn because the child despawns on it (H28 proof despawn-1928:02); a start written the way 84:8F07 writes it replays the same records, so the forcing cannot show it

No GIF: storm-eagle, 1 (1928-02_08_5). W7’s reason, as the manifest has it: its record after the loop is never drawn because the child despawns on it (H28 proof despawn-1928:02); a start written the way 84:8F07 writes it replays the same records, so the forcing cannot show it

No GIF: storm-eagle, 1 (1928-29_17_0). W7’s reason, as the manifest has it: its record after the loop is never drawn because the child despawns on it (H28 proof despawn-1928:29); a start written the way 84:8F07 writes it replays the same records, so the forcing cannot show it

No GIF: vile-intro, 3 (0E68-3C_7A_2, 0E68-3C_7A_6, 0E68-3C_7A_7). W7’s reason, as the manifest has it: no run in this session's budget (no take with the owner live was chosen)

No GIF: boomer-kuwanger, 1 (1928-02_08_5). W7’s reason, as the manifest has it: its record after the loop is never drawn because the child despawns on it (H28 proof despawn-1928:02); a start written the way 84:8F07 writes it replays the same records, so the forcing cannot show it

No GIF: flame-mammoth, 1 (1928-02_08_5). W7’s reason, as the manifest has it: its record after the loop is never drawn because the child despawns on it (H28 proof despawn-1928:02); a start written the way 84:8F07 writes it replays the same records, so the forcing cannot show it

No GIF: highway-giant-bee, 2 (1928-22_17_3, 1928-22_17_4). W7’s reason, as the manifest has it: its record after the loop is never drawn because the child despawns on it (H28 proof despawn-1928:22); a start written the way 84:8F07 writes it replays the same records, so the forcing cannot show it

No GIF: rangda-bangda, 2 (1928-3B_9B_7, 1928-3B_9B_8). W7’s reason, as the manifest has it: its first record has timer 1 and the spawn frame steps past it (H28 proof init-step-1928:3B, despawn-1928:3B); a start written the way 84:8F07 writes it is stepped past the same way

No GIF: armadillo-digging-machines, 1 (1928-02_08_5). W7’s reason, as the manifest has it: its record after the loop is never drawn because the child despawns on it (H28 proof despawn-1928:02); a start written the way 84:8F07 writes it replays the same records, so the forcing cannot show it

No GIF: chill-penguin, 1 (1928-02_08_5). W7’s reason, as the manifest has it: its record after the loop is never drawn because the child despawns on it (H28 proof despawn-1928:02); a start written the way 84:8F07 writes it replays the same records, so the forcing cannot show it

No GIF: spark-mandrill, 1 (1928-02_08_5). W7’s reason, as the manifest has it: its record after the loop is never drawn because the child despawns on it (H28 proof despawn-1928:02); a start written the way 84:8F07 writes it replays the same records, so the forcing cannot show it

No GIF: submarine, 1 (1928-0C_1A_0). W7’s reason, as the manifest has it: its record after the loop is never drawn because the child despawns on it (H28 proof despawn-1928:0C); a start written the way 84:8F07 writes it replays the same records, so the forcing cannot show it

Forgotten code in X1

The cartridge holds two enemy generators that no stage uses. A generator is a piece of a stage that creates enemies on its own, from time to time.

The first, while X was near it, would make an enemy appear from time to time a little to the left or right of X. The second would bring an enemy in from the left or the right edge of the screen.

None of the game’s 13 stages places these generators, and the four spots in the code that create pieces of this kind during play never create one of them. That is why they never show up in play.

We also looked through the 3412 copies of the game’s memory the project has already saved, and none shows one of them running. Those copies were not made to cover every stage, so they only back up what the stage lists already show.

Technical details

Source: knowledge_base/mmx1/rom/finder2_emitters_06_07_2026-10-10_u2.json in the game repository (card U2, 2026-10-10), read straight from the ROM. The two generators are entries 6 and 7 of the table PTR16_80F59A, called by the object lane $1D08..$1DF8 (stride $10) at 80:D39B: entry 6 goes to 80:F5FE, which calls 81:FCED, and entry 7 goes to 80:F603, which calls 81:FD7C.

81:FCED creates object 0x07 and 81:FD7C creates object 0x02. 0x07 and 0x02 are the game’s internal object numbers, not names; in the project census (docs/rom/census.md) those rows are called planty and chillPingu.

81:FCED: while the distance between the generator and X is under $80 horizontally and vertically, a counter goes down on each call; at zero an enemy is born at x = ((X’s x ± r) & $FFF0) + 8, with r = random & $7F, at the generator’s height, and the counter goes back to $78 (120 calls). 81:FD7C uses the same distance test (81:FDD0) and spawns at x = camera x target + (random & $0100), that is, at the left edge or 256 pixels to its right, and y = camera y target + $20, with parameter $40 on the left and $00 on the right; the counter goes back to $5A (90 calls). Both vanish when they leave the camera area (82:806E). The counts are in calls of the routine; how often it runs per frame was not measured.

Check: 0 of the 417 records of this kind in the 13 stage lists use index 6 or 7; the 4 calls of 82:8307 in the ROM write 0x12, 0x10, 0x11 and 0x1B; none of the 3412 WRAM captures on disk has an active generator 6 or 7. Limit: the captures are those earlier cards saved, not a sweep of every stage.

Music and sound effects

Stage select and ending music

All three play in the normal game, so they are no longer a curiosity: two on the stage select screen and one at the ending.

  • Stage select music

    Plays on the screen where you choose which boss to fight.

  • Stage select music when only Sigma is left

    Once all eight bosses are beaten and only Sigma's fortress is left, the same screen plays this other music.

  • Ending music

    Plays at the end of the game, after Sigma is defeated.

Sound effects

only-not-seen

The game has a list of 162 sound effects, and the sound test plays them all. During play, no point of the code calls 44 of them by a fixed number. The count examined 391 places in the code that play an effect; in 18 of them the effect number comes from a value kept in memory instead of a fixed number. The game also asks for two effect numbers that fall outside the list.

Each effect below was recorded in the game's sound test. There are 15 different sounds and, at the end, a single button for the other 29, which sound the same or nearly the same; their numbers are under Technical details.

  • Sound effect $04

    Recorded in the game's own sound test (Options menu). During play, no code plays this sound.

  • Sound effect $16

    Recorded in the game's own sound test (Options menu). During play, no code plays this sound.

  • Sound effect $24

    Recorded in the game's own sound test (Options menu). During play, no code plays this sound.

  • Sound effect $32

    Recorded in the game's own sound test (Options menu). During play, no code plays this sound.

  • Sound effect $3A

    Recorded in the game's own sound test (Options menu). During play, no code plays this sound.

  • Sound effect $54

    Recorded in the game's own sound test (Options menu). During play, no code plays this sound.

  • Sound effect $5C

    Recorded in the game's own sound test (Options menu). During play, no code plays this sound.

  • Sound effect $71

    Recorded in the game's own sound test (Options menu). During play, no code plays this sound.

  • Sound effect $7A

    Recorded in the game's own sound test (Options menu). During play, no code plays this sound.

  • Sound effect $7B

    Recorded in the game's own sound test (Options menu). During play, no code plays this sound.

  • Sound effect $81

    Recorded in the game's own sound test (Options menu). During play, no code plays this sound.

  • Sound effect $82

    Recorded in the game's own sound test (Options menu). During play, no code plays this sound.

  • Sound effect $83

    Recorded in the game's own sound test (Options menu). During play, no code plays this sound.

  • Sound effect $84

    Recorded in the game's own sound test (Options menu). During play, no code plays this sound.

  • Sound effect $A0

    Recorded in the game's own sound test (Options menu). During play, no code plays this sound.

  • The other 29 effects (a single sound)

    Recorded in the game's own sound test (Options menu). During play, no code plays this sound. This single button stands for the 29 effects that sound the same or nearly the same.

Two effects outside the test's list

only-not-seen

The sound test only goes up to effect $A2, but the game uses two more: $AE plays while X talks with Dr. Light inside the capsule, and $AF plays when X throws the Hadouken. Because the test never plays them, we wrote the number straight into the game's memory so we could record them.

  • Sound effect $AE: talking with Dr. Light in the capsule

    It is the sound that plays while X is inside a capsule talking with Dr. Light, before he receives the new part (legs, helmet, armor or arm) or the Hadouken.

    Forced in the emulator: does not happen in normal play

  • Sound effect $AF: Hadouken

    It is the Hadouken sound: it plays the moment X throws the fireball.

    Forced in the emulator: does not happen in normal play

Technical details

$20 and $29: the stage select screen is set up by routine 80:BCE1. At 80:BD47 it loads $20; if w_1e66 (7E:1E66) is not zero it switches to $29 (80:BD4E) and requests the music with JSL 80:87A2 at 80:BD50.

$20 witness: recording chill-penguin-new-game, frame 20226, A = $20, w_1e66 = 0, called from 80:BD50 inside 80:BCE1. Generated core, no emulator; WRAM equals the Mesen capture on every frame from 10383 to 20239.

$29 witness: recording armored-armadillo, frame 14454, A = $29, w_1e66 = 1, same call at 80:BD50. WRAM equal to Mesen from 13729 to 14462 (before that only the stack byte 7E:02FD differs, on 8 frames).

$2D: when a stage loads, 80:9A0D reads w_endingRoll (7E:1F7F); if it is not zero, 80:9A25 loads $2D and 80:9A2D jumps to 80:87B0, the routine 80:87A2 calls. In recording sigma-final-win, w_endingRoll becomes 1 at frame 23001 and the music byte 7E:FFFD becomes $2D at frame 23104 (Mesen capture). The generated core has no start point in that recording yet.

The effects are in a list of 162 pointers, and the S.E. test (80:EC65) plays $01-$A2. In gameplay, 44 have no static reference: 04 0B 12 14-16 24 32 3A 54 5C 69-6F 71 7A 7B 7F 81-84 8B-92 97-A0 (391 calls, 18 with the id coming from RAM). The game also sends $AE and $AF.

The files come from build/W3 (manifest.json, card W3-wiki-sounds-and-images): 44100 Hz, 16-bit, stereo WAV with no gain change, recorded by the Mesen WaveRecord host and converted to OGG Vorbis q5; only the OGG files were copied to the site. The sound test was driven with the options menu's own buttons: music with the index at 7E:FFC8 (id = index + $10, 80:EC51) and effects with the index at 7E:FFC9 (80:ECA5). The manifest says the program did not hear the sounds and describes them only by measurements (peak, RMS, length, dominant frequency).

The 15 distinct effects, each with its own sfx_XX.ogg file: $04 $16 $24 $32 $3A $54 $5C $71 $7A $7B $81 $82 $83 $84 $A0.

The single button for the 29 effects plays sfx_12.ogg. By the manifest's same_audio_as field (normalised correlation of the first 0.3 s of at least 0.999 and length within 10 ms), the 29 form two groups of identical audio: $12 $14 $69 $6A $6B $6C $6D $6E $6F $7F $8B $8C $8D $8E $8F $90 $91 $97 $98 $99 $9A $9B $9C $9E $9F (25) and $0B $15 $92 $9D (4). Both groups have the same length, 0.488 s, and peaks of -16.5 and -16.4 dBFS, but the manifest does not merge them into one group.

Caller of the 44 effects, as written in the manifest: No caller found in gameplay. Only the options-mode S.E. test (80:EC65..80:ECB1), which plays any id from $01 to $A2, sends this sound; that is how it was recorded.

Caller of $AE, as written in the manifest: The game sends $AE at 88:A875/88:A877 (LDA #$AE; JSL lunchWeaponSFX), in an object, when w_1f3c is nonzero; the in-game situation is not traced. The S.E. test only reaches $A2. The manifest marks the $AE recording (6.995 s) as cut by the next sound (cut_by_next). David identified the sound (2026-10-10), and the verified recordings confirm it: $AE is requested 5 times, always during a capsule talk, once in each capsule recording, and it does not play at any other moment in the 22 recordings read. Sources: sound_ids_david_2026-10-10.json and sfx_ae_af_witness_2026-10-10_r112.json.

Caller of $AF, as written in the manifest: The game sends $AF at 81:9041/81:9043 (LDA #$AF; JSL lunchWeaponSFX), in the routine 81:902F, after setSpriteAnim $50, when $33 is zero; the in-game situation is not traced. The S.E. test only reaches $A2. David identified the sound (2026-10-10), and the verified recordings confirm it: $AF is requested 23 times, always 17 frames after X starts the Hadouken, and it does not play at any other moment in the 22 recordings read. Sources: sound_ids_david_2026-10-10.json and sfx_ae_af_witness_2026-10-10_r112.json.

Caller of $20, $29 and $2D, as written in the manifest: 80:BD47 chooses $20 (or $29 when w_1e66 is nonzero) and plays it through 80:87A2, called at 80:BD50; the screen at 80:BCE1 is not traced. / 80:BD47 chooses $29 when w_1e66 is nonzero (else $20) and plays it through 80:87A2, called at 80:BD50; the screen at 80:BCE1 is not traced. / Ending music: levelLoadStuff 80:9A25 plays it when w_endingRoll is set.

Texts

The cartridge stores the texts as plain letters that can be read directly, with no table needed to turn codes into letters.

Dialogue

There are 35 dialogues, and all of them are used. Lines that seemed to have no use, such as “X, do what I tell you” and “I'm a Reploid!”, are called from two places in the game's code.

Menus

only-not-seen

The cartridge's menu table has 117 items. No point in the code calls these items directly: START DEMO, 01234567, CONGRATULATIONS!, the programmers' test texts SET CODE, SEQ NO., CHR COUNT, CHR TYPE, CHR CODE, OBJCOLOR, DX DY and LX LY, a second copy of each text on the options screen (probably for a cursor whose position is worked out while the game runs; not checked yet) and boxes made of graphic blocks. On the other hand, COMING SOON and PAL WARNING are called by the code.

To see how they look, we made the game draw five of these texts on the options screen (OPTION MODE). In the emulator, we swapped the text of the next row's highlight for the unused text; from there it is the game's own code that draws it, with the position and colours the text itself holds. That is why no row appears highlighted.

The game's options screen (OPTION MODE) with the unused text “START DEMO” drawn over it.
Forced in the emulator: does not happen in normal play The unused text “START DEMO”, drawn by the game itself over the options screen. Open at full size
The game's options screen (OPTION MODE) with the unused text “01234567” drawn over it.
Forced in the emulator: does not happen in normal play The unused text “01234567”, drawn by the game itself over the options screen. Open at full size
The game's options screen (OPTION MODE) with the unused text “CONGRATULATIONS!” drawn over it.
Forced in the emulator: does not happen in normal play The unused text “CONGRATULATIONS!”, drawn by the game itself over the options screen. Open at full size
The game's options screen (OPTION MODE) with the programmers' four test texts “SET CODE”, “SEQ NO.”, “CHR COUNT” and “CHR TYPE” drawn over it.
Forced in the emulator: does not happen in normal play The programmers' four test texts “SET CODE”, “SEQ NO.”, “CHR COUNT” and “CHR TYPE”, drawn together by the game over the options screen. Open at full size
The game's options screen (OPTION MODE) with the programmers' four test texts “CHR CODE”, “OBJCOLOR”, “DX DY” and “LX LY” drawn over it.
Forced in the emulator: does not happen in normal play The programmers' four test texts “CHR CODE”, “OBJCOLOR”, “DX DY” and “LX LY”, drawn together by the game over the options screen. Open at full size

The boss data sheets

On the stage select screen, each boss's sheet shows name, height, weight and attacks. The cartridge spells it HORMING TORPEDO, with an extra R.

The map tool's texts

The texts that the hidden map tool shows on screen are read only by that tool.

Technical details

The text is in ASCII in the ROM (for example, LAUNCH at 86:9C27); bytes from $80 up are control codes and were not decoded. The dialogues are in table 84:C890 (35, all referenced) and are read by 80:E6C6. The ids come by immediate in calls to 80:E9D8, by the value in $0008 in the 13 calls of the dialogue-box creator 83:F74A (object $2A) or by the capsule table 86:D4E3. Lines $11 and $1E come from 83:E919 and 88:CE58.

The menus are in table 86:910B (117 entries) and are drawn by 80:89E1. With no static reference: $02, $08, $09, $13-$14, $1E $22 $24 $26 $28 $2A $2C $2E and $2F-$34. COMING SOON ($03) and PAL WARNING ($15-$16) have calls. The boss sheets are at 86:9C17, read at 80:C273. The debug labels are at 86:A568.

The five images come from build/W3/img (menu_text_02, 08, 09, 13 and 14, from frame 1791; the _before files are left out), 256x224, enlarged 2×. In each one, at frame 1779, at 80:89F3 (the text routine 80:89E1), the pointer 7E:0010-0011 replaced 958F (the call that would draw text $1E) with the requested entry's, read from table 86:910B: $02 = 921A, $08 = 92CE, $09 = 92DB, $13 = 93CD, $14 = 9416. None of these entries has a static call of 80:89E1.

What X1 still lacks

The X1 checklist is not complete yet. Here are the missing parts that have already had at least one recorded attempt to find them, each with what is known so far and, when possible, a picture or a clip. At the end are the cases that now count as impossible, each with what it would take to happen and, when possible, how it would look.

Each picture says where it came from. “Recording” is a normal recorded play session, with nothing changed. “Map drawn from the cartridge data” is a drawing of the stage built from the game’s own data. “Forced in the emulator” is a clip in which we changed one of the game’s values, such as where the camera is, something that does not happen in normal play; the label says what we changed.

Still worth hunting for

These 22 parts have also had an attempt, but there is still a way to try: a new recording, a different search or a reading of the game’s code.

The charge-cancel sound of the 8 special weapons

When X loses a charge, the game plays a sound of its own. For the special weapons that sound has been seen in 9 situations. One case is missing: holding a special weapon's charge while entering a Ride Armor, or while a boss fight's ending count runs. No recording like that exists yet.

No picture. It is a sound, and a picture cannot show a sound. The missing situation does not exist in any recording yet.

Technical details

Sound $17. A29, E44 (18 stopped hunts), R62 (9 pairs seen; case C). Outside Sigma.

List R115 (build/R115/candidates.md), item 13 of “still huntable”; worth 10 bp in the X1 checklist.

Intro Vile: losing to him and coming back

On the intro highway, the fight against Vile always ends the same way. Two things are missing: what follows the defeat, and X dying in this fight and coming back. A 12000-frame search could not make X die there. The next step is to read in the game's code whether X can die in this fight.

Vile in his purple armour on the intro highway, in a recording.
Recording: normal play, no memory write. Vile in his purple armour on the intro highway, in a recording. Open at full size
Technical details

B22 (no death in 12000 frames), R68.

List R115 (build/R115/candidates.md), item 5 of “still huntable”; worth 9 bp in the X1 checklist.

wk15_rec_intro_vile.png: recording intro-highway, frame 10800 (frames counted from the savestate load), with no memory write.

Guardian and Mole Borer: what follows the defeat

When a boss is destroyed, the game hands control to another part of its code. For the capsule guardian and the Mole Borer digging machine, that handover has not been seen yet. One path of the Mole Borer's own is also missing. Two searches stopped without a result; there is no argument yet that it is impossible.

The spiked Mole Borer digging machine in Armored Armadillo's stage, in a recording.
Recording: normal play, no memory write. The spiked Mole Borer digging machine in Armored Armadillo's stage, in a recording. Open at full size
Technical details

B33 (2 stopped hunts), B22. Next-owner rule not cited; Mole Borer state 08.

List R115 (build/R115/candidates.md), item 6 of “still huntable”; worth 7 bp in the X1 checklist.

wk15_rec_guardian_mole_borer_handover.png: recording armored-armadillo, frame 3000 (frames counted from the savestate load), with no memory write.

Launch Octopus mid-boss: dying and coming back

This item is X dying against the mid-boss of Launch Octopus's stage and returning to the checkpoint. A built recording already has the death, the return and the boss restored. Its check failed in a stretch that came from the source recording. A similar problem was fixed before, so it is worth checking again.

The mid-boss of Launch Octopus's stage, underwater, in a recording.
Recording: normal play, no memory write. The mid-boss of Launch Octopus's stage, underwater, in a recording. Open at full size
Technical details

B26 (movie b26-lo21-loss-retry; fails at frame 3487; same source as R82, frame 3493; H23). Boss lo-midboss-0x21.

List R115 (build/R115/candidates.md), item 1 of “still huntable”; worth 5 bp in the X1 checklist.

wk15_rec_lo_midboss_retry.png: recording launch-octopus-and-sting-flooded, frame 3635 (frames counted from the savestate load), with no memory write.

Player: every kind of floor

This item is closing the list of how X reacts to each kind of floor: water, lava, conveyor and the rest. No rare event is missing; a large list has to be finished.

No picture. It is not a single scene: it is finishing a large list of floor types, and no picture shows that.

Technical details

s38-probe-scope. P53, P54, P56.

List R115 (build/R115/candidates.md), item 18 of “still huntable”; worth 5 bp in the X1 checklist.

Capsule guardian: missing choices

The capsule guardian has a few move choices that have not appeared in recordings yet. There is no argument in the game's code against them. One of them was never searched for. The next step is to read the animation and touch data and search more recordings.

The capsule guardian, in a recording.
Recording: normal play, no memory write. The capsule guardian, in a recording. Open at full size
Technical details

Choices 81CCF3:1, 81CD44:5, 81CED1:17 and state 16. B23, R105 (3 recordings).

List R115 (build/R115/candidates.md), item 11 of “still huntable”; worth 4 bp in the X1 checklist.

wk15_rec_guardian_choices.png: recording sting-chameleon, frame 10200 (frames counted from the savestate load), with no memory write.

Player: animation and colour catalogue

This item is closing the catalogue of all of X's animations and colours. No rare event is missing; a catalogue has to be finished.

No picture. It is not a single scene: it is finishing a catalogue of animations and colours, and no picture shows that.

Technical details

P53 (stopped search), P57A.

List R115 (build/R115/candidates.md), item 19 of “still huntable”; worth 4 bp in the X1 checklist.

Fortress Vile: choices and one attack

In Sigma's fortress, Vile still has a few choices and one attack that have not appeared the right way. Several were reached, but through another path of the code. A list of what a new recording would need to show already exists.

Vile in Sigma's fortress, in a recording.
Recording: normal play, no memory write. Vile in Sigma's fortress, in a recording. Open at full size
Technical details

Attack 1. R26, R27, R105, R107.

List R115 (build/R115/candidates.md), item 12 of “still huntable”; worth 3 bp in the X1 checklist.

wk15_rec_fortress_vile_choices.png: recording b8-vile-fortress-0x67-weapon-c-sting-normal-shots-08-hunt, frame 8019 (frames counted from the savestate load), with no memory write.

Chill Penguin: a kind of floor nobody stepped on

Chill Penguin's stage has one kind of floor that no recording has touched. An analysis found a possible route: ride the charged Shotgun Ice sled and jump from it. That route has a 0-pixel margin to the pillar. The search along that route has not been run yet.

In yellow, the blocks of that kind of floor in this part of the stage.
Map drawn from the cartridge data. In yellow, the blocks of that kind of floor in this part of the stage. Open at full size
Technical details

Terrain $36: 106 cells (attrs[tile] of the main layer; KB stage_terrain_transitions_2026-09-26 also gives 106 and the goal (7512, 296)). S53, S61, S65.

List R115 (build/R115/candidates.md), item 15 of “still huntable”; worth 3 bp in the X1 checklist.

wk15_map_cp_terrain36.png: window x 7096, y 0, 768 × 448 pixels, drawn from the main layer of content/x1/stages/tiles at scale 1, enlarged 2x on the site.

Sigma 3: the bat at placement 20

This bat does appear: it stays on screen for 53 frames in a verified Sigma 3 recording (and in 19 verified recordings in all). An older count had merged it with the previous bat in the same spot, so it looked unseen. Even counting it, the bat step is not closed yet: the two Armored Armadillo bats remain, which the game never spawns.

Where the bat at placement 20 sits, very close to where X passes.
Map drawn from the cartridge data. Where the bat at placement 20 sits, very close to where X passes. Red circle: where the enemy would be born. Blue square: the closest point X reached in a recording. Open at full size
Technical details

Placement 20, OID 0x2D, (710, 343), record $FA66 ($FA02 + 5 i). E41, T1B (stopped at 40 px). E40 case: take sigma3, X nearest at frame 4126 at (682, 366), 28 px. Checked on 2026-10-10 (cards R116 and R117): placement 20 (OID 2D, record FA66), frames 3705-3757 of sigma3_2_26312; the E40 count closed the run only when the slot emptied.

List R115 (build/R115/candidates.md), item 20 of “still huntable”; worth 3 bp in the X1 checklist.

wk15_map_s3_20.png: window x 518, y 199, 384 × 288 pixels, drawn from the main layer of content/x1/stages/tiles at scale 2; enemy at [710, 343], X nearest at [682, 366].

Submarine: dying and coming back

This item is X dying against the submarine in Launch Octopus's stage and coming back. Three attempts at repeating the source recording's buttons drifted right away. The next idea is to build the return with a real fight against the mid-boss on the way.

X on top of the submarine, in a recording.
Recording: normal play, no memory write. X on top of the submarine, in a recording. Open at full size
Technical details

B26 (3 failures).

List R115 (build/R115/candidates.md), item 2 of “still huntable”; worth 2 bp in the X1 checklist.

wk15_rec_submarine_retry.png: recording launch-octopus-and-sting-flooded, frame 8570 (frames counted from the savestate load), with no memory write.

Thunder Slimer: dying and coming back

This item is X dying against Thunder Slimer, in Spark Mandrill's stage, and coming back. Dying to a boss is a normal thing in the game. The earlier search stopped without a result; a new strategy is still to be tried.

Thunder Slimer, the blue blob, in its room, in a recording.
Recording: normal play, no memory write. Thunder Slimer, the blue blob, in its room, in a recording. Open at full size
Technical details

B22 (search stopped at 2669; a new strategy needs approval).

List R115 (build/R115/candidates.md), item 4 of “still huntable”; worth 2 bp in the X1 checklist.

wk15_rec_thunder_slimer_retry.png: recording spark-mandrill-death-branch, frame 4899 (frames counted from the savestate load), with no memory write.

Highway bee: the child it creates

The giant bee on the intro highway creates other objects during its fight. One of those children has not been seen yet. The next step is to read in the game's code where that child comes from.

The giant bee of the intro highway, in a recording.
Recording: normal play, no memory write. The giant bee of the intro highway, in a recording. Open at full size
Technical details

Child created at 82BC08. R102 (153 calls, 0 good).

List R115 (build/R115/candidates.md), item 8 of “still huntable”; worth 2 bp in the X1 checklist.

wk15_rec_road_bee_child.png: recording intro-highway, frame 4200 (frames counted from the savestate load), with no memory write.

Spark Mandrill: reaction to a charged shot

One of Spark Mandrill's reactions to a charged shot is still missing. Six searches got within a few pixels of the right spot. A checked starting point is still needed to try other random seeds.

Spark Mandrill in the rematch inside Sigma's fortress, in a recording.
Recording: normal play, no memory write. Spark Mandrill in the rematch inside Sigma's fortress, in a recording. Open at full size
Technical details

B34 (6 hunts, 2-14 px); method 1+.

List R115 (build/R115/candidates.md), item 9 of “still huntable”; worth 2 bp in the X1 checklist.

wk15_rec_sm_charged_reaction.png: recording sigma3-cs-death-weapons-branch, frame 8387 (frames counted from the savestate load), with no memory write.

Music at the very start of the intro

One piece of music starts on the intro's very first frame. Because it starts before any recording begins measuring, the moment it is sent was never logged. A capture that starts earlier is still needed.

No picture. It is music, and a picture cannot show the moment it is sent.

Technical details

Music 86:807B (block 10). R41 (all recordings).

List R115 (build/R115/candidates.md), item 17 of “still huntable”; worth 2 bp in the X1 checklist.

Sting Chameleon: the enemy at placement 47

In Sting Chameleon's stage, the list keeps an enemy in a place no recording has shown with it on screen. Only one search was made. The next idea is to try from another starting recording.

Where the enemy at placement 47 sits, very close to where X passes.
Map drawn from the cartridge data. Where the enemy at placement 47 sits, very close to where X passes. Red circle: where the enemy would be born. Blue square: the closest point X reached in a recording. Open at full size
Technical details

Placement 47, OID 0x2F, (4739, 432), record $FAED ($FA02 + 5 i). E41 (stopped). E40 case: take sting-chameleon, X nearest at frame 15296 at (4754, 414), 18 px.

List R115 (build/R115/candidates.md), item 21 of “still huntable”; worth 2 bp in the X1 checklist.

wk15_map_sc_47.png: window x 4547, y 288, 384 × 288 pixels, drawn from the main layer of content/x1/stages/tiles at scale 2; enemy at [4739, 432], X nearest at [4754, 414].

Utuboros: dying and coming back

This item is X dying against the Utuboros sea serpent, in Launch Octopus's stage, and coming back. Three attempts at repeating the source recording's buttons drifted right away. The next idea is the same as for the submarine.

The Utuboros sea serpent, in a recording.
Recording: normal play, no memory write. The Utuboros sea serpent, in a recording. Open at full size
Technical details

B26 (3 failures).

List R115 (build/R115/candidates.md), item 3 of “still huntable”; worth 1 bp in the X1 checklist.

wk15_rec_utuboros_retry.png: recording launch-octopus-and-sting-flooded, frame 10492 (frames counted from the savestate load), with no memory write.

Highway bee: one missing choice

The giant highway bee has one choice that has not been seen yet. The state that leads to it is common, but the bee has to be destroyed within a short 60-frame window. The next idea is to start from a checked frame in that state, or to run a search aimed at the bee.

The giant bee of the intro highway, in a recording.
Recording: normal play, no memory write. The giant bee of the intro highway, in a recording. Open at full size
Technical details

Choice 82BC86:9; state 0A (7 of 32 in the table). B23, B32 (512 seeds), R105; method 1+.

List R115 (build/R115/candidates.md), item 7 of “still huntable”; worth 1 bp in the X1 checklist.

wk15_rec_road_bee_choice.png: recording intro-highway, frame 4200 (frames counted from the savestate load), with no memory write.

Launch Octopus: one interruption

Launch Octopus being interrupted in one particular way during the fight is still missing. A recording that may contain it already exists, but its analysis has not been run for this case.

Launch Octopus in his room, in a recording.
Recording: normal play, no memory write. Launch Octopus in his room, in a recording. Open at full size
Technical details

Interruption 1. B34; recording b34-lo-c240-hunt, frames 12780-12900.

List R115 (build/R115/candidates.md), item 10 of “still huntable”; worth 1 bp in the X1 checklist.

wk15_rec_lo_interrupt_1.png: recording launch-octopus-and-sting-flooded, frame 20149 (frames counted from the savestate load), with no memory write.

Buster: cancelling the charge during the shot

This item is one case of the charge-cancel sound, now with the buster. The two built recordings fell into another case because X left the walking state before the shot. The recipe that already worked has to be repeated while avoiding that.

No picture. It is a sound, and a picture cannot show a sound.

Technical details

R84 (2 built recordings gave case B); R62's recipe.

List R115 (build/R115/candidates.md), item 14 of “still huntable”; worth 1 bp in the X1 checklist.

Shotgun Ice: one missing frame

One animation frame of Shotgun Ice is still missing. It may come from the pieces of the ice sled breaking against a wall. That situation has never been recorded.

The charged Shotgun Ice sled, in a recording; the missing frame would come from its pieces.
Recording: normal play, no memory write. The charged Shotgun Ice sled, in a recording; the missing frame would come from its pieces. Open at full size
Technical details

Frame E104. T6, R64, W44; card T6-next-ice-break.

List R115 (build/R115/candidates.md), item 16 of “still huntable”; worth 1 bp in the X1 checklist.

wk15_rec_shotgun_ice_e104.png: recording b8-vile-fortress-0x67-weapon-s-ice-charged-shots-17-hunt, frame 9710 (frames counted from the savestate load), with no memory write.

Chill Penguin: the enemy at placement 67

In Chill Penguin's stage, the list keeps an enemy in a place no recording has shown with it on screen. One analysis saw this enemy's touch, but not in this place. The next idea is to try from another starting recording.

  • The enemy at placement 67 is born between the pillars— open: enlarge, silent
    The enemy at placement 67 is born between the pillars

    Forced in the emulator: we wrote only the camera target to take it there; the enemy was created by the game itself, from the stage list. Does not happen in normal play.

    We took the camera down to the dark area between the pillars, and the game itself created the enemy of that placement.

    Download GIF
Where the enemy at placement 67 sits, between the pillars.
Map drawn from the cartridge data. Where the enemy at placement 67 sits, between the pillars. Red circle: where the enemy would be born. Blue square: the closest point X reached in a recording. Open at full size
Technical details

Placement 67, (5400, 941), OID 0x3A in the E40 case (rows enemy.oid_57), record $FB51 ($FA02 + 5 i). E41, R61. E40 case: take chill-penguin-new-game, X nearest at frame 11684 at (5147, 687), 254 px.

List R115 (build/R115/candidates.md), item 22 of “still huntable”; worth 1 bp in the X1 checklist.

wk15_forced_cp_67.mp4: forced situation; we wrote only the camera target, at 7E:1E4D and 7E:1E50 (the label says the same without the addresses). As the manifest has it: 80:E152 (RTS of the camera clamp 80:E0DE..80:E152), every frame of the pan; moved 6 px per frame to the target, held 60 frames, moved back.

wk15_map_cp_67.png: window x 5208, y 797, 384 × 288 pixels, drawn from the main layer of content/x1/stages/tiles at scale 2; enemy at [5400, 941], X nearest at [5147, 687, 'outside the window'].

Impossible for the current score

These 6 parts count as impossible by David’s decision of October 10, 2026; if someone finds a way to make one of them happen, it becomes “doable” and the site is updated.

Sting Chameleon: the missing move

Sting Chameleon picks among 45 moves during his fight. We have seen 44 of them in recordings. The missing one needs a value that the boss's own code never writes. Three sessions reading the game's code looked for another way to reach that value and found none.

Sting Chameleon in the missing step, forced: he stays high on the left wall, then comes down in light blue.
Forced in the emulator: we wrote 0A to 7E:0E6B (Sting Chameleon's step), replacing the 04 the game had just written; the game itself carried on from there: the boss stayed high on the wall for about a second, moved to another step, came down all in light blue, turned back to his normal colours and jumped across the room. Does not happen in normal play. Sting Chameleon in the missing step, forced: he stays high on the left wall, then comes down in light blue. Open the GIF · Still picture · Silent video
Sting Chameleon hanging from the vine during the fight, in a recording.
Recording: normal play, no memory write. Sting Chameleon hanging from the vine during the fight, in a recording. Open at full size
Technical details

Part 0A:choice:22. Owner writes 88:8612..86CE; the only +03=0A write is 88:88E7 (exits 88:88FA/88FC). Table 84:B8AC: 144 clean lists, 23 of 43 calls of 84:8000/8011 unbounded. B28, B29, B30; KB boss_rom_proofs_2026-10-03_b30.json.

List R115 (build/R115/candidates.md), item 1 of “deep-investigation candidate”; worth 1 bp in the X1 checklist.

w5_sc_choice_22.gif (with w5_sc_choice_22.png and w5_sc_choice_22.mp4): forced situation in headless Mesen, with no cartridge change (build/W5); GIF and still at 512 × 448, already 2x with no smoothing (checked frame by frame), 90 frames in the GIF, copied byte for byte. Write, as the manifest has it: rom_point 88:8A39, right after 88:8A37 STA +03 (= 04) in +01 04, +02 04, address 7E:0E6B, byte Sting Chameleon slot 0E68 +03, before 04, value 0A, frame 22723. take: sting-chameleon. frames: first 22694, last 22873, count 180, poster 22748, numbering endFrame count since the savestate load (capture_frames.lua convention, as W2). result: 04/04/0A ran 88:8A44 (table 88:895E entry 5) f22724..22755 (+34 20 -> 01); +03 0C at f22756 (88:8A4E/8A50) and 88:8AC0 f22756..22787; +02 0C, +03 00 read at f22788 (88:8AD3 stores 0A; the 0C writer was not traced); then 04/00/08 at f22831, 04/00/0A at f22861, 04/08/02 at f22873. No control run.. crop: rows 7..230 of 256x239, 2x nearest.

wk15_rec_sc_choice_22.png: recording sting-chameleon, frame 20492 (frames counted from the savestate load), with no memory write.

Capsule guardian: the fourth way to die

The guardian is the robot that protects the capsule in Sting Chameleon's stage. Its code has four ways to die, and three of them appear in recordings. The fourth would be dying while it holds X. That path depends on a value the guardian itself only ever sets to zero, so it looks like code that never runs.

The final hit on the guardian with the value forced: X jumps and the guardian explodes, as in a normal recording.
Forced in the emulator: we wrote 01 to 7E:0EE0 (a guardian flag) at the final hit; the game itself took the fourth way to die: it let go of X, who was not being held, and the guardian exploded as in the other ways; on screen only one frame of X's pose changes. Does not happen in normal play. The final hit on the guardian with the value forced: X jumps and the guardian explodes, as in a normal recording. Open the GIF · Still picture · Silent video
The guardian, the green robot that protects the capsule, in a recording.
Recording: normal play, no memory write. The guardian, the green robot that protects the capsule, in a recording. Open at full size
Technical details

Part 09:outro:custom; missing lethal-hit:+38 (81:CC5C/81:CC60, JSL 84:9F7E). +38 only gets STZ at 81:CC9B and 81:CE98. B33; KBs boss_outro_catalogue_2026-10-03_b33_closure.json, boss_outro_unseen_2026-10-03_b33.json.

List R115 (build/R115/candidates.md), item 2 of “deep-investigation candidate”; worth 2 bp in the X1 checklist.

w5_guardian_fourth_death.gif (with w5_guardian_fourth_death.png and w5_guardian_fourth_death.mp4): forced situation in headless Mesen, with no cartridge change (build/W5); GIF and still at 512 × 448, already 2x with no smoothing (checked frame by frame), 90 frames in the GIF, copied byte for byte. Write, as the manifest has it: rom_point 81:CC5C (LDA +38), after 81:CC58 STA +01 (= 0A) on the lethal hit, address 7E:0EE0, byte guardian (OID 09) slot 0EA8 +38, before 00, value 01, frame 10318. take: sting-chameleon. frames: first 10279, last 10458, count 180, poster 10330, numbering endFrame count since the savestate load (capture_frames.lua convention, as W2). result: 81:CC60 JSL 84:9F7E ran: at f10319 X action 7E:0BAA 08 and step 0BAB 00 (control 00, 02); from f10320 X action 06 as in the control (the take's jump); the guardian's state 0A ran as in the take.. crop: rows 7..230 of 256x239, 2x nearest.

wk15_rec_guardian_fourth_death.png: recording sting-chameleon, frame 10200 (frames counted from the savestate load), with no memory write.

Fire Wave: the third opening frame

The Fire Wave shot has 31 animation frames, and only one has never been seen. It would be the third frame of the shot's opening. The game moves the shot to its next phase before that frame reaches the screen. A search through 616 recordings found no frame showing it.

Forced in the emulator: we wrote 0D to 7E:125F (the shot's start timer) instead of 05; the game itself kept the shot in its start for longer, gave it the third animation frame for a few frames and then moved the shot to its next phase. Does not happen in normal play. The Fire Wave flame on its third frame (frame 2655), forced; the first three frames look alike: a fireball with a tail. Still picture · Silent video
Four consecutive frames of a recording from the first Fire Wave shot logged in the recordings list (frame 2637).
Recording: normal play, no memory write. Four consecutive frames of a recording from the first Fire Wave shot logged in the recordings list (frame 2637). Open at full size
Technical details

Frame AF:C224 (entry 2 of set $46, shot $0A). 83:94DA..83:94F3 starts anim00 with timer 5; anim01 at 83:9500; durations AF:C21E/C221/C224 = 4/4/4. T6 (903 frames, 0), R64 (616 recordings, 0), W44.

List R115 (build/R115/candidates.md), item 3 of “deep-investigation candidate”; worth 1 bp in the X1 checklist.

w5_fire_wave_third_frame.gif (with w5_fire_wave_third_frame.png and w5_fire_wave_third_frame.mp4): forced situation in headless Mesen, with no cartridge change (build/W5); GIF and still at 512 × 448, already 2x with no smoothing (checked frame by frame), 56 frames in the GIF, copied byte for byte. The GIF w5_fire_wave_third_frame.gif (1950320 bytes) is not on the site: it is over the 1 MB per GIF limit of tools/validate_site.py; the video takes its place. Write, as the manifest has it: rom_point 83:94DE, after 83:94DC STA +37 (= 05, start timer), address 7E:125F, byte X shot (OID 0A) slot 1228 +37, before 05, value 0D, frame 2637, why_0D 1 + 4 + 4 + 4, durations AF:C21E/C221/C224 (R115). take: armored-armadillo. frames: first 2627, last 2706, count 80, poster 2655, numbering endFrame count since the savestate load (capture_frames.lua convention, as W2). result: slot +14/+15 (figure pointer): C21E f2638..2644, C221 f2645..2652, C224 f2653..2658, C21E f2659..2660; +02 00 -> 02 at f2661 (+37 0D -> 00). Look: build/W5/look_fw_zoom.png (the three figures are all a flame ball with a tail).. crop: rows 7..230 of 256x239, 2x nearest.

wk15_rec_fire_wave_third_frame_strip.png: recording armored-armadillo, frames [2637, 2638, 2639, 2640] (frames counted from the savestate load), with no memory write, enlarged 2x on the site.

Spark Mandrill: the enemy that is never born

Spark Mandrill's stage list keeps an enemy in a place the camera never reaches. In no recording did the camera come close enough for the game to create it. David already declared that place impossible for the stage's count. The same decision still has to apply to this enemy's moves, attacks and touches.

The camera was taken up into the dark, and the game itself created the enemy: a firefly with a cone of light that flies to the left.
Forced in the emulator: we wrote the camera target (7E:1E4D and 7E:1E50) to take it there; the game itself created the enemy from the stage list. Does not happen in normal play. The camera was taken up into the dark, and the game itself created the enemy: a firefly with a cone of light that flies to the left. Open the GIF · Still picture · Silent video
Technical details

Placement 84, OID 0x37, (6513, 590), record $FBA6 ($FA02 + 5 i). Part placement:spark-mandrill:84 in the rows enemy.oid_37 motion/attack/contact. R104, R106, E41, E43; L43; KB stage_population_declared_impossible_2026-10-09.json. W2 clip (never_born_sm84).

List R115 (build/R115/candidates.md), item 4 of “deep-investigation candidate”; worth 3 bp in the X1 checklist.

w5_never_born_sm84_2x.gif (with w5_never_born_sm84_2x.png and w5_never_born_sm84_2x.mp4): forced situation in headless Mesen, with no cartridge change (build/W5); GIF and still at 512 × 448, already 2x with no smoothing (checked frame by frame), 90 frames in the GIF, copied byte for byte. Write, as the manifest has it: rom_point 80:E152 (RTS of the clamp 80:E0DE..80:E152), every frame of the pan: 7E:1E4D/1E4E camera x target and 7E:1E50/1E51 camera y target (16-bit) := the forced pan value; the spawner 80:DC36/80:DCDB runs after it in the same frame and creates the enemy from the ROM list itself; nothing else is written, address 7E:1E50, byte camera y target, value 768 -> 520 (6 px/frame), hold 60, back to 768, frame [22050, 22194]. frames: first 22045, last 22224, count 180, poster 22094, numbering endFrame count since the savestate load (capture_frames.lua convention). made_by: W2 frames (build/W2/run_sm84/seq, entry never_born_sm84), re-encoded at 2x by build/W5/run_w5.py w2.

Armored Armadillo: the bats that are never born

Armored Armadillo's stage list keeps two bats in places the camera never reaches. One is in a dark band under the rock floor; the other is in the far bottom-left corner of the map. David already declared those places impossible for the stage's count. On their own they do not change the percentage, because the bat is still missing in one place in Sigma 3.

Forced in the emulator: we wrote the camera target (7E:1E4D and 7E:1E50) to take it there; the game itself created the enemy from the stage list. Does not happen in normal play. The camera goes below the rock floor and the game itself creates the bat, which hangs in the dark band. Still picture · Silent video
The camera goes to the bottom-left corner, a screen of only the background colour, where the bat hangs alone.
Forced in the emulator: we wrote the camera target (7E:1E4D and 7E:1E50) to take it there; the game itself created the enemy from the stage list. Does not happen in normal play. The camera goes to the bottom-left corner, a screen of only the background colour, where the bat hangs alone. Open the GIF · Still picture · Silent video
Where the bat at placement 62 sits, under the rock floor.
Map drawn from the cartridge data. Where the bat at placement 62 sits, under the rock floor. Red circle: where the enemy would be born. Blue square: the closest point X reached in a recording. Open at full size
Technical details

Placements 0 (26, 1305, record $FA02) and 62 (3080, 1053, record $FB38), OID 0x2D (cp_bat). R104, R106, R108, R110, T1B, E41, E43; L43. W2 clips (never_born_aa0, never_born_aa62).

List R115 (build/R115/candidates.md), item 5 of “deep-investigation candidate”; worth 0 bp in the X1 checklist.

w5_never_born_aa62_2x.gif (with w5_never_born_aa62_2x.png and w5_never_born_aa62_2x.mp4): forced situation in headless Mesen, with no cartridge change (build/W5); GIF and still at 512 × 448, already 2x with no smoothing (checked frame by frame), 90 frames in the GIF, copied byte for byte. The GIF w5_never_born_aa62_2x.gif (1874195 bytes) is not on the site: it is over the 1 MB per GIF limit of tools/validate_site.py; the video takes its place. Write, as the manifest has it: rom_point 80:E152 (RTS of the clamp 80:E0DE..80:E152), every frame of the pan: 7E:1E4D/1E4E camera x target and 7E:1E50/1E51 camera y target (16-bit) := the forced pan value; the spawner 80:DC36/80:DCDB runs after it in the same frame and creates the enemy from the ROM list itself; nothing else is written, address 7E:1E4D and 7E:1E50, byte camera x/y target, value x 3081 -> 2960 then y 768 -> 900 (6 px/frame), hold 60, back, frame [2940, 3067]. frames: first 2920, last 3097, count 178, poster 3010, numbering endFrame count since the savestate load (capture_frames.lua convention). made_by: W2 frames (build/W2/run_aa62/seq, entry never_born_aa62), re-encoded at 2x by build/W5/run_w5.py w2.

w5_never_born_aa0_2x.gif (with w5_never_born_aa0_2x.png and w5_never_born_aa0_2x.mp4): forced situation in headless Mesen, with no cartridge change (build/W5); GIF and still at 512 × 448, already 2x with no smoothing (checked frame by frame), 91 frames in the GIF, copied byte for byte. Write, as the manifest has it: rom_point 80:E152 (RTS of the clamp 80:E0DE..80:E152), every frame of the pan: 7E:1E4D/1E4E camera x target and 7E:1E50/1E51 camera y target (16-bit) := the forced pan value; the spawner 80:DC36/80:DCDB runs after it in the same frame and creates the enemy from the ROM list itself; nothing else is written, address 7E:1E4D and 7E:1E50, byte camera x/y target, value x 629 -> 0 then y 412 -> 1150 (8 px/frame), hold 60, no return, frame [1345, 1577]. frames: first 1398, last 1577, count 180, poster 1540, numbering endFrame count since the savestate load (capture_frames.lua convention). made_by: W2 frames (build/W2/run_aa0/seq, entry never_born_aa0), re-encoded at 2x by build/W5/run_w5.py w2.

wk15_map_aa_62.png: window x 2888, y 909, 384 × 288 pixels, drawn from the main layer of content/x1/stages/tiles at scale 2; enemy at [3080, 1053], X nearest at [3208, 943].

Sting Chameleon: three blocks floating in the void

In Sting Chameleon's stage, one kind of floor exists only as three loose blocks in a large void under the map. No recording went near them. To fall onto them, X would have to move at least 888 pixels sideways during a 249-pixel fall. In the recordings that fall lasts a few dozen frames, and X moves at most 4 pixels per frame.

The void under the stage. In blue, the two known openings in the floor; in yellow, the three blocks far below.
Map drawn from the cartridge data. The void under the stage. In blue, the two known openings in the floor; in yellow, the three blocks far below. Open at full size
Technical details

Terrain $38, cells (304, 64/74/90), y 1024/1184/1440. Opening 1: columns 244-247, rows 41-47; opening 2: columns 222-224, rows 44-47. S61, S62; terrain_unreachable_proofs_2026-10-03.json (complete false). The 'main' layer of sting-chameleon_full.json has no tile in those cells: the yellow marks sit on the cells S61 cites.

List R115 (build/R115/candidates.md), item 6 of “deep-investigation candidate”; worth 2 bp in the X1 checklist.

wk15_map_sc_terrain38.png: window x 3488, y 576, 1536 × 960 pixels, drawn from the main layer of content/x1/stages/tiles at scale 1, enlarged 2x on the site.

No forced clip (build/W5/manifest.json): The forced situation does not show the terrain. We put X above the first block (we wrote 1002 to X's height, 7E:0BB0, and took the camera there); the game itself killed X right away, before he touched the block. The map stays. As the manifest has it: 15405 inputs stop, camera y target 7E:1E50 272 -> 890 at 8 px/frame (80:E152), X y 414 -> 1002 at f15483 (X x 4862); X action 7E:0BAA 2C (in the ride armour) -> 0C at f15485, y stays 1002, death burst from about f15525, screen fades to white by f15600. Frames build/W5/run_terrain/seq (local); events build/W5/run_terrain/events.txt. Rule: a forcing that turns into something else is reported, no further writes.

Technical details

The recording pictures were taken in Mesen with no memory write (build/WK15/wk15_still.lua). The forced clips move only the camera target, at 7E:1E4D and 7E:1E50, and the enemy is born through the game’s own spawner (80:DC36/80:DCDB); three of them were the W2 clips that also appear in “Enemies that are never born” and here gave way to the same frames at 2x from W5. The maps come from build/WK15/map_wk15.py. Each file’s SHA-256 and size were checked against build/WK15/manifest.json.

The six cases of “Impossible for the current score” are list R115 (build/R115/candidates.md). They count in the X1 checklist since L50 (game commit 6b56b8b64), by David’s decision of 2026-10-10: “pode marcar como impossível para a nossa pontuação atual” (you can mark it as impossible for our current score) and “se algum dia alguém conseguir um bug para fazer acontecer a gente pode atualizar como ‘fazivel’” (if someday someone finds a bug that makes it happen, we can update it to doable). The GIFs come from build/W5/manifest.json (card W5-impossible-cases-forced-gifs): build/W5/w5.lua, run by build/W5/run_w5.py in headless Mesen, writes the value the label names once to memory, at the code point given, with no cartridge change; each file’s SHA-256 and size were checked against the manifest. The Sting Chameleon terrain has no GIF: the forced situation killed X before he reached the blocks, and the WK15 map stays.

Source list: build/R115/candidates.md (6 candidates, 9 bp; 22 still huntable, 71 bp). In this part: 28 items, 16 recording pictures, 6 maps and 1 forced clips with GIF and cover picture, 6 W5 forced situations at 2x (GIF or video, with a still), 41 files in all; 3 pictures drawn at scale 1 were enlarged 2x with no smoothing, the others already came at 2x. Imported from game commit 826225efd by tools/render_wiki.py --import (data/wiki-open-parts.json); the W5 GIFs from commit e9aaab7e7 by tools/render_wiki.py --import-impossible (data/wiki-impossible.json).

Full video

The video starts with every weapon already unlocked.