-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgame_dxcp.asm
95 lines (84 loc) · 1.52 KB
/
game_dxcp.asm
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
;Airaki! - FSE 2014
;Released under the GPL V3, see LICENSE.TXT
dxcp_over:
;DXCP's over
ldh a,($FF)
and %11111101 ;Disable STAT
ldh ($FF),a
xor a
ld (FADER),a
ld (PLAYER_DIZZY),a
ldh ($43),a ;BG position
ldh ($42),a
ret
init_dxcp_beer:
ld a,DXCP_BEER
jr +
init_dxcp_attack:
ld a,DXCP_ATTACK
jr +
+:
ld (PLAYER_DIZZY),a
xor a
ld (WAVE_START),a
ld (FADER),a
ld de,RLI_dxcp
call load_RLI
ld a,%00001000 ;STAT Hblank
ldh ($41),a
ldh a,($FF)
or %00000010 ;Enable STAT
ldh ($FF),a
ret
dxcp_vbl:
ld a,(WAVE_START)
inc a
ld (WAVE_START),a
sla a
sla a
ld hl,(:tiles_gb*$4000)+lut_cos
add l
ld l,a
ld a,(hl)
swap a
and $F
sub 8 ;Esthetic
ldh ($43),a
sra a
ldh ($42),a
ld a,(FRAME)
and 3
ret nz
ld a,(PLAYER_DIZZY) ;DXCP_TIMER unit is in 4 frames
dec a
ld (PLAYER_DIZZY),a
or a
ret nz
;DXCP's over
jr dxcp_over ;call, ret
RLI_dxcp:
push af
ldh a,($44)
cp 143
jr nc,+
bit 0,a
jr nz,+
push hl
ld hl,WAVE_START
add (hl)
sla a
sla a
ld hl,(:tiles_gb*$4000)+lut_cos
add l
ld l,a
ld a,(hl)
swap a
and $F
sub 8 ;Esthetic
ldh ($43),a
sra a
ldh ($42),a
pop hl
+:
pop af
reti