; explosion seen when we're hit by enemy fire. ; currently just flashes the screen. the apple version is ; kinda funky-looking, best way I can describe it is that it ; looks like TV static. would be hard to imitate that on the ; atari. maybe there should be screen-shaking going on? ; original code was in C, and looked like: ;; for(i = 0; i < 3; i++) { ;; unsigned char color = PEEK(710) & 0xf0; ;; unsigned char textcolor = PEEK(709); ;; POKE(709,0); ;; POKE(710, color | 0x0c); ;; jsleep(10); ;; POKE(710, color & 0xf0); ;; jsleep(10); ;; POKE(709,textcolor); ;; } .export _explosion .include "atari.inc" .importzp tmp1, tmp2 .import _jsleep iloop_count = tmp1 ; extern void explosion(void); _explosion: ; { ldy #3 ; loop counter, counts 3 2 1 ; { @loop: lda #$03 sta iloop_count @iloop: ldx #0 ; jsleep(2) lda #$02 jsr _jsleep ldx #2 @b: lda VCOUNT cmp #(4+8)*4 bne @b @d: sta WSYNC lda RANDOM lsr ; avoid reading I/O registers, I think it can lock up SDX sta CHBASE lda VCOUNT cmp #(4+23)*4 bne @d lda #$e0 sta CHBASE lda RTCLOK+2 @c: cmp RTCLOK+2 beq @c dex bne @b dec iloop_count bne @iloop ldx #0 ; jsleep(10) lda #$0a jsr _jsleep dey bne @loop ; we're done if Y==0 ; } rts ; }