diff options
Diffstat (limited to 'src/engine')
-rw-r--r-- | src/engine/engine.c | 1 | ||||
-rw-r--r-- | src/engine/sprite_controller.c | 10 | ||||
-rw-r--r-- | src/engine/sprite_controller.h | 96 |
3 files changed, 107 insertions, 0 deletions
diff --git a/src/engine/engine.c b/src/engine/engine.c index f3410a4..799ee7c 100644 --- a/src/engine/engine.c +++ b/src/engine/engine.c @@ -1,3 +1,4 @@ #include "engine/draw_screen.h" #include "engine/level.h" #include "engine/maths.h" +#include "engine/sprite_controller.h" diff --git a/src/engine/sprite_controller.c b/src/engine/sprite_controller.c index e69de29..c224ff7 100644 --- a/src/engine/sprite_controller.c +++ b/src/engine/sprite_controller.c @@ -0,0 +1,10 @@ +#include <stdint.h> + +#include "engine/sprite_controller.h" +// #include "engine/maths.h" +#include "ppu/types.h" +#include "ppu/consts.h" + +uint8_t hh_get_palette(uint16_t tile_idx) { + return hh_g_sprite_palette[tile_idx]; +} diff --git a/src/engine/sprite_controller.h b/src/engine/sprite_controller.h index a433bd6..47ab0af 100644 --- a/src/engine/sprite_controller.h +++ b/src/engine/sprite_controller.h @@ -1,8 +1,104 @@ #pragma once +#include <stdint.h> + +#include "ppu/types.h" + // handles sprites // Bg sprites // Fg or entity sprites +//TODO: pack data inside of sprite_palette LUT +//HH_PPU_PALETTE_COUNT +#define HH_SPRITE_COUNT 32 +#define HH_PAL_IDX_SKY 0 +#define HH_PAL_IDX_BRICK 1 +uint8_t hh_g_sprite_palette[HH_SPRITE_COUNT] = { + 0,1,1,1,1,1,1,1,1,1, //1+9 + 1,1,1,1,1,1,1,1,1,1, //6+4 + 1,1,1,1,1,1,1,1,1, //9 + 7,7,7,2,7,7,1,2,7 + //other palettes here: +}; + + +hh_ppu_loc_palette_table_t hh_g_palette = { + {//palette info here + {0x1,0x2,0x3}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}}, + {//Bricks + {0x1,0x2,0x3},//01 + {0xd,0x8,0xa},//24 + {0x0,0x0,0x1},//25 + {0x1,0x1,0x1},//26 + {0x1,0x1,0x2},//27 + {0x2,0x2,0x3},//28 + {0x3,0x4,0x5},//29 + {0x5,0x1,0x7}}, + {//slime + {0x1,0x2,0x3}, + {0x1,0x3,0x2}, + {0x4,0x8,0x3}, + {0x7,0xa,0x4}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}}, + { + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}}, + { + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}}, + { + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}}, + { + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}}, + { + {0xf,0xf,0xf}, + {0xf,0xf,0xf}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}, + {0x0,0x0,0x0}} +}; + +/** @brief return palette index that belongs to tilemap index */ +uint8_t hh_get_palette(uint16_t tile_idx); +bool hh_colidable(uint16_t tile_idx); |