blob: 581e98701342c337e8e816bdce76b1dfccefbdf9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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
; }
|