gbdk-2020 | GameBoy Development Kit |
| download: https://git.y1.nz/archives/gbdk.tar.gz | |
| README | Files | Log | Refs | LICENSE |
gbdk-lib/libc/targets/sm83/cgb_palettes.s
1 .include "global.s"
2
3 .title "CGB support"
4 .module CGB
5
6 .area _CODE
7
8 ; void set_sprite_palette(uint8_t first_palette, uint8_t nb_palettes, const palette_color_t *rgb_data) PRESERVES_REGS(b, c);
9 _set_sprite_palette:: ; Non-banked
10 ld d, c ; save C
11 ld c, #rOCPS
12 jr .set_palette
13
14 ; void set_bkg_palette(uint8_t first_palette, uint8_t nb_palettes, const palette_color_t *rgb_data) PRESERVES_REGS(b, c);
15 _set_bkg_palette:: ; Non-banked
16 ld d, c ; save C
17 ld c, #rBCPS
18
19 ; first_palette is in A
20 ; nb_palettes is in E
21 ; rgb_data is on the stack
22 .set_palette::
23 add a
24 add a
25 add a
26 or #OCPSF_AUTOINC ; Set auto-increment
27 ldh (c), a
28 inc c
29
30 ; E = nb_palettes * 8
31 ld a, e
32 add a
33 add a
34 add a
35 ld e, a
36
37 ; hl = rgb_data
38 ldhl sp, #2
39 ld a, (hl+)
40 ld h, (hl)
41 ld l, a
42 0$:
43 WAIT_STAT
44
45 ld a, (hl+)
46 ldh (c), a
47 dec e
48 jr nz, 0$
49
50 ld c, d ; restore C
51 pop hl ; get return address
52 pop af ; dummy pop
53 jp (hl)
54
55 ; void set_sprite_palette_entry(uint8_t palette, uint8_t entry, uint16_t rgb_data) PRESERVES_REGS(b, c);
56 _set_sprite_palette_entry::
57 ld d, c ; save C
58 ld c, #rOCPS
59 jr .set_palette_entry
60
61 ; void set_bkg_palette_entry(uint8_t palette, uint8_t entry, uint16_t rgb_data) PRESERVES_REGS(b, c);
62 _set_bkg_palette_entry::
63 ld d, c ; save C
64 ld c, #rBCPS
65
66 ; palette is in A
67 ; entry is in E
68 ; rgb_data is on the stack
69 .set_palette_entry::
70 ; A = palette * 8 + entry * 2
71 add a
72 add a
73 add e
74 add a
75 or #OCPSF_AUTOINC ; Set auto-increment
76 ldh (c), a
77 inc c
78
79 ldhl sp, #2
80 ld a,(hl+) ; rgb_data
81 ld e,(hl)
82
83 WAIT_STAT_HL
84
85 ldh (c), a
86 ld a, e
87 ldh (c), a
88
89 ld c, d ; restore C
90 pop hl ; get return address
91 pop af ; dummy pop
92 jp (hl)
This webpage is intended to be an accessible preview of this repository. To get a fuller picture, clone it and use the git CLI.