fixed 8bit writes to vmem, unaligned data buffers, and started on
[gba_blender] / src / sprites.h
1 /*
2 blender for the Gameboy Advance
3 Copyright (C) 2021  John Tsiombikas <nuclear@member.fsf.org>
4
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program.  If not, see <https://www.gnu.org/licenses/>.
17 */
18 #ifndef SPRITES_H_
19 #define SPRITES_H_
20
21 #include <stdint.h>
22
23 enum {
24         SPR_ROTSCL      = 0x0100,
25         SPR_DBLSZ       = 0x0200,
26         SPR_BLEND       = 0x0400,
27         SPR_OBJWIN      = 0x0800,
28         SPR_MOSAIC      = 0x1000,
29         SPR_256COL      = 0x2000,
30         SPR_HRECT       = 0x4000,
31         SPR_VRECT       = 0x8000,
32
33         SPR_HFLIP       = 0x100000,
34         SPR_VFLIP       = 0x200000,
35         SPR_SZ16        = 0x400000,
36         SPR_SZ32        = 0x800000,
37         SPR_SZ64        = 0xc00000
38 };
39 #define SPR_ROTSCL_PARAM(x)     ((unsigned int)(x) << 17)
40 #define SPR_PRIO(x)                     ((unsigned int)(x) & 3)
41
42 void init_sprites(void);
43 void set_sprite(uint16_t *oam, int idx, int spr, int x, int y, int pal, unsigned int flags);
44
45 #endif  /* SPRITES_H_ */