(amiga.tal) Bounce on walls

This commit is contained in:
neauoire 2022-03-29 10:30:54 -07:00
parent 2a892a23b1
commit d64600e711
1 changed files with 14 additions and 5 deletions

View File

@ -9,7 +9,7 @@
@timer $1 @timer $1
@frame $1 @frame $1
|0100 @reset |0100
( vectors ) ( vectors )
;on-frame .Screen/vector DEO2 ;on-frame .Screen/vector DEO2
@ -24,7 +24,7 @@
#0020 .ball/x STZ2 #0020 .ball/x STZ2
#0020 .ball/y STZ2 #0020 .ball/y STZ2
( initial velocity ) ( initial velocity )
#0002 .ball/vx STZ2 #0008 .ball/vx STZ2
#0000 .ball/vy STZ2 #0000 .ball/vy STZ2
( once ) ( once )
;make-shadow JSR2 ;make-shadow JSR2
@ -60,17 +60,26 @@ JMP2r
@move-ball ( -- ) @move-ball ( -- )
,clear-ball JSR ,clear-ball JSR
.ball/vx LDZ2k STH2k ROT STZ2
.ball/x LDZ2k STH2r ADD2 ,check-flip-vx JSR ROT STZ2
.ball/vy LDZ2k INC2 STH2k ROT STZ2 .ball/vy LDZ2k INC2 STH2k ROT STZ2
.ball/y LDZ2k STH2r ADD2 ,check-flip-vy JSR ROT STZ2 .ball/y LDZ2k STH2r ADD2 ,check-flip-vy JSR ROT STZ2
,draw-ball JSR ,draw-ball JSR
JMP2r JMP2r
@check-flip-vx ( x -- x )
( left ) DUP2 #0010 LTH2 ,&flip JCN
( right ) DUP2 .Screen/width DEI2 #0050 SUB2 GTH2 ,&flip JCN ,&else JMP
&flip .ball/vx LDZ2k #ffff EOR2 ( INC2 ) ROT STZ2
&else
JMP2r
@check-flip-vy ( y -- y ) @check-flip-vy ( y -- y )
DUP2 #0028 ADD2 ( bottom ) DUP2 .Screen/height DEI2 #0050 SUB2 GTH2 ,&flip JCN ,&else JMP
.Screen/height DEI2 #0028 SUB2
GTH2 ,&flip JCN ,&else JMP
&flip .ball/vy LDZ2k #ffff EOR2 ( INC2 ) ROT STZ2 &flip .ball/vy LDZ2k #ffff EOR2 ( INC2 ) ROT STZ2
&else &else