... | ... |
@@ -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 |
|