| 1 | 1 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,550 @@ |
| 1 |
+( darena.usm ) |
|
| 2 |
+( an open-ended game of rocks and sand ) |
|
| 3 |
+( contributed by and cc0 sejo 12021 ) |
|
| 4 |
+ |
|
| 5 |
+%DEBUG { .Console/byte DEO #0a .Console/char DEO }
|
|
| 6 |
+%DEBUG2 { .Console/short DEO2 #0a .Console/char DEO }
|
|
| 7 |
+ |
|
| 8 |
+( parameters ) |
|
| 9 |
+%nrocks { #1f }
|
|
| 10 |
+%nrocks-1 { #1e }
|
|
| 11 |
+%nrocks_mask { #1f }
|
|
| 12 |
+%minposx { #0f }
|
|
| 13 |
+%minposy { #0f }
|
|
| 14 |
+%maxposx { #f1 }
|
|
| 15 |
+%maxposy { #f1 }
|
|
| 16 |
+%anispeedmask_normal { #03 }
|
|
| 17 |
+%anispeedmask_slow { #07 }
|
|
| 18 |
+ |
|
| 19 |
+%c_color_normal { #33 }
|
|
| 20 |
+%c_color_flipx { #73 }
|
|
| 21 |
+%index_norock { #ff }
|
|
| 22 |
+ |
|
| 23 |
+( output macros ) |
|
| 24 |
+%out_screen_x { LDA #00 SWP .Screen/x DEO2 } ( ;addr )
|
|
| 25 |
+%out_screen_y { LDA #00 SWP .Screen/y DEO2 } ( ;addr )
|
|
| 26 |
+ |
|
| 27 |
+( helper macros ) |
|
| 28 |
+%get_bit_n { SFT #01 AND }
|
|
| 29 |
+%get_nibble_h { #04 SFT #0f AND }
|
|
| 30 |
+%get_nibble_l { #0f AND }
|
|
| 31 |
+ |
|
| 32 |
+%is_bit_n_set { get_bit_n #01 EQU }
|
|
| 33 |
+ |
|
| 34 |
+%set_animate { #01 ;c_state LDA ORA ;c_state STA }
|
|
| 35 |
+%rst_animate { #00 ;c_state STA }
|
|
| 36 |
+ |
|
| 37 |
+( devices ) |
|
| 38 |
+ |
|
| 39 |
+|00 @System [ &vector $2 &wst $1 &rst $1 &pad $4 &r $2 &g $2 &b $2 ] |
|
| 40 |
+|10 @Console [ &pad $8 &char $1 &byte $1 &short $2 &string $2 ] |
|
| 41 |
+|20 @Screen [ &vector $2 &width $2 &height $2 &pad $2 &x $2 &y $2 &addr $2 &color $1 ] |
|
| 42 |
+|80 @Controller [ &vector $2 &button $1 &key $1 ] |
|
| 43 |
+ |
|
| 44 |
+( variables ) |
|
| 45 |
+ |
|
| 46 |
+|0000 |
|
| 47 |
+ |
|
| 48 |
+@c_pos [ &x $1 &y $1 ] ( character position ) |
|
| 49 |
+@c_speed [ &x $1 &y $1 ] ( character speed ) |
|
| 50 |
+@c_color [ $1 ] ( character color ) |
|
| 51 |
+@c_sprite [ $2 ] ( character sprite addr ) |
|
| 52 |
+@c_state [ $1 ] ( high_nibble: animation pointer, bit0: is_animated ) |
|
| 53 |
+ |
|
| 54 |
+@f_count [ $1 ] ( frame counter ) |
|
| 55 |
+@ani_speedmask [ $1 ] ( animation speed mask ) |
|
| 56 |
+ |
|
| 57 |
+@r_speed_x [ $f ] |
|
| 58 |
+@r_speed_y [ $f ] |
|
| 59 |
+ |
|
| 60 |
+@tog [ &x $1 &y $1 &state $1 ] ( toggle station state ) |
|
| 61 |
+ |
|
| 62 |
+( program ) |
|
| 63 |
+ |
|
| 64 |
+|0100 @reset ( -> ) |
|
| 65 |
+ #f396 .System/r DEO2 |
|
| 66 |
+ #e263 .System/g DEO2 |
|
| 67 |
+ #9030 .System/b DEO2 |
|
| 68 |
+ |
|
| 69 |
+ ;on_frame .Screen/vector DEO2 |
|
| 70 |
+ |
|
| 71 |
+ ( init character ) |
|
| 72 |
+ #50 ;c_pos/x STA |
|
| 73 |
+ #10 ;c_pos/y STA |
|
| 74 |
+ #00 ;c_speed/x STA |
|
| 75 |
+ #00 ;c_speed/y STA |
|
| 76 |
+ c_color_normal ;c_color STA |
|
| 77 |
+ ;s_monitx_stepfront0 ;c_sprite STA2 |
|
| 78 |
+ rst_animate |
|
| 79 |
+ |
|
| 80 |
+ anispeedmask_normal ;ani_speedmask STA |
|
| 81 |
+ |
|
| 82 |
+ ( init toggler ) |
|
| 83 |
+ #27 ;tog/x STA |
|
| 84 |
+ #27 ;tog/y STA |
|
| 85 |
+ #00 ;tog/state STA |
|
| 86 |
+ |
|
| 87 |
+ |
|
| 88 |
+ ( init background ) |
|
| 89 |
+ ;init_bg JSR2 |
|
| 90 |
+BRK |
|
| 91 |
+ |
|
| 92 |
+ |
|
| 93 |
+@on_frame ( -> ) |
|
| 94 |
+ ;f_count LDA #01 ADD DUP ;f_count STA ( increase frame counter ) |
|
| 95 |
+ ;ani_speedmask LDA ( mask with animation speed mask ) |
|
| 96 |
+ AND #00 EQU ,update_frame JNZ ( jump to update if it's time ) |
|
| 97 |
+BRK |
|
| 98 |
+ |
|
| 99 |
+@update_frame |
|
| 100 |
+ ( check keyboard ) |
|
| 101 |
+ ;check_keys JSR2 |
|
| 102 |
+ |
|
| 103 |
+ ( animate character sprite ) |
|
| 104 |
+ ;animate_c JSR2 |
|
| 105 |
+ |
|
| 106 |
+ ( clear sprites ) |
|
| 107 |
+ ;clear JSR2 |
|
| 108 |
+ |
|
| 109 |
+ ( update character vars ) |
|
| 110 |
+ ;update_c/run JSR2 |
|
| 111 |
+ |
|
| 112 |
+ ( update rocks + stand ) |
|
| 113 |
+ ;update_r/run JSR2 |
|
| 114 |
+ |
|
| 115 |
+ ( draw ) |
|
| 116 |
+ ;draw JSR2 |
|
| 117 |
+ |
|
| 118 |
+BRK |
|
| 119 |
+ |
|
| 120 |
+@clear |
|
| 121 |
+ ( clear rocks ) |
|
| 122 |
+ ;s_clear .Screen/addr DEO2 |
|
| 123 |
+ |
|
| 124 |
+ nrocks #00 |
|
| 125 |
+ &rocks_loop |
|
| 126 |
+ DUP ( get rocks_x[i] ) |
|
| 127 |
+ ;rocks_x ROT #00 SWP ADD2 out_screen_x |
|
| 128 |
+ |
|
| 129 |
+ DUP ( get rocks_y[i] ) |
|
| 130 |
+ ;rocks_y ROT #00 SWP ADD2 out_screen_y |
|
| 131 |
+ |
|
| 132 |
+ #30 .Screen/color DEO |
|
| 133 |
+ |
|
| 134 |
+ #01 ADD |
|
| 135 |
+ DUP2 |
|
| 136 |
+ NEQ ,&rocks_loop JNZ |
|
| 137 |
+ POP2 |
|
| 138 |
+ |
|
| 139 |
+ ( clear character ) |
|
| 140 |
+ ;clear_c JSR2 |
|
| 141 |
+JMP2r |
|
| 142 |
+ |
|
| 143 |
+@draw |
|
| 144 |
+ ( draw toggler ) |
|
| 145 |
+ |
|
| 146 |
+ ;tog/x out_screen_x |
|
| 147 |
+ ;tog/x out_screen_y |
|
| 148 |
+ ;s_stand .Screen/addr DEO2 |
|
| 149 |
+ #23 .Screen/color DEO |
|
| 150 |
+ |
|
| 151 |
+ ( draw rocks ) |
|
| 152 |
+ ;s_bola .Screen/addr DEO2 |
|
| 153 |
+ |
|
| 154 |
+ nrocks #00 |
|
| 155 |
+ |
|
| 156 |
+ &rocks_loop |
|
| 157 |
+ DUP ( get rocks_x[i] ) |
|
| 158 |
+ ;rocks_x ROT #00 SWP ADD2 out_screen_x |
|
| 159 |
+ |
|
| 160 |
+ DUP ( get rocks_y[i] ) |
|
| 161 |
+ ;rocks_y ROT #00 SWP ADD2 out_screen_y |
|
| 162 |
+ |
|
| 163 |
+ ( DUP ( get color bitwise ) ) |
|
| 164 |
+ ( ;r_color LDA SWP get_bit_n #31 ADD .Screen/color DEO ) |
|
| 165 |
+ |
|
| 166 |
+ DUP |
|
| 167 |
+ ;r_color ROT #00 SWP ADD2 LDA #31 ADD .Screen/color DEO |
|
| 168 |
+ |
|
| 169 |
+ #01 ADD |
|
| 170 |
+ |
|
| 171 |
+ DUP2 |
|
| 172 |
+ NEQ ,&rocks_loop JNZ |
|
| 173 |
+ POP2 |
|
| 174 |
+ |
|
| 175 |
+ ( draw character ) |
|
| 176 |
+ ;draw_c JSR2 |
|
| 177 |
+JMP2r |
|
| 178 |
+ |
|
| 179 |
+@check_keys |
|
| 180 |
+ #00 ;c_speed/x STA |
|
| 181 |
+ #00 ;c_speed/y STA |
|
| 182 |
+ |
|
| 183 |
+ .Controller/button DEI #07 is_bit_n_set ,&der JNZ |
|
| 184 |
+ .Controller/button DEI #06 is_bit_n_set ,&izq JNZ |
|
| 185 |
+ .Controller/button DEI #05 is_bit_n_set ,&aba JNZ |
|
| 186 |
+ .Controller/button DEI #04 is_bit_n_set ,&arr JNZ |
|
| 187 |
+ |
|
| 188 |
+ rst_animate |
|
| 189 |
+ |
|
| 190 |
+ JMP2r |
|
| 191 |
+ |
|
| 192 |
+ &der |
|
| 193 |
+ #01 ;c_speed/x STA |
|
| 194 |
+ set_animate |
|
| 195 |
+ c_color_normal ;c_color STA |
|
| 196 |
+ ;s_monitx_stepside0 ;c_sprite STA2 |
|
| 197 |
+ JMP2r |
|
| 198 |
+ |
|
| 199 |
+ &izq |
|
| 200 |
+ #ff ;c_speed/x STA |
|
| 201 |
+ set_animate |
|
| 202 |
+ c_color_flipx ;c_color STA |
|
| 203 |
+ ;s_monitx_stepside0 ;c_sprite STA2 |
|
| 204 |
+ JMP2r |
|
| 205 |
+ |
|
| 206 |
+ &aba |
|
| 207 |
+ #01 ;c_speed/y STA |
|
| 208 |
+ set_animate |
|
| 209 |
+ c_color_normal ;c_color STA |
|
| 210 |
+ ;s_monitx_stepfront0 ;c_sprite STA2 |
|
| 211 |
+ JMP2r |
|
| 212 |
+ |
|
| 213 |
+ &arr |
|
| 214 |
+ #ff ;c_speed/y STA |
|
| 215 |
+ set_animate |
|
| 216 |
+ c_color_normal ;c_color STA |
|
| 217 |
+ ;s_monitx_stepback0 ;c_sprite STA2 |
|
| 218 |
+ JMP2r |
|
| 219 |
+ |
|
| 220 |
+ &end |
|
| 221 |
+JMP2r |
|
| 222 |
+ |
|
| 223 |
+( sub-routines ) |
|
| 224 |
+ |
|
| 225 |
+( in: sourcex, source y, index, rangex, rangey ) |
|
| 226 |
+( puts in the stack the index of rock collisioned with ) |
|
| 227 |
+@collision_rocks |
|
| 228 |
+ &range_y $1 |
|
| 229 |
+ &range_x $1 |
|
| 230 |
+ &src_i $1 |
|
| 231 |
+ &src_x $1 |
|
| 232 |
+ &src_y $1 |
|
| 233 |
+ |
|
| 234 |
+ &rock_x $1 |
|
| 235 |
+ &rock_y $1 |
|
| 236 |
+ |
|
| 237 |
+ &run |
|
| 238 |
+ ,&range_y STR |
|
| 239 |
+ ,&range_x STR |
|
| 240 |
+ ,&src_i STR |
|
| 241 |
+ ,&src_y STR |
|
| 242 |
+ ,&src_x STR |
|
| 243 |
+ |
|
| 244 |
+ ( check collision with rocks ) |
|
| 245 |
+ ( nrocks #00 ) |
|
| 246 |
+ ,&src_i LDR nrocks_mask AND DUP #01 ADD nrocks_mask AND |
|
| 247 |
+ |
|
| 248 |
+ &rocks_loop |
|
| 249 |
+ DUP ( get rocks_x[i] ) |
|
| 250 |
+ ;rocks_x ROT #00 SWP ADD2 LDA ,&rock_x STR |
|
| 251 |
+ |
|
| 252 |
+ DUP ( get rocks_y[i] ) |
|
| 253 |
+ ;rocks_y ROT #00 SWP ADD2 LDA ,&rock_y STR |
|
| 254 |
+ |
|
| 255 |
+ ,&src_x LDR ,&rock_x LDR ,&range_x LDR SUB GTH ( if sx > rx - 8 ) |
|
| 256 |
+ ,&src_x LDR ,&rock_x LDR ,&range_x LDR ADD LTH ( if sx < rx + 8 ) |
|
| 257 |
+ ,&src_y LDR ,&rock_y LDR ,&range_y LDR SUB GTH ( if sy > ry - 8 ) |
|
| 258 |
+ ,&src_y LDR ,&rock_y LDR ,&range_y LDR ADD LTH ( if sy < ry + 8 ) |
|
| 259 |
+ ADD ADD ADD #04 EQU ,&found JNZ |
|
| 260 |
+ |
|
| 261 |
+ #01 ADD nrocks_mask AND |
|
| 262 |
+ DUP2 |
|
| 263 |
+ NEQ ,&rocks_loop JNZ |
|
| 264 |
+ POP2 |
|
| 265 |
+ #ff |
|
| 266 |
+ JMP2r |
|
| 267 |
+ &found |
|
| 268 |
+ SWP POP ( remove loop limit ) |
|
| 269 |
+ DUP ;&src_i LDA NEQ ,&end JNZ ( check if result is the same as index ) |
|
| 270 |
+ POP #ff |
|
| 271 |
+ JMP2r |
|
| 272 |
+ |
|
| 273 |
+ &end |
|
| 274 |
+ |
|
| 275 |
+JMP2r |
|
| 276 |
+ |
|
| 277 |
+@update_c ( update character position ) |
|
| 278 |
+ &new_x $1 |
|
| 279 |
+ &new_y $1 |
|
| 280 |
+ |
|
| 281 |
+ &rock_i $1 |
|
| 282 |
+ &rock_x $1 |
|
| 283 |
+ &rock_y $1 |
|
| 284 |
+ |
|
| 285 |
+ |
|
| 286 |
+ &run |
|
| 287 |
+ ;c_speed/x LDA ;c_pos/x LDA ADD |
|
| 288 |
+ ,&new_x STR |
|
| 289 |
+ ;c_speed/y LDA ;c_pos/y LDA ADD |
|
| 290 |
+ ,&new_y STR |
|
| 291 |
+ |
|
| 292 |
+ anispeedmask_normal ;ani_speedmask STA |
|
| 293 |
+ |
|
| 294 |
+ &check_x |
|
| 295 |
+ ( check collision with borders ) |
|
| 296 |
+ ,&new_x LDR minposx EQU ;&noup_x JNZ2 |
|
| 297 |
+ ,&new_x LDR maxposx EQU ;&noup_x JNZ2 |
|
| 298 |
+ |
|
| 299 |
+ |
|
| 300 |
+ ( check collision with rocks ) |
|
| 301 |
+ ,&new_x LDR ,&new_y LDR index_norock #09 #06 |
|
| 302 |
+ ;collision_rocks/run JSR2 |
|
| 303 |
+ |
|
| 304 |
+ ( if it is colliding with rock, check further ) |
|
| 305 |
+ DUP #ff NEQ ,&check_x_collision JNZ |
|
| 306 |
+ POP |
|
| 307 |
+ ,&update_x JMP |
|
| 308 |
+ |
|
| 309 |
+ &check_x_collision |
|
| 310 |
+ ( DUP DEBUG ) |
|
| 311 |
+ ( slow down and save rock index ) |
|
| 312 |
+ anispeedmask_slow ;ani_speedmask STA |
|
| 313 |
+ ,&rock_i STR |
|
| 314 |
+ |
|
| 315 |
+ ( check if rock collides with others ) |
|
| 316 |
+ ;rocks_x #00 ,&rock_i LDR ADD2 LDA ,&rock_x STR |
|
| 317 |
+ ;rocks_y #00 ,&rock_i LDR ADD2 LDA ,&rock_y STR |
|
| 318 |
+ |
|
| 319 |
+ ,&rock_x LDR ,&rock_y LDR ,&rock_i LDR #09 #06 |
|
| 320 |
+ ;collision_rocks/run JSR2 |
|
| 321 |
+ |
|
| 322 |
+ ( DUP DEBUG ) |
|
| 323 |
+ |
|
| 324 |
+ ( if it is colliding, then skip adding x ) |
|
| 325 |
+ DUP #ff NEQ ,&check_y JNZ |
|
| 326 |
+ POP |
|
| 327 |
+ |
|
| 328 |
+ |
|
| 329 |
+ ( if not, check for borders ) |
|
| 330 |
+ ;&rock_x LDA minposx EQU ;&noup_x JNZ2 |
|
| 331 |
+ ;&rock_x LDA maxposx EQU ;&noup_x JNZ2 |
|
| 332 |
+ |
|
| 333 |
+ ( move rock with same speed as c ) |
|
| 334 |
+ ;&rock_x LDA ;c_speed/x LDA ADD |
|
| 335 |
+ ;rocks_x #00 ;&rock_i LDA ADD2 |
|
| 336 |
+ STA |
|
| 337 |
+ |
|
| 338 |
+ |
|
| 339 |
+ &update_x |
|
| 340 |
+ ;&new_x LDA ;c_pos/x STA |
|
| 341 |
+ |
|
| 342 |
+ ,&check_y JMP |
|
| 343 |
+ |
|
| 344 |
+ &noup_x |
|
| 345 |
+ |
|
| 346 |
+ &check_y |
|
| 347 |
+ ( check collision with borders ) |
|
| 348 |
+ ;&new_y LDA minposy EQU ;&noup_y JNZ2 |
|
| 349 |
+ ;&new_y LDA maxposy EQU ;&noup_y JNZ2 |
|
| 350 |
+ |
|
| 351 |
+ ( check collision with rocks ) |
|
| 352 |
+ ;&new_x LDA ;&new_y LDA index_norock #06 #09 |
|
| 353 |
+ ;collision_rocks/run JSR2 |
|
| 354 |
+ |
|
| 355 |
+ ( if it is colliding with rock, check further ) |
|
| 356 |
+ DUP #ff NEQ ,&check_y_collision JNZ |
|
| 357 |
+ POP |
|
| 358 |
+ ,&update_y JMP |
|
| 359 |
+ |
|
| 360 |
+ &check_y_collision |
|
| 361 |
+ ( DUP DEBUG ) |
|
| 362 |
+ anispeedmask_slow ;ani_speedmask STA |
|
| 363 |
+ ;&rock_i STA |
|
| 364 |
+ |
|
| 365 |
+ ( check if rock collides with others ) |
|
| 366 |
+ ;rocks_x #00 ;&rock_i LDA ADD2 LDA ;&rock_x STA |
|
| 367 |
+ ;rocks_y #00 ;&rock_i LDA ADD2 LDA ;&rock_y STA |
|
| 368 |
+ |
|
| 369 |
+ ;&rock_x LDA ;&rock_y LDA ;&rock_i LDA #06 #09 |
|
| 370 |
+ ;collision_rocks/run JSR2 |
|
| 371 |
+ |
|
| 372 |
+ ( DUP DEBUG ) |
|
| 373 |
+ |
|
| 374 |
+ ( if it is colliding, then skip adding y ) |
|
| 375 |
+ DUP #ff NEQ ,&noup_y JNZ |
|
| 376 |
+ POP |
|
| 377 |
+ |
|
| 378 |
+ ( if not, check for borders ) |
|
| 379 |
+ ;&rock_y LDA minposx EQU ;&noup_y JNZ2 |
|
| 380 |
+ ;&rock_y LDA maxposx EQU ;&noup_y JNZ2 |
|
| 381 |
+ |
|
| 382 |
+ ( if not colliding, then move rock with same speed as c ) |
|
| 383 |
+ ;&rock_y LDA ;c_speed/y LDA ADD |
|
| 384 |
+ ;rocks_y #00 ;&rock_i LDA ADD2 |
|
| 385 |
+ STA |
|
| 386 |
+ |
|
| 387 |
+ |
|
| 388 |
+ &update_y |
|
| 389 |
+ ;&new_y LDA ;c_pos/y STA |
|
| 390 |
+ JMP2r |
|
| 391 |
+ |
|
| 392 |
+ &noup_y |
|
| 393 |
+JMP2r |
|
| 394 |
+ |
|
| 395 |
+@update_r |
|
| 396 |
+ &rock_i $1 |
|
| 397 |
+ |
|
| 398 |
+ &run |
|
| 399 |
+ |
|
| 400 |
+ ( check collision with rocks ) |
|
| 401 |
+ ;tog/x LDA ;tog/y LDA index_norock #02 #02 |
|
| 402 |
+ ;collision_rocks/run JSR2 |
|
| 403 |
+ |
|
| 404 |
+ ( if it is colliding with rock, check if it needs to change state ) |
|
| 405 |
+ DUP #ff NEQ ,&change_state JNZ |
|
| 406 |
+ |
|
| 407 |
+ ( DUP DEBUG ) |
|
| 408 |
+ |
|
| 409 |
+ ( if there's no collision, reset toggler ) |
|
| 410 |
+ POP |
|
| 411 |
+ #00 ;tog/state STA |
|
| 412 |
+ JMP2r |
|
| 413 |
+ |
|
| 414 |
+ &change_state |
|
| 415 |
+ ( DUP DEBUG ) |
|
| 416 |
+ ,&rock_i STR |
|
| 417 |
+ ;tog/state LDA ,&done JNZ ( don't toggle if state is active ) |
|
| 418 |
+ |
|
| 419 |
+ ;r_color #00 ,&rock_i LDR ADD2 DUP2 STH2 |
|
| 420 |
+ LDA #01 EOR STH2r STA |
|
| 421 |
+ #01 ;tog/state STA |
|
| 422 |
+ &done |
|
| 423 |
+ |
|
| 424 |
+JMP2r |
|
| 425 |
+ |
|
| 426 |
+@animate_c |
|
| 427 |
+ ( is bit0 -animate- on? ) |
|
| 428 |
+ ;c_state LDA DUP #00 get_bit_n #01 NEQ ,&s_no_animate JNZ |
|
| 429 |
+ |
|
| 430 |
+ ( increment and save animation pointer ) |
|
| 431 |
+ &s_animate |
|
| 432 |
+ DUP |
|
| 433 |
+ get_nibble_h #01 ADD #03 AND #40 SFT |
|
| 434 |
+ SWP get_nibble_l ORA |
|
| 435 |
+ ;c_state STA |
|
| 436 |
+ JMP2r |
|
| 437 |
+ |
|
| 438 |
+ &s_no_animate |
|
| 439 |
+ get_nibble_h #0f AND ;c_state STA |
|
| 440 |
+JMP2r |
|
| 441 |
+ |
|
| 442 |
+@draw_c ( draw character ) |
|
| 443 |
+ #00 ;c_state LDA get_nibble_h #08 MUL |
|
| 444 |
+ ;c_sprite LDA2 ADD2 .Screen/addr DEO2 |
|
| 445 |
+ ;c_pos/x out_screen_x |
|
| 446 |
+ ;c_pos/y out_screen_y |
|
| 447 |
+ ;c_color LDA .Screen/color DEO |
|
| 448 |
+JMP2r |
|
| 449 |
+ |
|
| 450 |
+@clear_c ( clear character ) |
|
| 451 |
+ ;s_clear .Screen/addr DEO2 |
|
| 452 |
+ ;c_pos/x out_screen_x |
|
| 453 |
+ ;c_pos/y out_screen_y |
|
| 454 |
+ #30 .Screen/color DEO |
|
| 455 |
+JMP2r |
|
| 456 |
+ |
|
| 457 |
+@init_bg |
|
| 458 |
+ ( init bg ) |
|
| 459 |
+ ;s_border .Screen/addr DEO2 |
|
| 460 |
+ |
|
| 461 |
+ .Screen/height DEI2 #0000 STH2 |
|
| 462 |
+ &vertical0loop |
|
| 463 |
+ DUP2 |
|
| 464 |
+ STH2r |
|
| 465 |
+ DUP2 .Screen/y DEO2 |
|
| 466 |
+ |
|
| 467 |
+ |
|
| 468 |
+ .Screen/width DEI2 #0000 STH2 |
|
| 469 |
+ &horizontal0loop |
|
| 470 |
+ DUP2 |
|
| 471 |
+ STH2r |
|
| 472 |
+ DUP2 .Screen/x DEO2 |
|
| 473 |
+ |
|
| 474 |
+ #23 .Screen/color DEO |
|
| 475 |
+ |
|
| 476 |
+ #0008 ADD2 DUP2 STH2 |
|
| 477 |
+ GTH2 ,&horizontal0loop JNZ |
|
| 478 |
+ |
|
| 479 |
+ STH2r POP2 POP2 |
|
| 480 |
+ |
|
| 481 |
+ |
|
| 482 |
+ #0008 ADD2 DUP2 STH2 |
|
| 483 |
+ GTH2 ,&vertical0loop JNZ |
|
| 484 |
+ STH2r |
|
| 485 |
+ POP2 POP2 |
|
| 486 |
+ |
|
| 487 |
+ ( arena ) |
|
| 488 |
+ |
|
| 489 |
+ ;s_clear .Screen/addr DEO2 |
|
| 490 |
+ |
|
| 491 |
+ #00 maxposy #00 minposy STH2 |
|
| 492 |
+ &vertical0loop_clear |
|
| 493 |
+ DUP2 |
|
| 494 |
+ STH2r |
|
| 495 |
+ DUP2 .Screen/y DEO2 |
|
| 496 |
+ |
|
| 497 |
+ |
|
| 498 |
+ #00 maxposx #00 minposx STH2 |
|
| 499 |
+ &horizontal0loop_clear |
|
| 500 |
+ DUP2 |
|
| 501 |
+ STH2r |
|
| 502 |
+ DUP2 .Screen/x DEO2 |
|
| 503 |
+ |
|
| 504 |
+ #20 .Screen/color DEO |
|
| 505 |
+ |
|
| 506 |
+ #0008 ADD2 DUP2 STH2 |
|
| 507 |
+ GTH2 ,&horizontal0loop_clear JNZ |
|
| 508 |
+ |
|
| 509 |
+ STH2r POP2 POP2 |
|
| 510 |
+ |
|
| 511 |
+ #0008 ADD2 DUP2 STH2 GTH2 ,&vertical0loop_clear JNZ |
|
| 512 |
+ STH2r |
|
| 513 |
+ POP2 POP2 |
|
| 514 |
+ |
|
| 515 |
+JMP2r |
|
| 516 |
+ |
|
| 517 |
+( rocks ) |
|
| 518 |
+@rocks_x [ 25 30 42 50 67 90 98 e8 20 43 43 57 5a 7f bc a5 |
|
| 519 |
+ e5 dd a2 20 b7 9b 38 e8 33 43 63 b7 aa cf bc ] |
|
| 520 |
+@rocks_y [ 60 48 34 56 23 65 65 65 ba e9 24 22 72 91 22 c5 |
|
| 521 |
+ 25 30 42 50 67 90 98 e8 20 43 43 57 5a 7f bc ] |
|
| 522 |
+@r_color [ 00 01 01 00 00 00 01 01 01 01 00 00 01 01 00 00 |
|
| 523 |
+ 01 00 01 00 00 01 00 01 01 01 01 01 00 00 00 ] |
|
| 524 |
+ |
|
| 525 |
+( sprites ) |
|
| 526 |
+ |
|
| 527 |
+@s_clear [ 0000 0000 0000 0000 ] |
|
| 528 |
+@s_border [ 3288 7e83 780d e013 ] |
|
| 529 |
+@s_bola [ 3c4e 9ffd f962 3c00 ] |
|
| 530 |
+@s_stand [ 0000 0000 0024 7eff ] |
|
| 531 |
+@s_stand_original [ 0000 0000 0000 3c7e ] |
|
| 532 |
+ |
|
| 533 |
+@s_monitx [ 3c7e 5a7f 1b3c 5a18 ] |
|
| 534 |
+@s_monitx_back [ 3c7e 7efe d83c 5a18 ] |
|
| 535 |
+ |
|
| 536 |
+@s_monitx_stepfront0 [ 3c7e 5a7f 1b3c 5a18 ] |
|
| 537 |
+@s_monitx_stepfront1 [ 3c7e 5a7f 1b3c 5a10 ] |
|
| 538 |
+@s_monitx_stepfront2 [ 3c7e 5a7f 1b3c 5a18 ] |
|
| 539 |
+@s_monitx_stepfront3 [ 3c7e 5a7f 1b3c 5a08 ] |
|
| 540 |
+ |
|
| 541 |
+@s_monitx_stepback0 [ 3c7e 7efe d83c 5a18 ] |
|
| 542 |
+@s_monitx_stepback1 [ 3c7e 7efe d83c 5a10 ] |
|
| 543 |
+@s_monitx_stepback2 [ 3c7e 7efe d83c 5a18 ] |
|
| 544 |
+@s_monitx_stepback3 [ 3c7e 7efe d83c 5a08 ] |
|
| 545 |
+ |
|
| 546 |
+@s_monitx_stepside0 [ 1c3c 7afc d81c 1818 ] |
|
| 547 |
+@s_monitx_stepside1 [ 1c3c 7afc d81c 1828 ] |
|
| 548 |
+@s_monitx_stepside2 [ 1c3c 7afc d81c 3810 ] |
|
| 549 |
+@s_monitx_stepside3 [ 1c3c 7afc d81c 1814 ] |
|
| 550 |
+ |