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