gbdk-2020 | GameBoy Development Kit |
| download: https://git.y1.nz/archives/gbdk.tar.gz | |
| README | Files | Log | Refs | LICENSE |
gbdk-lib/libc/targets/sm83/metasprites_flip.s
1 .include "global.s"
2
3 .title "Metasprites"
4 .module Metasprites
5
6 .area _DATA
7
8 .globl ___current_metasprite, ___current_base_tile, ___current_base_prop, ___render_shadow_OAM
9
10 .area _CODE
11
12 ; uint8_t __move_metasprite(uint8_t id, uint16_t yx)
13 ; a: id
14 ; de: yx
15
16 ___move_metasprite_flipy::
17 ___move_metasprite_hflip::
18 cp #40
19 jr c, 0$
20 xor a
21 ret
22 0$:
23 push af
24 add a
25 add a
26 ld c, a
27
28 ld hl, #___current_metasprite
29 ld a, (hl+)
30 ld h, (hl)
31 ld l, a
32
33 ld a, (___render_shadow_OAM)
34 ld b, a
35 1$:
36 ld a, (hl+)
37 cp #0x80
38 jr z, 2$
39 cpl
40 inc a
41 add d
42 ld d, a
43 ld (bc), a
44 inc c
45
46 ld a, (hl+) ; dx
47 add e
48 ld e, a
49 ld (bc), a
50 inc c
51
52 ld a, (___current_base_tile)
53 add (hl) ; tile
54 inc hl
55 ld (bc), a
56 inc c
57
58 ld a, (___current_base_prop)
59 add (hl) ; props
60 inc hl
61 xor #0x40
62 ld (bc), a
63 inc c
64
65 ld a, c
66 cp #160
67 jr c, 1$
68 2$:
69 ld a, c
70 srl a
71 srl a
72 pop de
73 sub d
74
75 ret
76
77 ___move_metasprite_flipx::
78 ___move_metasprite_vflip::
79 cp #40
80 jr c, 0$
81 xor a
82 ret
83 0$:
84 push af
85 add a
86 add a
87 ld c, a
88
89 ld hl, #___current_metasprite
90 ld a, (hl+)
91 ld h, (hl)
92 ld l, a
93
94 ld a, (___render_shadow_OAM)
95 ld b, a
96 1$:
97 ld a, (hl+) ; dy
98 cp #0x80
99 jr z, 2$
100 add d
101 ld d, a
102 ld (bc), a
103 inc c
104
105 ld a, (hl+) ; dx
106 cpl
107 inc a
108 add e
109 ld e, a
110 ld (bc), a
111 inc c
112
113 ld a, (___current_base_tile)
114 add (hl) ; tile
115 inc hl
116 ld (bc), a
117 inc c
118
119 ld a, (___current_base_prop)
120 add (hl) ; props
121 inc hl
122 xor #0x20
123 ld (bc), a
124 inc c
125
126 ld a, c
127 cp #160
128 jr c, 1$
129 2$:
130 ld a, c
131 srl a
132 srl a
133 pop de
134 sub d
135
136 ret
137
138 ___move_metasprite_flipxy::
139 ___move_metasprite_hvflip::
140 cp #40
141 jr c, 0$
142 xor a
143 ret
144 0$:
145 push af
146 add a
147 add a
148 ld c, a
149
150 ld hl, #___current_metasprite
151 ld a, (hl+)
152 ld h, (hl)
153 ld l, a
154
155 ld a, (___render_shadow_OAM)
156 ld b, a
157 1$:
158 ld a, (hl+)
159 cp #0x80
160 jr z, 2$
161 cpl
162 inc a
163 add d
164 ld d, a
165 ld (bc), a
166 inc c
167
168 ld a, (hl+) ; dx
169 cpl
170 inc a
171 add e
172 ld e, a
173 ld (bc), a
174 inc c
175
176 ld a, (___current_base_tile)
177 add (hl) ; tile
178 inc hl
179 ld (bc), a
180 inc c
181
182 ld a, (___current_base_prop)
183 add (hl) ; props
184 inc hl
185 xor #0x60
186 ld (bc), a
187 inc c
188
189 ld a, c
190 cp #160
191 jr c, 1$
192 2$:
193 ld a, c
194 srl a
195 srl a
196 pop de
197 sub d
198
199 ret
This webpage is intended to be an accessible preview of this repository. To get a fuller picture, clone it and use the git CLI.