On this page
  1. Related
  2. Games
  3. References
  4. Sources

Fall damage charges a character for landing from a height. Prince of Persia sorts landings by speed into three bands, soft, a lost hit point, and death1, which its gravity turns into whole floors: 1 floor safe, 2 cost a hit point, 3 kill2.

  • Stepped by speedPrince of Persia (1989). One floor is safe, two cost a hit point, and three kill.1,2

Games

GameYearHowNote
Prince of Persia1989Stepped by speedone floor is safe, two cost a hit point, and three kill
Every claim about this mechanic, by game (5)
Prince of Persia 1989A landing's cost goes by the kid's downward speed when he reaches a floor: under 22 (OofVelocity) he lands softly; from 22 up to 33 (DeathVelocity) he loses 1 hit point and dies if it was his last; at 33 he loses 100, and dies. A guard who lands at 22 or more dies, and the shadow lands softly at any speed under 33.Code
Computed from the fall sequence and gravity: a kid who steps off a ledge has fallen 30 px when the free fall starts at speed 15, and reaches the floor below at speed 21 after one floor (63 px), 30 after two, and 33 after three or more. One floor costs nothing, two cost a hit point, and three or more kill him. The count assumes weightless is clear and that a fall crossing to the screen below keeps its speed and its distance to the next floor, which the atlas hasn't read in the screen-change code.Code
Sonic the Hedgehog 1991Sonic dies once his Y position is more than 224 px below the level's bottom boundary, except past X $2000 in Scrap Brain Zone act 2, where it ends the act. In Green Hill Act 1, run in MAME, every one of 18 falls into a pit killed him on the first frame after his center passed the boundary plus 224 px; the Scrap Brain exception is read in the code only.Verified
Sonic the Hedgehog 2 1992Sonic dies once his Y position is more than 224 px below the camera's bottom boundary, checked by Sonic_LevelBound before each move, as in Sonic 1, but with fixBugs off Sonic 2 checks the boundary where it is (Camera_Max_Y_pos) and Sonic 1 the target it's moving to. In Emerald Hill Act 1, run in MAME, each of 18 falls into a pit killed him on the first frame after his center passed row 1024.Verified
Sonic 3 & Knuckles 1994Sonic dies once his Y position is more than 224 px below the level's bottom boundary, unless the level has set Disable_death_plane; with reverse gravity it is the top boundary instead. In Angel Island Act 1, run in MAME, every one of 18 falls into a pit killed him on the first frame after his center passed the boundary plus 224 px; the other branches are read in the code only.Verified

References

  1. ^ abA landing's cost goes by the kid's downward speed when he reaches a floor: under 22 (OofVelocity) he lands softly; from 22 up to 33 (DeathVelocity) he loses 1 hit point and dies if it was his last; at 33 he loses 100, and dies. A guard who lands at 22 or more dies, and the shadow lands softly at any speed under 33.Codejmechner/Prince-of-Persia-Apple-II
    How we know
    42DeathVelocity = 33
    43OofVelocity = 22
    
    01 POP Source/Source/CTRL.S lines 42–43 at 2524355 · upstream ↗
    184:notspikes
    185 lda CharYVel
    186 cmp #OofVelocity
    187 bcc :softland
    ⋮
    189 cmp #DeathVelocity
    190 bcc :medland
    ⋮
    192:hardland
    193 lda #100
    194 jsr decstr
    195:hdland1
    ⋮
    202:medland
    203 lda CharID
    ⋮
    
    01 POP Source/Source/CTRL.S lines 184–211 at 2524355 · upstream ↗
    691DECSTR
    692 ldx CharID
    693 bne :enemy
    ⋮
    695 cmp KidStrength
    696 bcs killkid
    
    01 POP Source/Source/MISC.S lines 691–696 at 2524355 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-22.

    Checked by a second AI model, 2026-10-22.

    In the claim ledger

  2. ^ abComputed from the fall sequence and gravity: a kid who steps off a ledge has fallen 30 px when the free fall starts at speed 15, and reaches the floor below at speed 21 after one floor (63 px), 30 after two, and 33 after three or more. One floor costs nothing, two cost a hit point, and three or more kill him. The count assumes weightless is clear and that a fall crossing to the screen below keeps its speed and its distance to the next floor, which the atlas hasn't read in the screen-change code.Codejmechner/Prince-of-Persia-Apple-IIrevised
    How we know
    640stepfall ;from #8 (run-11)
    641 db act,3
    642 db chx,1,chy,3
    ⋮
    647 db 102,chx,2,chy,6
    648 db 103,chx,-1,chy,9
    649 db 104,chy,12
    ⋮
    652 db setfall,1,15
    
    01 POP Source/Source/SEQTABLE.S lines 640–654 at 2524355 · upstream ↗
    661 jsr animchar ;Get next frame from sequence table
    ⋮
    663 jsr gravity ;Adjust Y-velocity
    664 jsr addfall ;Add falling velocity
    
    01 POP Source/Source/TOPCTRL.S lines 661–664 at 2524355 · upstream ↗
    1651ADDFALL
    1652 lda CharYVel
    1653 clc
    1654 adc CharY
    1655 sta CharY
    
    01 POP Source/Source/SUBS.S lines 1651–1655 at 2524355 · upstream ↗
    1613TermVelocity = 33
    1614AccelGravity = 3
    
    01 POP Source/Source/SUBS.S lines 1613–1614 at 2524355 · upstream ↗
    36BlockHeight = 63
    
    01 POP Source/Source/TABLES.S line 36 at 2524355 · upstream ↗
    42DeathVelocity = 33
    43OofVelocity = 22
    
    01 POP Source/Source/CTRL.S lines 42–43 at 2524355 · upstream ↗
    76falling
    ⋮
    84 jmp fallon ;Hasn't reached floor yet
    ⋮
    95 bne hitflr
    ⋮
    97 inc CharBlockY ;Fall thru floor plane
    
    01 POP Source/Source/CTRL.S lines 76–97 at 2524355 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-22.

    Revised after a check by a second AI model, 2026-10-22.

    In the claim ledger

Sources

Code