data/claims/castlevania.yamlCastlevania (USA) (Rev 1), read in the ROM and measured in Mesen
Game: Castlevania.
In Simon's standing state, the frame A goes down starts a jump, unless a block is over his head (ceiling-takeoff); the take-off code points his arc at a fixed table and copies the d-pad's Left and Right bits into his direction. castlevania/jump-start
About: Castlevania Jump
CodeCastlevania (USA) (Rev 1) ·0x19376-0x19391 — bank 6 $9366-$9381, the dispatch on Simon's state; state 0 (standing) runs $9380, state 1 (jumping) $9482Castlevania (USA) (Rev 1) · 0x19411-0x1944B — bank 6 $9401-$943B: A pressed this frame, a ceiling check, the table pointer from $9B8D, state 1, then direction = facing | (held Right/Left)Checked by claude, 2026-10-22 — disassembled bank 6 $9366-$943B in the pinned ROM; the probe's trace of a jump (state $046C 0 → 1 on the press frame) led to it; in probes/lab/castlevania-ceiling.mjs, Right and A at x 55 steps him to 56 on the press frame and jumps, with Y unchanged that frameThe press frame takes the standing state's walk step if Right or Left is held (takeoff-x), but no arc step; the jumping state takes its first step on the next frame (arc).
Cited by: Castlevania, Jump, Variable jump height
Simon's jump rises by a fixed table of per-frame steps, 5, 5, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1, 1, 1, 0, 1, 0, 0, 0, and 0 px, 36 px in all. castlevania/jump-table
About: Castlevania Jump
Value
[ 5, 5, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0 ]
0x19B9D-0x19BB4 — bank 6 $9B8D-$9BA4, the table's address, a $80 start marker, 20 signed steps ($FB = −5, up), and a $81 turn markerCastlevania (USA) (Rev 1) · 0x19B2E-0x19B9A — bank 6 $9B1E-$9B8A, the routine that adds one step to Simon's Y each frame and moves the table pointerChecked by claude, 2026-10-20 — read the table bytes and disassembled the routine in the pinned ROM; the probe's measured arc matches the steps frame for frameScreen Y grows downward, so the bytes are negative; the statement gives the rises as positive pixels.
Cited by: Castlevania, Gravity, Jump, Variable jump height
At the table's turn marker the arc routine reverses and reads the same steps backward, negated, so Simon falls the way he rose. castlevania/table-turn
About: Castlevania Jump
CodeCastlevania (USA) (Rev 1) ·0x19B41-0x19B50 — bank 6 $9B31-$9B40: on $81, flip the direction flag ($0514), step the pointer back, and read againCastlevania (USA) (Rev 1) · 0x19B2E-0x19B9A — bank 6 $9B1E-$9B8A; with the flag set, each step is negated and the pointer moves backChecked by claude, 2026-10-20 — disassembled the arc routine in the pinned ROMThe turn frame steps back onto the last step, so each of the table's 4 closing zeros is read once each way, and Simon holds his 36 px top for 8 frames.
Cited by: Castlevania, Variable jump height
Once the reversed table runs out, the arc routine moves Simon down 8 px every frame until he lands, so a jump that ends below its take-off point falls at 8 px per frame. castlevania/table-end-fall
About: Castlevania Gravity
Value: 8 px/frame
VerifiedCastlevania (USA) (Rev 1) ·0x19B53-0x19B6E — bank 6 $9B43-$9B5E: on the $80 marker the step is $F8, negated while falling to +8, and the pointer stays putChecked by claude, 2026-10-22 — disassembled the arc routine in the pinned ROM; in the probe, a jump off a 64 px block built in the courtyard's collision map ends its table at take-off height and then falls 8 px a frame for 8 framesProbe: probes/jump-physics/castlevania-stage.mjsMeasured on ground built in the collision map; the courtyard itself is flat.
Cited by: Castlevania, Gravity
Measured in the game, Simon's standing jump is the same with A held 1, 2, 5, 10, 20, or 40 frames, 36 px high on frame 17 and back on the ground on frame 41. castlevania/apex-by-hold
About: Castlevania Variable jump height
Value
{
"holds": [
1,
2,
5,
10,
20,
40
],
"tap": {
"apex": 36,
"apexAt": 17,
"airtime": 41
},
"full": {
"apex": 36,
"apexAt": 17,
"airtime": 41
}
}0x19B2E-0x19B9A — bank 6 $9B1E-$9B8A; the arc routine reads no buttonsCastlevania (USA) (Rev 1) · 0x194D5-0x194D9 — bank 6 $94C5-$94C9, where the jumping state runs the arc routine every frameChecked by claude, 2026-10-20 — ran the probe; it starts from power-on and jumps in the first courtyard with A held for each of the six lengths, and all six arcs are identical frame for frameProbe: probes/jump-physics/emu-jumps.mjsFrame 1 is the press frame. Heights are Simon's Y ($3F) above the take-off row.
Cited by: Castlevania, Jump, Super Castlevania IV, Variable jump height
Measured frame by frame, Simon's standing jump follows the table exactly, from a motionless press frame to a landing 40 frames later. castlevania/arc
About: Castlevania Jump
Value
[ 0, 0, 5, 10, 13, 16, 19, 22, 25, 27, 29, 31, 32, 33, 34, 35, 35, 36, 36, 36, 36, 36, 36, 36, 36, 36, 35, 35, 34, 33, 32, 31, 29, 27, 25, 22, 19, 16, 13, 10, 5, 0 ]
0x19B9D-0x19BB4 — the tableChecked by claude, 2026-10-20 — ran the probe; the heights after each frame from the press (frame 0 is before it) match the listProbe: probes/jump-physics/emu-jumps.mjsHeight above take-off after each frame, from frame 0 (before the press) to frame 41.
Cited by: Castlevania, Jump, Variable jump height
Measured in the game, a jump keeps the direction held at take-off, 1 px per frame that way or none, whatever the d-pad does in the air. castlevania/air-direction
About: Castlevania Air control
Value: 1 px/frame
VerifiedCastlevania (USA) (Rev 1) ·0x19411-0x1944B — bank 6 $9401-$943B; take-off copies the held Right/Left bits into Simon's directionCastlevania (USA) (Rev 1) · 0x19489-0x19491 — bank 6 $9479-$9481: horizontal speed $3D/$3E = 0/1, 1 px per frameCastlevania (USA) (Rev 1) · 0x1949E-0x194A6 — bank 6 $948E-$9496, where the jumping state sets that speed and moves Simon each frameChecked by claude, 2026-10-20 — ran the probe; a walking jump to the right moves 1 px every frame, a walking jump to the left keeps moving left after Right is pressed from frame 6, and a standing jump doesn't move after Right is pressed from frame 6Probe: probes/jump-physics/emu-jumps.mjsThe press frame already moves him, since the walking state runs before the jump starts.
Cited by: Air control, Castlevania, Variable jump height
Measured in the game, Simon walks 40 px in 40 frames, 1 px per frame. castlevania/walk-speed
About: Castlevania Running
Value: 1 px/frame
VerifiedCastlevania (USA) (Rev 1) ·0x198AA-0x1991A — bank 6 $989A-$990A, which adds the speed $3D/$3E to Simon's X in his directionCastlevania (USA) (Rev 1) · 0x193EE-0x193F3 — bank 6 $93DE-$93E3, the standing state's call to it (the jumping state makes the same call at $9491)Checked by claude, 2026-10-20 — ran the probe; 40 frames of Right from a standstill move him 40 pxProbe: probes/jump-physics/emu-jumps.mjsCited by: Castlevania
Simon has no acceleration; each frame on the ground his direction bits are set from the d-pad's held Left and Right, and the move routine shifts him by his speed bytes, 1 px/frame, in that direction or not at all. castlevania/walk-rule
About: Castlevania Running
Value
{
"speed": 256
}0x193E9-0x193F3 — bank 6 $93D9-$93E3, the standing state: copy the held buttons ($F7) to $0584, then call the direction routine $9809 and the move routine $989ACastlevania (USA) (Rev 1) · 0x19825-0x1983E — bank 6 $9815-$982E: direction bits $3C = bit 2 kept | ($0584 AND 3), the held Right (1) and Left (2)Castlevania (USA) (Rev 1) · 0x198AA-0x1991A — bank 6 $989A-$990A: no direction bits, no move; else add or subtract $3E.$3D to his screen X or to the cameraCastlevania (USA) (Rev 1) · 0x1C9B5-0x1C9BC — bank 7 $C9A5-$C9AC, stage start sets $3D = 0 and $3E = 1Checked by claude, 2026-10-21 — disassembled the standing state and routines $9809 and $989A in the pinned ROM; in the probe, Right moves Simon 1 px on its first frame and every frame after, he stops on the first frame without it, and Left reverses him on its first frameProbe: probes/jump-physics/movement.mjs$3E is whole pixels and $3D the fraction. Bit 2 of $3C chooses whether Simon moves on the screen ($038C, fraction $03A8) or the camera scrolls under him ($2D-$2F); his level X ($40/$41) is screen X plus camera either way. Stairs and moving platforms set other speeds (0.5 px/frame on stairs). Private notes: research/private/castlevania-movement.md.
Cited by: Castlevania, Running
While Left or Right is held, the crouching state, and the standing state on a frame that doesn't start a fall, a stair climb, a whip, a jump, or a crouch, set Simon's facing ($0450) from it, so he turns on the first frame, and crouching he can turn without moving. A frame that starts any of those keeps the facing he had. castlevania/facing
About: Castlevania Running
VerifiedCastlevania (USA) (Rev 1) ·0x19468-0x19472 — bank 6 $9458-$9462: held Left/Right shifted right one bit into $0450 (0 right, 1 left)Castlevania (USA) (Rev 1) · 0x19549-0x19594 — bank 6 $9539-$9584, the crouching state, which does the same at $9557-$955ECastlevania (USA) (Rev 1) · 0x19411-0x1944B — bank 6 $9401-$943B, the jump's take-off, which returns before $9458Castlevania (USA) (Rev 1) · 0x1945A-0x19467 — bank 6 $944A-$9457, the crouch's start, which returns through $9A69 before $9458Castlevania (USA) (Rev 1) · 0x193FD-0x19410 — bank 6 $93ED-$9400: Up or Down at a stair ($9C10) starts the climb and returns at $9400Castlevania (USA) (Rev 1) · 0x1944C-0x19459 — bank 6 $943C-$9449: a whip started ($9A2A, carry set) moves the state on and returnsCastlevania (USA) (Rev 1) · 0x193D5-0x193E8 — bank 6 $93C5-$93D8, the fall entry, which returns before the moveChecked by claude, 2026-10-21 — disassembled both states in the pinned ROM; in the probe `$0450` flips on the first frame of Left, walking and crouched. In probes/jump-physics/castlevania-stage.mjs, facing left, Right pressed with A or with Down keeps him facing left on that frame, and a jump keeps itProbe: probes/jump-physics/movement.mjsThe jump keeps the take-off direction instead (air-direction). The jump and crouch frames are measured; the fall, stair, and whip frames are read in the code only.
Cited by: Running
Down on the ground puts Simon in the crouching state 4 px lower, where the d-pad no longer moves him; letting go stands him back up, and that frame he doesn't move either. castlevania/crouch
About: Castlevania Running
VerifiedCastlevania (USA) (Rev 1) ·0x1945A-0x19467 — bank 6 $944A-$9457: Down held, state 3, then Y += 4 ($9A69)Castlevania (USA) (Rev 1) · 0x19549-0x19594 — bank 6 $9539-$9584: the crouching state writes $04 (Down alone) to $0584 before the move, so no direction bits; Down let go: Y −= 4 and state 0 ($9578)Checked by claude, 2026-10-21 — disassembled the standing state's Down branch and the crouching state in the pinned ROM; in the probe, Down with Right moves 1 px on its press frame (the standing state moves before it checks Down), Y goes 176 → 180, nothing moves while crouched, and the frame Down is let go moves 0Probe: probes/jump-physics/movement.mjsThe press frame still walks, since the standing state moves Simon before it reads Down.
Cited by: Running
The standing state moves Simon before it checks A, so the press frame walks at 1 px/frame; the take-off then fixes the jump's direction from the d-pad held on that frame, and the jumping state moves him 1 px/frame that way or not at all. castlevania/takeoff-x
About: Castlevania Jump
VerifiedCastlevania (USA) (Rev 1) ·0x193E9-0x193F3 — bank 6 $93D9-$93E3, the move before the jump checkCastlevania (USA) (Rev 1) · 0x19411-0x1944B — bank 6 $9401-$943B: the take-off writes held Left/Right into $3CCastlevania (USA) (Rev 1) · 0x19489-0x19491 — bank 6 $9479-$9481, the jumping state's speed, 1 px/frameChecked by claude, 2026-10-21 — disassembled the standing and jumping states in the pinned ROM; in the probe a walking jump moves 1 px on the press frame and every jumping frame, with or without the d-pad after the pressProbe: probes/jump-physics/movement.mjsThe jumping state never rewrites $0584, so the direction routine keeps reading the buttons held at take-off.
Cited by: Air control
A jump lands during the jumping state's frame, after that frame's move in the take-off direction; from the next frame the standing state takes the d-pad again, so Simon stops at once or walks at 1 px/frame. castlevania/landing
About: Castlevania Jump
VerifiedCastlevania (USA) (Rev 1) ·0x194EA-0x1950F — bank 6 $94DA-$94FF: on the floor, Y snapped to a multiple of 8 ($9A62), state 0 (or the standing whip if he was whipping)Checked by claude, 2026-10-21 — disassembled the jumping state's landing in the pinned ROM; in the probe, a jump to the right landed with the d-pad released moves 1 px on the landing frame and 0 after, and Right pressed only on the landing frame of a standing jump moves him from the next frameProbe: probes/jump-physics/movement.mjsNothing carries over horizontally; Simon has no momentum to keep.
Walking off a ledge puts Simon in a falling state that moves him on in his facing direction at 1 px/frame and down 8 px/frame; landing after 8 or more falling frames drops him into a crouch for 16 frames. castlevania/ledge-fall
About: Castlevania Jump
Value
{
"dx": 1,
"dy": 8,
"hardAfter": 8,
"crouchFrames": 16
}0x193D5-0x193E8 — bank 6 $93C5-$93D8: no floor under the standing state: fall counter $0143 = 0, $0584 = facing + 1 (the direction bits), state 7Castlevania (USA) (Rev 1) · 0x19767-0x197B6 — bank 6 $9757-$97A6: each frame count up, land on a floor, else move with $9809/$989A and Y += 8; landing with the count at 8 or more sets Y += 4, state 9, and a counter of 16Castlevania (USA) (Rev 1) · 0x19802-0x19818 — bank 6 $97F2-$9808: state 9 forces Down into the held buttons and runs the crouching state until the counter goes negative, then stands him upChecked by claude, 2026-10-22 — disassembled the fall entry, the falling state, and the landing crouch in the pinned ROM; in the probe, with ledges built in the first courtyard's collision map, Simon falls 1 px forward and 8 px down a frame, a 64 px fall lands with the counter at 9 in the crouch (Y 4 px lower) and he walks again 18 frames later, and a 32 px fall lands with it at 5 and walks on at onceProbe: probes/jump-physics/castlevania-stage.mjsThe landing frame counts as a falling frame. The 18 frames are the landing frame, 16 crouching frames, and a frame standing up. The jump's own fall (table-end-fall) is a different state.
Simon's floor is tested at x−4 and x+4, 16 px below his Y; walls at x+8 or x−8 at five heights from 9 px above to 15 px below it; and a jump needs clear space 19 px above at x−7, x, and x+7. castlevania/terrain-points
About: Castlevania Hitbox
Value
{
"floor": {
"x": [
-4,
4
],
"y": 16
},
"wall": {
"x": 8,
"y": [
-9,
-4,
0,
8,
15
],
"yFalling": [
-9,
-4,
0,
8,
16
]
},
"ceiling": {
"x": [
-7,
0,
7
],
"y": -19
}
}0x19E80-0x19EDA — bank 6 $9E70-$9ECA: the floor test at (x−4, y+16), then (x+4, y+16)Castlevania (USA) (Rev 1) · 0x19EDE-0x19F89 — bank 6 $9ECE-$9F79: the wall test at x+8 moving right or x−8 moving left, at y plus each of the table's $0F, $08, $00, $F7, $FC (or $10 for $0F while a jump falls)Castlevania (USA) (Rev 1) · 0x199A8-0x199FD — bank 6 $9998-$99ED: the take-off's ceiling test at y−19, x−7, x, and x+7Checked by claude, 2026-10-21 — disassembled the three routines and the offset table in the pinned ROMX is $40/$41 and Y is $3F (screen Y, growing downward), both Simon's center; he stands with Y 16 px above the floor tile's top. Crouching moves Y down 4 px. His box against enemies is a separate routine, not read yet.
Cited by: Hitbox
Each frame, the standing and crouching states test Simon's floor points before they move him or read A; with no ground under either point, they put him in the falling state and end the frame there, so he doesn't move and A isn't read. The frame whose step carries his second floor point past an edge still reads A after the step, so a press on that frame jumps. castlevania/walk-off-order
About: Castlevania Coyote time
VerifiedCastlevania (USA) (Rev 1) ·0x193CB-0x19415 — bank 6 $93BB-$9405, the standing state: the floor test $9E70; no floor: fall entry ($93C5) and return; else the move ($9809, $989A), then A pressed this frame ($9401)Castlevania (USA) (Rev 1) · 0x19549-0x19559 — bank 6 $9539-$9549, the crouching state (and the landing crouch) runs the same floor test first and jumps to the fall entryChecked by claude, 2026-10-22 — disassembled the standing and crouching states in the pinned ROM; in the probe, walking right toward a pit cut into the courtyard's collision map at x 96, frame 50 takes him to x 100, frame 51 puts him in the falling state (7) without moving him, A on frame 50 jumps, and A on frame 51 or 52 doesn'tProbe: probes/jump-physics/castlevania-stage.mjsWalking right off an edge at x = r, the floor points x−4 and x+4 have no ground once x reaches r + 4; the next frame starts the fall. Before the floor test the state also checks the moving platforms ($AC70), which aren't modeled.
Cited by: Coyote time
Simon has no coyote time. The falling state reads no buttons: A after he walks off doesn't jump, B doesn't whip, and the d-pad doesn't steer, since the direction routine reads the direction the fall's entry wrote from his facing. castlevania/no-coyote-time
About: Castlevania Coyote time
VerifiedCastlevania (USA) (Rev 1) ·0x19767-0x1978A — bank 6 $9757-$977A, the falling state: count, floor test, the direction and move routines, Y += 8; no read of the buttons ($F5, $F7)Castlevania (USA) (Rev 1) · 0x193D5-0x193E8 — bank 6 $93C5-$93D8, the fall entry: $0584 = facing + 1 (1 right, 2 left)Castlevania (USA) (Rev 1) · 0x19819-0x1983D — bank 6 $9809-$982D, the direction routine: direction bits from $0584, not the padChecked by claude, 2026-10-22 — disassembled the fall entry, the falling state, and the direction routine in the pinned ROM; in the probe, falling into a pit cut into the courtyard's collision map, A, B, or Left held while falling right leaves him in the falling state, moving right 1 px a frame and facing rightProbe: probes/jump-physics/castlevania-stage.mjsThe frame he walks off is lost too, since the standing state ends before its A check (walk-off-order).
Cited by: Castlevania, Coyote time
Above screen Y 208 and off moving platforms, each falling frame tests the floor at Simon's position before he moves: with ground under either floor point he lands that frame without moving, his Y snapped up to a multiple of 16; otherwise he moves 1 px and drops 8 px. From Y 208 on, the floor test finds no ground. castlevania/fall-order
About: Castlevania Gravity
VerifiedCastlevania (USA) (Rev 1) ·0x19767-0x1978A — bank 6 $9757-$977A: floor test ($9E70) first; the move and Y += 8 only without a floorCastlevania (USA) (Rev 1) · 0x19792-0x197B6 — bank 6 $9782-$97A6: Y AND $F0 unless the stage is $0A, then the landing-crouch checkCastlevania (USA) (Rev 1) · 0x19E80-0x19E85 — bank 6 $9E70-$9E75: Y at $D0 (208) or more skips the floor test and reports no groundCastlevania (USA) (Rev 1) · 0x1976F-0x19773 — bank 6 $975F-$9763, the moving-platform check ($AC70), which lands him tooChecked by claude, 2026-10-22 — disassembled the falling state and its landing in the pinned ROM; in the probe, the movement lab's model, which tests the floor before the move, matches every traced frame of 32 px and 64 px falls onto ground built in the courtyard's collision mapProbe: probes/jump-physics/castlevania-stage.mjsStanding Y is a multiple of 16 and floors sit on 16 px rows, so an 8 px fall from a standing start meets a floor exactly; the snap doesn't move him. Read in the code only (T3): in stage $0A the landing doesn't snap Y to 16.
A wall stops Simon without pushing him out. Before each move, in the standing, jumping, and falling states, the direction routine tests the wall points on the side he's moving toward; if any is in solid ground it clears his direction bits, so he doesn't move that frame and nothing else changes. A jump keeps rising and falling, and moves on again once the points are clear. castlevania/wall-stop
About: Castlevania Hitbox
VerifiedCastlevania (USA) (Rev 1) ·0x1984E-0x19852 — bank 6 $983E-$9842, the direction routine calls the wall test ($9ECE) and on a hit branches to $97EBCastlevania (USA) (Rev 1) · 0x197FB-0x19801 — bank 6 $97EB-$97F1, which clears the two direction bits of $3CCastlevania (USA) (Rev 1) · 0x1949E-0x194E9 — bank 6 $948E-$94D9, the jumping state runs the direction and move routines before the arc stepCastlevania (USA) (Rev 1) · 0x193E9-0x193F3 — bank 6 $93D9-$93E3, the standing state's calls to the direction and move routinesCastlevania (USA) (Rev 1) · 0x19774-0x1977C — bank 6 $9764-$976C, the falling state's calls, after its floor testChecked by claude, 2026-10-22 — disassembled the direction routine, its wall branch, and the jumping state in the pinned ROM; in the probe, with blocks built in the courtyard's collision map, walking right into one whose left edge is x 96 stops him at x 88, walking left into one ending at x 24 stops him at x 31, a jump from against a block rises in place until his wall points clear its top, then moves on, and a fall into the side of a block whose left edge is x 112 stops at x 104 while he keeps dropping 8 px a frameProbe: probes/jump-physics/castlevania-stage.mjsThe direction bits are rebuilt each frame, from the pad on the ground or from the take-off or fall direction in the air. The wall test is skipped in states 4 and 6.
From the turn of its table on, the jumping state tests the floor after each frame's step, so a jump lands on any top its floor points meet on the way down, above or below take-off height; the landing snaps Y up to a multiple of 16. Each 8 px frame past the table's end counts in the fall counter the take-off zeroed, and landing with it at 8 or more starts the 16-frame landing crouch. This holds outside stage $0A and when he isn't whipping as he lands (see notes). castlevania/jump-landing
About: Castlevania Jump
VerifiedCastlevania (USA) (Rev 1) ·0x1949E-0x194E9 — bank 6 $948E-$94D9: the arc step, then the floor test only with the moving-down flag ($0514) setCastlevania (USA) (Rev 1) · 0x194EA-0x1950F — bank 6 $94DA-$94FF: Y AND $F8; whipping ($94DD-$94E4): state 2; else state 0 and on to $9782Castlevania (USA) (Rev 1) · 0x19792-0x197B6 — bank 6 $9782-$97A6: Y AND $F0 unless stage $0A; fall counter $0143 at 8 or more: Y += 4, state 9, 16 framesCastlevania (USA) (Rev 1) · 0x19B53-0x19B57 — bank 6 $9B43-$9B47, the arc routine's end marker gives an 8 px step and counts it in $0143Castlevania (USA) (Rev 1) · 0x19428-0x19430 — bank 6 $9418-$9420, the take-off zeroes the moving-down flag and $0143Checked by claude, 2026-10-22 — disassembled the jumping state, its landing, the arc routine's end marker, and the take-off in the pinned ROM; in the probe, with blocks built in the courtyard's collision map, jumps land on blocks 32 and 64 px above take-off, and a jump off the 64 px block lands on the floor with the counter at 8, in the crouchProbe: probes/jump-physics/castlevania-stage.mjsThe moving-down flag flips on the turn frame's step, so the floor test runs from that frame. The rises are at most 5 px a frame and the fall 8, so the snap puts his feet on the top he met. Read in the code only (T3), not measured: in stage $0A the landing snaps Y to a multiple of 8 but not 16, and a landing while whipping goes to the standing whip, with neither the 16 px snap nor the landing crouch.
Simon dies when his Y reaches 224 ($E0) in the falling state, before its 8 px drop, or 224 to 239 in the jumping state, at the start of its frame. castlevania/pit-death
About: Castlevania Gravity
Value: 224 px (screen Y)
CodeCastlevania (USA) (Rev 1) ·0x19492-0x1949D — bank 6 $9482-$948D: Y − $E0 below $10 kills himCastlevania (USA) (Rev 1) · 0x1977F-0x19784 — bank 6 $976F-$9774: Y at $E0 or more kills himChecked by claude, 2026-10-22 — disassembled both checks in the pinned ROMScreen Y grows downward; standing on the first courtyard's floor, Y is 176.
Simon can't jump from under a block on his head. On the frame A goes down, after that frame's walk step, the standing state tests three points 19 px above his center, at x−7, x, and x+7; if any is solid (below screen Y 48), the press is dropped. That frame then runs as one with neither A nor Down: he turns to the d-pad but doesn't crouch or whip, and holding A out from under the block doesn't jump, since only a new press does. castlevania/ceiling-takeoff
About: Castlevania Jump
VerifiedCastlevania (USA) (Rev 1) ·0x19417-0x1941B — bank 6 $9407-$940B: the take-off calls the ceiling test ($9998) and, with carry clear, branches to $9458Castlevania (USA) (Rev 1) · 0x199A8-0x199FF — bank 6 $9998-$99EF: the collision lookup at (x−7, y−19), (x, y−19), (x+7, y−19); any solid cell returns carry clearCastlevania (USA) (Rev 1) · 0x19468-0x19488 — bank 6 $9458-$9478: the end of the standing state, past the B check that sets state 2, the whip ($943C), and the Down check ($944A): facing from the direction bits, the walk animationChecked by claude, 2026-10-22 — disassembled the take-off, the ceiling test, and the branch target in the pinned ROM; in the probe, with blocks written into the courtyard's collision map, A under a block whose underside is 32 px above his feet never jumps, alone or with Right, Left, Down, or B; a block under only x−7, x, or x+7 stops it and one a pixel past them doesn't; Right and A at x 55 steps to 56 and jumps, at x 56 steps to 57 and doesn't; and the movement lab's model matches every frame of all 19 casesProbe: probes/lab/castlevania-ceiling.mjsY is his center, 16 px above the floor's top, so the points sit 35 px above that top. The game's collision cells are 8 px squares: a block whose underside is 32 px above his feet fills the row the points read, and one 40 px up doesn't. The collision lookup ($F9A0) finds nothing above screen Y 48, so near the top of the screen nothing stops the take-off.
Once Simon is in the air, no ceiling is tested: a block over his head doesn't cut a jump short. The jumping state calls no ceiling test; it runs the direction and move routines, the arc step, and from the turn on the floor test. His head rises into the block on the same arc as in the open, and the block stops him moving sideways only where his wall points meet it. castlevania/ceiling-rise
About: Castlevania Jump
VerifiedCastlevania (USA) (Rev 1) ·0x1949E-0x194E9 — bank 6 $948E-$94D9: the direction and wall test ($9809), the move ($989A), the arc step ($9B1E), then the floor test only once moving downCastlevania (USA) (Rev 1) · 0x19B2E-0x19B9A — bank 6 $9B1E-$9B8A, the arc step: adds the table's step to Y; no collision callChecked by claude, 2026-10-22 — disassembled the jumping state and the arc step in the pinned ROM; in the probe, under a block 48 px above his feet a standing jump rises the full table to Y 140, and jumping right under it the rise is the table's step for step while his x stops at 58 as his wall points enter the block, then moves on as they leave it on the way down; the movement lab's model matches every frameProbe: probes/lab/castlevania-ceiling.mjsIt follows that on a 16 px grid a jump from below can't land inside a block: a block low enough for his feet to reach at the apex (36 px) is low enough for the take-off test, and from the side his wall points stop him before his feet get under it.
Under a block on his head, a hit doesn't knock Simon back. Outside state 4, whose hit sets only $47 and $5B, the routine that starts the knockback (state 5, a short arc away from what hit him) first runs the take-off's ceiling test; with a block there it puts him straight into the 16-frame crouch (state 9) that also ends a knockback's landing. castlevania/hurt-ceiling
About: Castlevania Knockback
CodeCastlevania (USA) (Rev 1) ·0x196D1-0x1970A — bank 6 $96C1-$96FA: in state 4, $47 = 16 and $5B = 48, then return; else the ceiling test ($9998); clear: the arc table at $9BA5, state 5, direction away from the object; blocked: to $96ADCastlevania (USA) (Rev 1) · 0x196B1-0x196D0 — bank 6 $96A1-$96C0: the knockback's landing: at 0 HP he dies; else $96AD sets state 9 with its counter ($054C) at 16Checked by claude, 2026-10-22 — disassembled the knockback's start and landing in the pinned ROM; not measuredRead in the code only (T3). State 4 isn't identified yet; its hit has no knockback either way. $96AD also sets $5B to 48, which reads as an invincibility timer but isn't confirmed.