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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
|
UpdatePalsIfCGB:: ; bdf (0:0bdf)
ld a, [hCGB]
and a
ret z
UpdateCGBPals:: ; be3 (0:0be3)
ld a, [hCGBPalUpdate]
and a
ret z
ForceUpdateCGBPals::
ld hl, wBGPals
ld a, $80
ld [rBGPI], a
ld c, 8 / 2
.bgp
rept 2 palettes
ld a, [hli]
ld [rBGPD], a
endr
dec c
jr nz, .bgp
ld a, $80
ld [rOBPI], a
ld c, 8 / 2
.obp
rept 2 palettes
ld a, [hli]
ld [rOBPD], a
endr
dec c
jr nz, .obp
xor a
ld [hCGBPalUpdate], a
scf
ret
DmgToCgbBGPals:: ; c61 (0:0c61)
ld [rBGP], a
push af
ld a, [hCGB]
and a
jr z, .end
push hl
push de
push bc
ld hl, wBGPals
ld de, wTempBGPals
ld a, [rBGP]
ld b, a
ld c, $8
call CopyPals
ld a, $1
ld [hCGBPalUpdate], a
pop bc
pop de
pop hl
.end
pop af
ret
DmgToCgbObjPals:: ; c83 (0:0c83)
ld a, e
ld [rOBP0], a
ld a, d
ld [rOBP1], a
ld a, [hCGB]
and a
ret z
push hl
push de
push bc
ld hl, wOBPals
ld de, wTempOBPals
ld a, [rOBP0]
ld b, a
ld c, $8
call CopyPals
ld a, $1
ld [hCGBPalUpdate], a
pop bc
pop de
pop hl
ret
DmgToCgbObjPal0::
ld [rOBP0], a
push af
ld a, [hCGB]
and a
jr z, .end
push hl
push de
push bc
ld hl, wOBPals
ld de, wTempOBPals
ld a, [rOBP0]
ld b, a
ld c, $1
call CopyPals
ld a, $1
ld [hCGBPalUpdate], a
pop bc
pop de
pop hl
.end
pop af
ret
DmgToCgbObjPal1::
ld [rOBP1], a
push af
ld a, [hCGB]
and a
jr z, .end
push hl
push de
push bc
ld hl, wOBPals + 1 palettes
ld de, wTempOBPals + 1 palettes
ld a, [rOBP1]
ld b, a
ld c, $1
call CopyPals
ld a, $1
ld [hCGBPalUpdate], a
pop bc
pop de
pop hl
.end
pop af
ret
CopyPals:: ; cea (0:0cea)
push bc
ld c, $4
.loop
push de
push hl
ld a, b
and $3
add a
ld l, a
ld h, $0
add hl, de
ld e, [hl]
inc hl
ld d, [hl]
pop hl
ld [hl], e
inc hl
ld [hl], d
inc hl
srl b
srl b
pop de
dec c
jr nz, .loop
ld a, $8
add e
jr nc, .ok
inc d
.ok
ld e, a
pop bc
dec c
jr nz, CopyPals
ret
ClearVBank1::
ld a, [hCGB]
and a
ret z
ld a, $1
ld [rVBK], a
ld hl, $8000
ld bc, $2000
xor a
call ByteFill
ld a, $0
ld [rVBK], a
ret
Functiond2a::
ld hl, wTileMap
ld de, wAttrMap
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
.asm_d33
ld a, [hli]
cp $60
jr c, .asm_d3b
ld a, $7
ld [de], a
.asm_d3b
inc de
dec bc
ld a, b
or c
jr nz, .asm_d33
ret
ReloadSpritesNoPalettes::
ld a, [hCGB]
and a
ret z
ld hl, wBGPals
ld bc, $50
xor a
call ByteFill
ld a, $1
ld [hCGBPalUpdate], a
call DelayFrame
ret
FarCallSwapTextboxPalettes::
homecall SwapTextboxPalettes
ret
FarCallScrollBGMapPalettes::
homecall ScrollBGMapPalettes
ret
|