Browse code

(amiga.tal) Bounce on walls

neauoire authored on 29/03/2022 17:30:54
Showing 1 changed files
... ...
@@ -9,7 +9,7 @@
9 9
 	@timer $1
10 10
 	@frame $1
11 11
 
12
-|0100 @reset
12
+|0100
13 13
 
14 14
 	( vectors )
15 15
 	;on-frame .Screen/vector DEO2
... ...
@@ -24,7 +24,7 @@
24 24
 	#0020 .ball/x STZ2
25 25
 	#0020 .ball/y STZ2
26 26
 	( initial velocity )
27
-	#0002 .ball/vx STZ2
27
+	#0008 .ball/vx STZ2
28 28
 	#0000 .ball/vy STZ2
29 29
 	( once )
30 30
 	;make-shadow JSR2
... ...
@@ -60,17 +60,26 @@ JMP2r
60 60
 @move-ball ( -- )
61 61
 
62 62
 	,clear-ball JSR
63
+	.ball/vx LDZ2k STH2k ROT STZ2
64
+	.ball/x LDZ2k STH2r ADD2 ,check-flip-vx JSR ROT STZ2
63 65
 	.ball/vy LDZ2k INC2 STH2k ROT STZ2
64 66
 	.ball/y LDZ2k STH2r ADD2 ,check-flip-vy JSR ROT STZ2
65 67
 	,draw-ball JSR
66 68
 
67 69
 JMP2r
68 70
 
71
+@check-flip-vx ( x -- x )
72
+
73
+	( left ) DUP2 #0010 LTH2 ,&flip JCN 
74
+	( right ) DUP2 .Screen/width DEI2 #0050 SUB2 GTH2 ,&flip JCN ,&else JMP
75
+	&flip .ball/vx LDZ2k #ffff EOR2 ( INC2 ) ROT STZ2
76
+	&else
77
+
78
+JMP2r
79
+
69 80
 @check-flip-vy ( y -- y )
70 81
 
71
-	DUP2 #0028 ADD2
72
-	.Screen/height DEI2 #0028 SUB2
73
-	GTH2 ,&flip JCN ,&else JMP
82
+	( bottom ) DUP2 .Screen/height DEI2 #0050 SUB2 GTH2 ,&flip JCN ,&else JMP
74 83
 	&flip .ball/vy LDZ2k #ffff EOR2 ( INC2 ) ROT STZ2
75 84
 	&else
76 85