 CONSTANT: PLAYER-START-LOCATION float-4{ 0.5 0.51 0.5 1.0 }
 CONSTANT: VELOCITY-MODIFIER-NORMAL float-4{ 1.0 1.0 1.0 0.0 }
 CONSTANT: VELOCITY-MODIFIER-FAST float-4{ 2.0 1.0 2.0 0.0 }
+CONSTANT: BOUNCE float-4{ 1.0 -0.2 1.0 1.0 }
 CONSTANT: PLAYER-HEIGHT 1/256.
 CONSTANT: GRAVITY float-4{ 0.0 -1/4096. 0.0 0.0 }
 CONSTANT: JUMP 1/1024.

    indices [ pixels nth COMPONENT-SCALE v. 255.0 / ] map
    first4 pixel-mantissa bilerp ;

: collide ( segment location -- location' )
    [ [ first ] [ third ] bi 2array terrain-height-at PLAYER-HEIGHT + ]
    [ [ 1 ] 2dip [ max ] with change-nth ]
    [ ] tri ;

: scaled-velocity ( player -- velocity )
    [ velocity>> ] [ velocity-modifier>> ] bi v* ;

: tick-player-forward ( world player -- )
    2dup save-history
    [ apply-friction apply-gravity ] change-velocity
    dup scaled-velocity [ v+ ] curry change-location
    collide ;

: tick-player ( world player -- )
    dup reverse-time>>
