summaryrefslogtreecommitdiffstats
path: root/src/sprites.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/sprites.h')
-rw-r--r--src/sprites.h22
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
6u32
7unpack_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
19typedef struct Sprite { 6typedef 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
55size_t 42size_t
56load_packed_sprite_data(u32 *sprite_data, size_t n_tiles, size_t n_frames) { 43load_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,