diff options
author | Bad Diode <bd@badd10de.dev> | 2021-04-26 20:58:00 +0200 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2021-04-26 20:58:00 +0200 |
commit | a0efde919bedfbb427d2e2c5ae34e06489930b0c (patch) | |
tree | fc51fd1fa436a7a9886b5074a3903fc2aeb227e6 /src/sprites.h | |
parent | 4e51d019fd0c1d21aa8e965fd68dbacec39a2576 (diff) | |
download | gba-experiments-a0efde919bedfbb427d2e2c5ae34e06489930b0c.tar.gz gba-experiments-a0efde919bedfbb427d2e2c5ae34e06489930b0c.zip |
Test text drawing on tiled backgrounds
Diffstat (limited to 'src/sprites.h')
-rw-r--r-- | src/sprites.h | 22 |
1 files changed, 1 insertions, 21 deletions
diff --git a/src/sprites.h b/src/sprites.h index e249e95..88ca787 100644 --- a/src/sprites.h +++ b/src/sprites.h | |||
@@ -3,19 +3,6 @@ | |||
3 | 3 | ||
4 | #include "common.h" | 4 | #include "common.h" |
5 | 5 | ||
6 | u32 | ||
7 | unpack_1bb(u8 hex) { | ||
8 | const u32 conversion_u32[16] = { | ||
9 | 0x00000000, 0x00000001, 0x00000010, 0x00000011, | ||
10 | 0x00000100, 0x00000101, 0x00000110, 0x00000111, | ||
11 | 0x00001000, 0x00001001, 0x00001010, 0x00001011, | ||
12 | 0x00001100, 0x00001101, 0x00001110, 0x00001111, | ||
13 | }; | ||
14 | u8 low = hex & 0xF; | ||
15 | u8 high = (hex >> 4) & 0xF; | ||
16 | return (conversion_u32[high] << 16) | conversion_u32[low]; | ||
17 | } | ||
18 | |||
19 | typedef struct Sprite { | 6 | typedef struct Sprite { |
20 | // A unique sprite identifier. | 7 | // A unique sprite identifier. |
21 | size_t id; | 8 | size_t id; |
@@ -54,14 +41,7 @@ load_sprite_data(u32 *sprite_data, size_t n_tiles, size_t n_frames) { | |||
54 | 41 | ||
55 | size_t | 42 | size_t |
56 | load_packed_sprite_data(u32 *sprite_data, size_t n_tiles, size_t n_frames) { | 43 | load_packed_sprite_data(u32 *sprite_data, size_t n_tiles, size_t n_frames) { |
57 | size_t counter = 0; | 44 | unpack_tiles(sprite_data, sprite_memory, n_tiles * n_frames); |
58 | for (size_t i = 0; i < 8 * n_tiles * n_frames / 4; ++i) { | ||
59 | u32 hex = sprite_data[i]; | ||
60 | sprite_memory[counter++] = unpack_1bb((hex >> 24) & 0xFF); | ||
61 | sprite_memory[counter++] = unpack_1bb((hex >> 16) & 0xFF); | ||
62 | sprite_memory[counter++] = unpack_1bb((hex >> 8) & 0xFF); | ||
63 | sprite_memory[counter++] = unpack_1bb((hex) & 0xFF); | ||
64 | } | ||
65 | sprite_memory += 8 * n_tiles * n_frames; | 45 | sprite_memory += 8 * n_tiles * n_frames; |
66 | Sprite sprite = { | 46 | Sprite sprite = { |
67 | .id = sprite_counter, | 47 | .id = sprite_counter, |