From bb03d1a3a4eb97ff4e0b7ca4b642a47828cfd778 Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Mon, 1 Feb 2016 02:28:49 -0500 Subject: playing with PMG for explosions --- explosion.s.flash | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 explosion.s.flash (limited to 'explosion.s.flash') diff --git a/explosion.s.flash b/explosion.s.flash new file mode 100644 index 0000000..581e987 --- /dev/null +++ b/explosion.s.flash @@ -0,0 +1,66 @@ +; 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 + +color1save = tmp1 +color2save = tmp2 + +; extern void explosion(void); +_explosion: +; { + ; save original colors (don't hardcode, they can be changed on the title screen) + lda COLOR1 + sta color1save + lda COLOR2 + sta color2save + + ; dark text + lda #0 + sta COLOR1 + + ldy #3 ; loop counter, counts 3 2 1 + +; { +@loop: + lda color2save + ora #$0c ; embrighten text background (without changing the hue) + sta COLOR2 + + ldx #0 ;\ + lda #$0a ; | jsleep(10); + jsr _jsleep ;/ + + lda color2save ; put text bg back like it was... + sta COLOR2 + + ldx #0 ; ...and jsleep(10) again + lda #$0a + jsr _jsleep + + dey + bne @loop ; we're done if Y==0 +; } + + lda color1save ; restore text color + sta COLOR1 + rts +; } -- cgit v1.2.3