-
Notifications
You must be signed in to change notification settings - Fork 2
/
PaletteCycling.s
70 lines (57 loc) · 1.48 KB
/
PaletteCycling.s
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
PaletteCycling:
; return if no items are active
xor a
ld hl, Item_0_Struct
add (hl)
ld hl, Item_1_Struct
add (hl)
ld hl, Item_2_Struct
add (hl)
ld hl, Item_3_Struct
add (hl)
ld hl, Item_4_Struct
add (hl)
ld hl, Item_5_Struct
add (hl)
ld hl, Item_6_Struct
add (hl) ; register A contains sum of status of all items
ret z
; JIFFY palette
; 00 0
; 01 1
; 10 2
; 11 1
; DONE: this can be optimized (each palette is being loaded 4 times in sequence)
ld a, (BIOS_JIFFY)
and 0000 1111 b
; srl a ; shift right A
; srl a ; shift right A
; dec a ; if (A == 0)
or a
jp z, .palette_0
; dec a ; if (A == 1)
cp 0000 0100 b
jp z, .palette_1
; dec a ; if (A == 2)
cp 0000 1000 b
jp z, .palette_2
; dec a ; if (A == 3)
cp 0000 1100 b
jp z, .palette_1
; else ret
ret
;jp .palette_0 ; else
; TODO: only one of the 16 colors change between these palettes.
; Probably it can be optimized
.palette_0:
ld hl, PaletteData_0
call LoadPalette
ret
.palette_1:
ld hl, PaletteData_1
call LoadPalette
ret
.palette_2:
ld hl, PaletteData_2
call LoadPalette
ret