data/claims/felix-the-cat.yamlFelix the Cat (USA), read in the ROM and measured in Mesen and FCEUX
Game: Felix the Cat.
The atlas reads Felix as slot 0 of the game's object tables, and the tables as 22 slots each from the 22-byte spacing of the x and y tables. His x in the stage is $0658:$0642 with a fraction byte at $062C, and his y is $069A:$0684 with a fraction at $066E, growing downward. His x speed is $06C6:$06B0 and his y speed $06F2:$06DC, signed, in 1/256 px a frame; each frame the mover adds the x speed, plus a signed byte at $041D, to the x. felix-the-cat/object-fields
About: Felix the Cat Object slots
Value
{
"slots": 22,
"x": "$0658:$0642",
"y": "$069A:$0684",
"vx": "$06C6:$06B0",
"vy": "$06F2:$06DC"
}0x1D91F-0x1D94D — fixed bank $D90F-$D93D: for slot X, add $06B0,X to $062C,X, then $06C6,X + $041D (sign-extended) to $0642,X and the carry and sign to $0658,XFelix the Cat (USA) · 0x1F867-0x1F884 — fixed bank $F857-$F874: on a section change, set $06F2 to $F7 and move $069A:$0684 up 16 pxFelix the Cat (USA) · 0x18927-0x18946 — bank 12 $8917-$8936 (mapped at $8000): add A to the y speed $06F2:$06DC, X indexing the slotFelix the Cat (USA) · 0x18947-0x18967 — bank 12 $8937-$8957: when $06F2,X isn't negative, add $06F2:$06DC to the y, $069A:$0684 with the fraction $066EChecked by claude-agent, 2026-10-25 — read the mover at $D90F and the section-change code at $F857 in the atlas's da65 listing of the fixed bank, and $8917-$8957 in bank 12's; the Mesen probe moves Felix through the slot-0 bytesThe 22-byte spacing is the gap between the x bytes' tables ($0642, $0658) and the y bytes' ($0684, $069A). The y speed's sign and units are measured (felix-the-cat/gravity). $041D is a platform's push (felix-the-cat/platform-push).
$33 is the stage index. A stage ends at $FA20, which adds 1 to it once the clear flag ($03B7) is up and the tally has run the timer down to 000. In the 1625M replay it reads 0 in the first stage and counts up to 22 in the last. felix-the-cat/stage-index
About: Felix the Cat Level end
CodeFelix the Cat (USA) ·0x1F705-0x1F714 — fixed bank $F6F5-$F704: if the three timer digits ($03A9-$03AB) OR to $10, the tile for 0, jump to $F934Felix the Cat (USA) · 0x1F944-0x1F957 — fixed bank $F934-$F947: with $03B7 set, jump to $FA20; otherwise, unless $0411 is set, set $03FA to 1 (time over)Felix the Cat (USA) · 0x1FA30-0x1FA37 — fixed bank $FA20-$FA27: $33 + 1 to $33Felix the Cat (USA): TASVideos 1625M replayed in FCEUX 2.6.6 · every change of $33Checked by claude-agent, 2026-10-25 — read the timer test at $F6F5, the branch at $F934, and $FA20 in the da65 listing; hooked writes to $33 in the 1625M replay (all 22 from $FA25)Three instructions in the ROM store to the clear flag $03B7. The stage load clears it; the exit test in the fixed bank sets it from Felix's x (felix-the-cat/exit-threshold); and a routine in PRG bank 12 sets it when a countdown at $042B reaches 0. felix-the-cat/clear-flag-writers
About: Felix the Cat Level end
Value: 3
CodeFelix the Cat (USA) ·0x1F378-0x1F37A — fixed bank $F368: STA $03B7 in the stage load, after LDA #$00Felix the Cat (USA) · 0x1F80F-0x1F850 — fixed bank $F832: STA $03B7 with A = 1, in the exit testFelix the Cat (USA) · 0x18481-0x184B4 — bank 12 $8471-$84A4 (mapped at $8000): DEC $042A; at 0, reload 8 and DEC $042B; at 0, STA $03B7 with A = 1Checked by claude-agent, 2026-10-25 — searched the ROM for 8D B7 03 with atlas rom-find and read each of the three sites in the da65 listings of the fixed bank and bank 12; hooked writes to $03B7 in the 1625M replayatlas rom-find gives these three for 8D B7 03 (STA absolute); the ROM has no indexed store, STX, STY, or INC of $03B7. In the 1625M replay every one of the 22 clears came from the fixed bank's test, and the bank 12 routine never set the flag; which object runs it isn't read yet.
Every frame of play until the clear flag $03B7 is up, the game subtracts $32 and the stage's bound ($BB:$BD) from Felix's x and sets the flag when the result is at least $F0. A stage ends when Felix's x reaches its bound plus 290; in the first stage, whose bound is 3,848, that's x 4,138. felix-the-cat/exit-threshold
About: Felix the Cat Level end
Value
{
"past": 290,
"first_bound": 3848
}0x1F80F-0x1F850 — fixed bank $F7FF-$F840: with $03B7 at 0, ($0658:$0642 - $32) - $BB:$BD to $09:$08; if $09:$08 - $F0 isn't negative, set $03B7 to 1 and start two soundsChecked by claude-agent, 2026-10-25 — read $F7FF-$F840 in the da65 listing; exit.mjs places Felix at bound + 289 and bound + 290 in the first stage in MesenProbe: probes/felix-the-cat/exit.mjs$32 + $F0 = 290. In Mesen, Felix placed at bound + 289 leaves the flag at 0 and at bound + 290 sets it on the next frame, from anywhere in the stage.
Cited by: Felix the Cat
The playfield's scroll is $16:$14, which the raster split writes to $2005. In the Mesen probe, Felix's screen x is about x − scroll + 256: walking right, the camera settles with his x 136 px below the scroll value, and a sprite of his covers screen x 120. The scroll stops at the stage's bound plus 248. felix-the-cat/camera
About: Felix the Cat Scrolling
Value
{
"lead": 136,
"stop": 248
}0x1C20C-0x1C234 — fixed bank $C1FC-$C224, the raster split: for split $2A, $16,X and $1A,X bit 0 pick the nametable, then $14,X and $18,X go to $2005 as the X and Y scrollChecked by claude-agent, 2026-10-25 — read the split code at $C1FC; exit.mjs traces x minus the scroll value walking right, checks the sprites at screen x 256 - 136, and reads the scroll with Felix at bound + 200, in MesenProbe: probes/felix-the-cat/exit.mjsSplit 0 is the playfield; the status bar's split has a scroll of 0. The 256 offset and the follow rule are measured; the camera code itself isn't read yet. Once the camera settles, the probe finds Felix's sprites in three 8 px columns from screen x 111 to 134 (FCEUX showed two, at 116 and 124, in another pose). With the camera at its stop, the exit test's x (bound + 290) puts Felix 42 px past the scroll value, at screen x 298, off the screen's right edge. In the 1625M replay, on frames when the camera was below its stop, Felix's x was never more than 55 px below the scroll value (FCEUX).
Cited by: Felix the Cat
Holding Right from a standstill in the first stage at power level 0, with $0616 below 3, Felix's x speed grows by a step read from $03B3, 48 (in 1/256 px) there, each frame up to the cap of 533, about 2.08 px a frame, which it reaches on the twelfth frame. felix-the-cat/walk-speed
About: Felix the Cat Running
Value
{
"accel": 48,
"max": 533
}0x1D69E-0x1D711 — fixed bank $D68E-$D701: add $03B3 to the x speed (or $03B4, when the x speed is below $0421:$0420); with $0616,X below 3, cap it at $0215; with 3 or more, at $01AA unless $03BF is 7Checked by claude-agent, 2026-10-25 — read $D68E-$D701 in the da65 listing of the fixed bank; exit.mjs holds Right for 100 frames from the first stage's start in Mesen and reads $06C6:$06B0 each frameProbe: probes/felix-the-cat/exit.mjsThe step comes from RAM ($03B3), so 48 is the measured value in the first stage with the power level at 0; what sets $03B3, and what $0616 holds at 3 and up, where the cap is 426, aren't read yet. Walking left, the code at $D655 caps the speed at −533 the same way.
Cited by: Felix the Cat
Falling, with $0616 below 3 and $03B1 clear, Felix's y speed grows by 45 (in 1/256 px, down positive) each frame up to a cap of 1,536, 6 px a frame, as measured at the first stage's start. felix-the-cat/gravity
About: Felix the Cat Gravity
Value
{
"accel": 45,
"max": 1536
}0x1D712-0x1D73C — fixed bank $D702-$D72C: unless $03B1 is set, and with $0616,X below 3, call $8917 with A = $2D and $3C = 6Felix the Cat (USA) · 0x18927-0x18946 — bank 12 $8917-$8936 (mapped at $8000): add A to $06F2:$06DC; if the result isn't negative and its high byte is at least $3C, set it to $3C:00Checked by claude-agent, 2026-10-25 — read $D702-$D72C in the fixed bank's da65 listing and $8917-$8936 in bank 12's; exit.mjs reads $06F2:$06DC each frame of the drop at the first stage's start in MesenProbe: probes/felix-the-cat/exit.mjsAt the stage's start Felix drops onto the ground; the probe sees the speed climb by 45 a frame to 1,536, hold there, and go to 0 on landing. With $0616 at 3 or more the same routine is called with steps of 8, 6, or 4 and caps of 3, 2, or 1 px a frame; what those states are isn't read yet. $2D matched the movie's buttons on all but 117 of the 81,074 frames of a RAM trace of the 1625M replay (FCEUX), with A in bit 0. Before the call, while Felix rises and A isn't held, the y speed's high byte gains 1 a frame, which would cut a jump short when A is let go. A jump with A held starts at −1,282 in Mesen and slows by 45 a frame; the jump code itself isn't read yet.
Cited by: Felix the Cat
The fixed bank's exit test reads Felix's x and the stage's bound, never the scroll. For example, walked a second into the first stage and placed 6 px below the scroll value, near the right edge of the screen, Felix doesn't clear the stage: the camera re-centers on him the next frame, and the clear flag stays at 0. felix-the-cat/exit-not-screen
About: Felix the Cat Level end
Value: 6 px below the scroll value
VerifiedFelix the Cat (USA) ·0x1F80F-0x1F850 — fixed bank $F7FF-$F840: the exit test reads Felix's x and the stage's bound, not the scroll ($14, $16)Checked by claude-agent, 2026-10-25 — exit.mjs places Felix in Mesen; FCEUX runs from the 1625M replay (scratch exit-test.lua) agreeProbe: probes/felix-the-cat/exit.mjsThis tests KAGE-008's report for Dragon Co.'s game (felix-the-cat/dragon-co-glitch) against the Hudson cartridge's test. The bank 12 countdown that can also set the clear flag (felix-the-cat/clear-flag-writers) isn't read, so this doesn't rule out every route to a clear. In Mesen the probe walks to x 162 and puts Felix at the scroll value minus 6; a frame later he is back 136 px below it. FCEUX gives the same mid-stage, at frames 1,000 and 2,000 of the 1625M replay, and in its stage index 10.
Cited by: Felix the Cat
KAGE-008's rejected TASVideos submission 6487 plays Dragon Co.'s unlicensed Felix the Cat, a different game from Hudson's, and ends levels "if the player is close to go off-screen to the right". The judge, Maru, adds that the player only has to jump "as much as possible to get to the right of the screen" and reports a test file saving 855 frames in level 1. felix-the-cat/dragon-co-glitch
About: Felix the Cat Level end
Value: 855 frames
Web#6487: KAGE-008's NES Felix the Cat (Dragon Co.) "glitch exit" in 04:33.80 ·submission textThis method implies exploiting a glitch where if the player is close to go off-screen to the right, it'll autofinish the level.#6487: KAGE-008's NES Felix the Cat (Dragon Co.) "glitch exit" in 04:33.80 · submission textWhile both are based on 'Felix the Cat' cartoon, both versions are completely different each other.#6487: KAGE-008's NES Felix the Cat (Dragon Co.) "glitch exit" in 04:33.80 · judge's noteFor reference, you just need to jump as much as possible to get to the right of the screen. I have a test file that saves 855 frames in level 1.Checked by claude-agent, 2026-10-25 — read the pinned copy of TASVideos submission 6487Cited by: Felix the Cat
The exit test has no boss condition. Each of the seven boss rooms, stage indices 2, 5, 8, 11, 14, 16, and 18, has a bound of 0, so it ends at x 290, inside the room's wall (felix-the-cat/boss-wall). In Mesen, from power-on, with each boss stage cleared at its bound and $040C set to 3 where the stage's last door would set it, the game's room change loads the boss room; Felix placed there at x 290 with the boss up sets the clear flag the next frame, the fight's step $0411 still at 0, and the next stage loads. felix-the-cat/boss-room-exit
About: Felix the Cat Boss fight
Value
{
"bound": 0,
"stages": [
2,
5,
8,
11,
14,
16,
18
]
}0x1F80F-0x1F850 — fixed bank $F7FF-$F840: the test reads Felix's x, $32, and the bound; nothing about a bossFelix the Cat (USA) · 0x1F851-0x1F866 — fixed bank $F841-$F856: with $040C at 3, jump to $FA07; with $040C or $040D odd, to $F9F7; otherwise the hop at $F857Felix the Cat (USA) · 0x1FA17-0x1FA2F — fixed bank $FA07-$FA1F: unless $040D is 8, set $0411 to $FF; add 1 to $0411, set $040D to 8, and load the roomFelix the Cat (USA): TASVideos 1625M replayed in FCEUX 2.6.6 · each boss fightChecked by claude-agent, 2026-10-25 — read $F7FF-$F856 and $FA07-$FA1F in the da65 listing of the fixed bank; boss.mjs clears stages by placing Felix at bound + 290, writes 3 to $040C in each boss stage to load its boss room, and places him at x 290 there, in MesenProbe: probes/felix-the-cat/boss.mjsThe probe enters each boss room by writing 3 to $040C, the value the door at the end of a boss stage's main area leaves there, so the game's own room change at $F841 loads it. FCEUX's replay of the 1625M movie shows the same rooms, bound 0 with $040D at 8, in all seven fights.
Cited by: Felix the Cat
In each of the seven boss rooms, the map's columns 14 to 31, x 224 to 511 of its 512 px, are solid from top to bottom, and so is column 0. The wall test (felix-the-cat/wall-test) stops Felix at x 215, where the point 8 px ahead of him reaches the wall. In Mesen, moving right at his top speed of 533/256 px a frame from x 215, he stays at 215 at every height, from above the map to below it. felix-the-cat/boss-wall
About: Felix the Cat Boss fight
Value
{
"first": 14,
"wall": 215,
"edge": 0,
"fast": {
"x": 340,
"stages": [
2,
5,
14,
18
]
}
}0x1F261-0x1F2A0 — fixed bank $F251-$F290: the map lookup the wall test uses (felix-the-cat/collision-map)Felix the Cat (USA) · 0x1D0FB-0x1D16F — fixed bank $D0EB-$D15F: moving right, test the tile at x + 8; if it blocks, subtract the x speed from xFelix the Cat (USA): TASVideos 1625M replayed in FCEUX 2.6.6 · each boss fightChecked by claude-agent, 2026-10-25 — read $F251-$F290 and $D0EB-$D15F in the da65 listing of the fixed bank; boss.mjs reads each boss room's map at $6000 in Mesen and places Felix at x 215 with an x speed of 533 at 26 heightsProbe: probes/felix-the-cat/boss.mjsGetting into the wall takes one frame's step of more than 24 px from x 215. A step that ends at 240 to 255 skips the map, but the edge check then turns him back each frame; one that ends at 256 or more goes through the auto-walk, whose wall test takes back only the capped speed (felix-the-cat/wall-test). Felix's speed caps are 533 and 426 (felix-the-cat/walk-speed), and in FCEUX's replay of the 1625M movie his x speed never went past 533. The wall test leaves a platform's push in place, but in Randil's run no push came in a boss room (felix-the-cat/platform-push). To see what speed alone would do, the probe also writes an x speed of $7F00, about 127 px a frame, at x 215. In rooms 2, 5, 14, and 18 Felix lands at x 340, past the exit test's 290: the step carries x into its next page, where the auto-walk caps the speed before the wall test takes it back. In rooms 8, 11, and 16 he stays at 215, for a reason not read yet. Savestate beam searches in FCEUX, from the first frame of play in four fights of the 1625M movie, found no x above 215. Each kept 16 states and held each choice 8 frames (Right, Right with A, a short hop, an attack, Left, and no input). The search in stage index 2 emulated 947,340 frames from frame 6,919, and every branch lasted at the wall until time ran out at frame 17,207; those in stage indices 5, 8, and 16 emulated 300,602, 51,560, and 80,508 frames. In the 1625M fights Felix's largest x was 183 to 215.
Cited by: Felix the Cat
Each frame of play, after the mover adds Felix's x speed and push to his x, the fixed bank's $D05F checks him against the screen's edges or the map. With his x's high byte past the bound's, or equal to it with a low byte of $DB or more outside a boss fight (and a few other cases), the game walks him right (the auto-walk) and tests the map. Short of that, an x less than 8 or at least 240 past $B7:$B9 sets his x speed to 1 px a frame back inward, and the map isn't read that frame. Otherwise, moving right, it reads the map 8 px ahead of him, normally at y + 1, y − 8, and y + 13 (moving left, 8 px behind), and if a tile there blocks, it subtracts that frame's x speed from his x again. Then $D191 moves x 1 px toward 7 or 8 px into its 16 px column. felix-the-cat/wall-test
About: Felix the Cat Tile collision
CodeFelix the Cat (USA) ·0x1D033-0x1D03B — fixed bank $D023-$D02B, in Felix's update: JSR $D87E, JSR $D90F (the mover), JSR $D05FFelix the Cat (USA) · 0x1D059-0x1D0FA — fixed bank $D049-$D0EA: past the bound's page, or in it at x low byte $DB or more unless $040D is 1, $040D + $0411 is 8 (a boss fight), or the stage index is $17, hold Right and accelerate (the auto-walk), then the map test; otherwise x - $B7:$B9 below 8 sets the x speed to $0100, at $F0 or more to $FF00, and returnsFelix the Cat (USA) · 0x1D0FB-0x1D16F — fixed bank $D0EB-$D15F: with the x speed at 0, test both sides; positive, the tile at x + 8 (mask $FD); negative, x - 8 (mask $FB); on a hit, subtract the x speed from the fraction and x, then $D191Felix the Cat (USA) · 0x1D1A1-0x1D1CD — fixed bank $D191-$D1BD: fraction to $80; x's low nibble 7 or 8 stays, below 7 gains 1, above 8 loses 1Felix the Cat (USA) · 0x1D1CE-0x1D223 — fixed bank $D1BE-$D213: the tile at y + 1; then y - 8 unless $03C3 is 7; then y + 13 unless $03B0 is set; nonzero when one blocksChecked by claude-agent, 2026-10-25 — read $D023-$D02B and $D049-$D213 in the da65 listing of the fixed bank; hooked writes to $0642 holding Right into World 1's boss wall in FCEUX (the mover at $D936, the step back at $D14B, the nudge at $D1BD)The step back subtracts the x speed as it stands after $D05F's branch, which on the auto-walk path has just been capped, and it leaves the push ($041D) in place. In FCEUX's replay $B7:$B9 was the camera's scroll value minus 248 (69 with the scroll at 317 in stage index 2) and 0 in the boss rooms, so the edge check keeps Felix's screen x from 16 to 247. The third height is y + 13 because the carry is clear there. With $03C3 at 7 the y − 8 test is skipped and the carry is set, so the third height is y + 14; with $03B0 set the third test is skipped. The auto-walk is also held off with $040D at 1 and in stage index $17. What $03C3 = 7 and $03B0 mean isn't read.
Cited by: Felix the Cat
The map that Felix's tile tests read is 32 columns of 16 px by 24 rows of 16 px in cartridge RAM at $6000-$63FF, a ring that repeats every 512 px of x. A tile's type is the low nibble of its entry in a table at ($CA). Types 1, 14, and 15 block both ways; type 4 blocks only moving left, and type 5 only moving right. A point above the map reads the top row, and one 384 px down or more reads the bottom row, where any nonzero type counts as 1. felix-the-cat/collision-map
About: Felix the Cat Tile collision
Value
{
"columns": 32,
"rows": 24,
"ring": 512
}0x1F261-0x1F2A0 — fixed bank $F251-$F290: row from y ($07:$06): negative, row 0; below 256, y / 16; 256-383, 16 + (y - 256) / 16; else row 23 with a nonzero type as 1; address $6000 + (x high bit 0) * $200 + (x low / 16) * $20 + row; type = ($CA),tile AND $0FFelix the Cat (USA) · 0x1CF91-0x1CFA0 — fixed bank $CF81-$CF90, the blocking bits by type: 00 01 00 00 02 04 00 00 00 00 00 00 00 00 01 01; moving right tests them with $FD, left with $FBChecked by claude-agent, 2026-10-25 — read $F251-$F290 and the table at $CF81 in the da65 listing of the fixed bank; boss.mjs reads the map this way in Mesen and finds the walls Felix stops atCited by: Felix the Cat
Felix's push $041D comes from one routine, in PRG bank 12: a platform whose x swings with the frame counter sets it, while Felix rides, to the change in its x that frame, and the object pass clears it again afterward. The mover adds it to Felix's x, and the wall test never takes it back (felix-the-cat/wall-test). In FCEUX's replay of the 1625M movie the push was 1 px either way, and it came only in the main areas of stage indices 1, 2, 7, 9, 10, 12, 18, and 22, never in a boss room. felix-the-cat/platform-push
0x19175-0x191C2 — bank 12 $9165-$91B2: save the x low byte in $01; x = the base $06F2:$06DC + ($37 / 2, mirrored by $37 bit 6) AND $1F; with $0708 bit 4 set and x moved, $041D = x - $01Felix the Cat (USA) · 0x1E13B-0x1E165 — fixed bank $E12B-$E155: update slots 6 to 21, then 0 to 5, then zero $0420-$0423 and $041DFelix the Cat (USA) · 0x1D91F-0x1D94D — fixed bank $D90F-$D93D: the mover adds $06C6 + $041D to Felix's xFelix the Cat (USA): TASVideos 1625M replayed in FCEUX 2.6.6 · every nonzero write to $041DChecked by claude-agent, 2026-10-25 — searched the ROM for stores to $041D with atlas rom-find (8D 1D 04 at $91AD, $E152, and $F380, the stage load; no STX, STY, indexed store, INC, or DEC) and read each in the da65 listings; hooked writes to $041D through the 1625M replay in FCEUXThe platform's x runs 32 px and back as $37 counts, 1 px every other frame. That $0708 bit 4 marks Felix standing on it is inferred from the replay, not read.
Cited by: Felix the Cat
$0411 is a boss stage's step: 0 in the fight, 1 once the boss is beaten, and 2 in the room after. Only two instructions add to it: $A20D in PRG bank 13, in the routine that runs when the boss is beaten, and $FA13, in the room change that $040C = 3 asks for. A door asks for it only in a main area (felix-the-cat/boss-room-door); in the boss room, bank 13's $A1B9 stores the 3. Every store to $0411 writes 0, or $FF that $FA13 lifts to 0 at once. In FCEUX's replay of the 1625M movie, in World 1, the step went from 0 to 1 at $A20D on frame 7,643; on frame 7,880 $A1B9 set $040C to 3, and $FA13 took the step to 2. felix-the-cat/boss-step
About: Felix the Cat Boss fight
CodeFelix the Cat (USA) ·0x1A211-0x1A21F — bank 13 $A201-$A20F (mapped at $A000): with $0776,X bit 3 set, play sound $10 and INC $0411Felix the Cat (USA) · 0x1A1C2-0x1A1CC — bank 13 $A1B2-$A1BC: $0616,X = 0, $040C = 3Felix the Cat (USA) · 0x1FA17-0x1FA2F — fixed bank $FA07-$FA1F: unless $040D is 8, $0411 = $FF; INC $0411; $040D = 8Felix the Cat (USA): TASVideos 1625M replayed in FCEUX 2.6.6 · frames 7500-7960, writes to $0411 and $040CChecked by claude-agent, 2026-10-25 — searched the ROM for EE 11 04 and 8D 11 04 with atlas rom-find (INC at $A20D and $FA13; STA at $8016 in bank 10, $CBBE, $E6BB, $F34A, $F99B, $F9D8, $FA10, $FA38) and read each site and $A1B2-$A1BC; hooked writes to $0411 and $040C from the World 1 boss's defeat to the next room in FCEUXThe names "step" and "kind" are the atlas's. The timer runs only with $0411 at 0 (felix-the-cat/timer), so it stops once the boss is beaten. Which object runs $A1BD-$A241, and what sets $0776 bit 3 and runs $A1B2, isn't read.
Cited by: Felix the Cat
A door in a boss room leads back into the same room. Pressing Down on a door tile sends Felix down it, and the door's kind picks the room change. In a boss room ($040D = 8), $CABF gives every door kind 2 except in stage index 22, and kind 2 is a hop back up where he went down. Only kind 3 moves the boss step on (felix-the-cat/boss-step), and $CB90 gives it only to a door in a main area, with the step at 0. Stage index 5's boss room has a door tile where Felix comes in. In FCEUX, Down on it during the fight sends him down and back up at x 48, with the fight still on. felix-the-cat/boss-room-door
About: Felix the Cat Boss fight
CodeFelix the Cat (USA) ·0x1CACF-0x1CAD8 — fixed bank $CABF-$CAC8: with $040D at 8, go to $CB9FFelix the Cat (USA) · 0x1CBAF-0x1CBB4 — fixed bank $CB9F-$CBA4: unless the stage index is $16, go to $CB82Felix the Cat (USA) · 0x1CB92-0x1CB96 — fixed bank $CB82-$CB86: kind 2 into $066E, then $CB0C, which puts Felix in state $0D (going down)Felix the Cat (USA) · 0x1F851-0x1F866 — fixed bank $F841-$F856: kind 3 goes to $FA07; kind 2 with $040D at 8 is even, so the hop at $F857Felix the Cat (USA): TASVideos 1625M replayed in FCEUX 2.6.6 · frame 15184, the movie stopped thereChecked by claude-agent, 2026-10-25 — read $CABF-$CB9C and $F841-$F856 in the da65 listing of the fixed bank; in FCEUX, stopped the 1625M replay at stage index 5's fight (frame 15184) and held Down at x 48$CC2F sends Felix down when Down is held and the tile at x − 8, y + 16 is type 14. $CB90 gives kind 3 to a door in the bound's page of a main area while $0411 is 0, and kind 2 otherwise; that door is how a boss stage's main area leads to its boss room. In FCEUX Felix went down and back up every 79 frames while Down was held, and $0411 and $040D stayed at 0 and 8.
Cited by: Felix the Cat
Once the clear flag is up, the game counts the timer down one unit a frame, and the stage index moves on 162 frames after the timer's count, so the wait after a clear is the timer's reading plus 162 frames. With the power level above 0, the power's remaining units ($03C0) are counted first, about 15 frames each. felix-the-cat/clear-tally
About: Felix the Cat Time limit
Value
{
"fixed": 162
}0x1F717-0x1F771 — fixed bank $F707-$F761: with $03B7 set and $03C6 and $03C0 above 0, step $03C1 down; at 0, add to the score, reload it with 15, and take 1 from $03C0; otherwise add to the score and go on to the timerFelix the Cat (USA) · 0x1F7C2-0x1F80C — fixed bank $F7B2-$F7FC: in play, count $03AC to $3C before the timer step; the tally enters at $F7C6, the step itself, which takes 1 from the three digits with borrowsFelix the Cat (USA): TASVideos 1625M replayed in FCEUX 2.6.6 · the 22 clearsChecked by claude-agent, 2026-10-25 — read $F707-$F80C in the da65 listing; exit.mjs times the tally in Mesen and baseline.mjs checks the 22 clears of the 1625M replay in FCEUXProbe: probes/felix-the-cat/exit.mjsMesen gives 362 frames from the clear for a timer of 200 (exit.mjs). In the 1625M replay, the 18 clears with the power level at 0 each wait the timer plus 162; the 4 with power wait 5 to 89 frames more (baseline.mjs checks both). Finishing a stage 60 frames sooner leaves about one more unit on the timer, so it saves about 59 frames.
Cited by: Felix the Cat
The timer is three digit tiles at $03A9-$03AB (tile $10 is 0). During play in a stage's main area ($0411 = 0) it drops by 1 every 60 frames, counted at $03AC, and at 000 without a clear the game sets $03FA, time over. felix-the-cat/timer
About: Felix the Cat Time limit
Value: 60 frames per unit
CodeFelix the Cat (USA) ·0x1F7C2-0x1F80C — fixed bank $F7B2-$F7FC: skip unless $0411 is 0; INC $03AC; below $3C stop; else reset it and take 1 from $03AB, borrowing from $03AA and $03A9Felix the Cat (USA) · 0x1F944-0x1F957 — fixed bank $F934-$F947: at 000 with $03B7 clear and $0411 at 0, $03FA = 1Checked by claude-agent, 2026-10-25 — read $F7B2-$F7FC and $F934-$F947 in the da65 listingCited by: Felix the Cat
$03C6 holds Felix's power level, 0 to 3 in the 1625M run. While it's above 0, $03C0 counts down one unit every 300 frames (150 odd frames, counted at $03C1); each change of level in the run that left it above 0 set $03C0 back to 10. felix-the-cat/power-level
About: Felix the Cat Power-up
Value
{
"units": 10,
"frames": 300
}0x1F797-0x1F7C0 — fixed bank $F787-$F7B0: with $03C6 above 0, on odd frames ($37 bit 0), DEC $03C1; at 0, reload $96 and DEC $03C0, floored at 0Felix the Cat (USA): TASVideos 1625M replayed in FCEUX 2.6.6 · every change of $03C6Checked by claude-agent, 2026-10-25 — read $F787-$F7B0 in the da65 listing; listed every change of $03C6 and $03C0 in a RAM trace of the 1625M replayThe name "power level" is the atlas's. What happens when $03C0 reaches 0 isn't read yet.
Cited by: Felix the Cat
A hit at power level 0 ($03C6) sets $03CD to $FF and Felix's y speed to $F7:00, upward; above 0, it sets $03CD to $B4 and takes 1 from the power level instead. Walking right from the start of the first stage at power 0, the Mesen probe sees Felix hit at x 281, the lives digits ($03A5-$03A6) lose 1, and the stage restart with Felix at x 48. felix-the-cat/death
About: Felix the Cat Lives
Value
{
"state": 255,
"x": 281,
"restart": 48
}0x1F99E-0x1F9F9 — fixed bank $F98E-$F9E9: take 1 from the two lives digits $03A5-$03A6 with a borrow; when they run out, set $33 to $18Felix the Cat (USA) · 0x1CCF2-0x1CD33 — fixed bank $CCE2-$CD23: if $03C5 is 4 or $03C6 is 0, $03CD = $FF, $0616,X = $0F, $06F2:$06DC = $F7:00; otherwise go to $CD24Felix the Cat (USA) · 0x1CD34-0x1CD4B — fixed bank $CD24-$CD3B: $03CD = $B4, then DEC $03C6Checked by claude-agent, 2026-10-25 — read $CCE2-$CD3B and $F98E-$F9E9 in the da65 listing; exit.mjs walks Felix into the first enemy in Mesen and waits for the restartProbe: probes/felix-the-cat/exit.mjs$03CD goes to $FE while Felix falls; the game checks $03CD OR $03FA against $FE at $F877. The restart point is the stage's start: the probe found no checkpoint at x 281.
Cited by: Felix the Cat
TASVideos' current Felix the Cat (USA) publication, 1625, is Randil's 22:29.01 run from 2010, made in FCEU 0.98.28 and tagged "Takes intentional damage". felix-the-cat/baseline-run
publication pageNES Felix the Cat by Randil in 22:29.01#1625: Randil's NES Felix the Cat in 22:29.01 · publication pageTags: Takes intentional damage#1625: Randil's NES Felix the Cat in 22:29.01 · publication pageEmulator Replay: FCEU 0.98.28Checked by claude-agent, 2026-10-25 — read the pinned copy of the publication pageCited by: Felix the Cat
Replayed in FCEUX, Randil's 1625M movie passes 23 stages in 9 worlds of 3, 3, 3, 3, 3, 2, 2, 1, and 3 stages. For each stage the table gives the frame play starts (game mode $28 reaches 5) and the frame the clear flag goes up; the last stage runs to the movie's end at frame 81,074. felix-the-cat/baseline-splits
About: Felix the Cat Level end
Value
{
"s0": {
"world": 1,
"control": 295,
"clear": 2265
},
"s1": {
"world": 1,
"control": 2722,
"clear": 4674
},
"s2": {
"world": 1,
"control": 5131,
"clear": 8076
},
"s3": {
"world": 2,
"control": 8578,
"clear": 10750
},
"s4": {
"world": 2,
"control": 11294,
"clear": 13091
},
"s5": {
"world": 2,
"control": 13555,
"clear": 16441
},
"s6": {
"world": 3,
"control": 17002,
"clear": 18845
},
"s7": {
"world": 3,
"control": 19309,
"clear": 21099
},
"s8": {
"world": 3,
"control": 21564,
"clear": 25618
},
"s9": {
"world": 4,
"control": 26112,
"clear": 28080
},
"s10": {
"world": 4,
"control": 28541,
"clear": 32473
},
"s11": {
"world": 4,
"control": 32951,
"clear": 36691
},
"s12": {
"world": 5,
"control": 37291,
"clear": 38863
},
"s13": {
"world": 5,
"control": 39333,
"clear": 43313
},
"s14": {
"world": 5,
"control": 43822,
"clear": 46912
},
"s15": {
"world": 6,
"control": 47421,
"clear": 51372
},
"s16": {
"world": 6,
"control": 51848,
"clear": 55748
},
"s17": {
"world": 7,
"control": 56296,
"clear": 60244
},
"s18": {
"world": 7,
"control": 60720,
"clear": 64311
},
"s19": {
"world": 8,
"control": 64861,
"clear": 72761
},
"s20": {
"world": 9,
"control": 73172,
"clear": 75142
},
"s21": {
"world": 9,
"control": 75601,
"clear": 77574
},
"s22": {
"world": 9,
"control": 78104,
"end": 81074
}
}the whole movie#1625: Randil's NES Felix the Cat in 22:29.01 · publication pageNES Felix the Cat by Randil in 22:29.01Checked by claude, 2026-10-27 — ran probes/felix-the-cat/baseline.mjs in FCEUX; it replays the movie from power-on and compares each of the 23 stages' world, first frame of play, and clear frame, and the movie's end, with the value, and the statement's stage count per world with the run'sProbe: probes/felix-the-cat/baseline.mjsFrames are FCEUX's frame count after each frame, from power-on. The world is the count of screens with $40 at 1 (the title, then each world's map) before the stage. The 1625M run is Randil's; the splits are the atlas's measurements of it. Mesen hasn't replayed the movie (felix-the-cat-1625m-fceux).
Cited by: Felix the Cat
In Randil's 1625M movie, replayed in FCEUX, the seven boss fights last 627 to 733 frames from the first frame of play in the boss room to the frame the boss is beaten ($0411 reaches 1), 4,982 frames in all. felix-the-cat/boss-fights
About: Felix the Cat Boss fight
Value
{
"shortest": 627,
"longest": 733,
"total": 4982,
"fights": {
"s2": {
"control": 6919,
"beaten": 7643
},
"s5": {
"control": 15184,
"beaten": 15908
},
"s8": {
"control": 24357,
"beaten": 24984
},
"s11": {
"control": 35206,
"beaten": 35928
},
"s14": {
"control": 45347,
"beaten": 46077
},
"s16": {
"control": 54065,
"beaten": 54787
},
"s18": {
"control": 62534,
"beaten": 63267
}
}
}each boss fightChecked by claude, 2026-10-27 — ran probes/felix-the-cat/baseline.mjs in FCEUX; it compares each of the seven fights' first frame of play and the frame $0411 reaches 1 with the value, and computes the lengths (724, 724, 627, 722, 730, 722, 733) and their total, 4,982, against the valueProbe: probes/felix-the-cat/baseline.mjsThe keys are stage indices. A fight's first frame of play comes 25 frames after its room loads. A way past the wall would save about these frames, plus the walk through the room after the fight, minus the longer clear tally of a higher timer (felix-the-cat/clear-tally); none is known (felix-the-cat/boss-wall).
Cited by: Felix the Cat