X-Git-Url: https://git.rohieb.name/hackover2013-badge-firmware.git/blobdiff_plain/a7875e0dd83390a47de359df1f33a017ecb3f065..05db94c84b6f7e4ee91fd67d6e1a8d97a2b97f2e:/badge/jumpnrun/tiles.h?ds=inline diff --git a/badge/jumpnrun/tiles.h b/badge/jumpnrun/tiles.h index 8010e11..8e47800 100644 --- a/badge/jumpnrun/tiles.h +++ b/badge/jumpnrun/tiles.h @@ -7,12 +7,12 @@ #include -typedef enum { - JUMPNRUN_TILE_TOP = 1, - JUMPNRUN_TILE_BOTTOM = 2, - JUMPNRUN_TILE_LEFT = 4, - JUMPNRUN_TILE_RIGHT = 8 -} jumpnrun_tile_sides; +enum { + JUMPNRUN_COLLISION_TOP = 1, + JUMPNRUN_COLLISION_BOTTOM = 2, + JUMPNRUN_COLLISION_LEFT = 4, + JUMPNRUN_COLLISION_RIGHT = 8 +}; enum { JUMPNRUN_TILE_PIXEL_WIDTH = 5, @@ -20,9 +20,9 @@ enum { }; typedef struct jumpnrun_tile_position { - uint16_t x; - uint8_t y; -} jumpnrun_tile_position; + int16_t x; + int8_t y; +} __attribute__((packed)) jumpnrun_tile_position; typedef struct jumpnrun_tile_type { uint8_t lethal_sides; @@ -32,17 +32,17 @@ typedef struct jumpnrun_tile_type { typedef struct jumpnrun_tile { jumpnrun_tile_position pos; uint8_t type; -} jumpnrun_tile; +} __attribute__((packed)) jumpnrun_tile; typedef struct jumpnrun_tile_range { - size_t first; - size_t last; // actually one past last. + uint16_t first; + uint16_t last; // actually one past last. } jumpnrun_tile_range; -static inline fixed_point tile_left (jumpnrun_tile const *tile) { return FIXED_POINT(tile->pos.x * JUMPNRUN_TILE_PIXEL_WIDTH , 0); } -static inline fixed_point tile_top (jumpnrun_tile const *tile) { return FIXED_POINT(tile->pos.y * JUMPNRUN_TILE_PIXEL_HEIGHT, 0); } -static inline fixed_point tile_right (jumpnrun_tile const *tile) { return fixed_point_add(tile_left(tile), FIXED_POINT(JUMPNRUN_TILE_PIXEL_WIDTH , 0)); } -static inline fixed_point tile_bottom(jumpnrun_tile const *tile) { return fixed_point_add(tile_top (tile), FIXED_POINT(JUMPNRUN_TILE_PIXEL_HEIGHT, 0)); } +static inline fixed_point tile_left (jumpnrun_tile const *tile) { return FIXED_INT(tile->pos.x * JUMPNRUN_TILE_PIXEL_WIDTH ); } +static inline fixed_point tile_top (jumpnrun_tile const *tile) { return FIXED_INT(tile->pos.y * JUMPNRUN_TILE_PIXEL_HEIGHT); } +static inline fixed_point tile_right (jumpnrun_tile const *tile) { return fixed_point_add(tile_left(tile), FIXED_INT(JUMPNRUN_TILE_PIXEL_WIDTH )); } +static inline fixed_point tile_bottom(jumpnrun_tile const *tile) { return fixed_point_add(tile_top (tile), FIXED_INT(JUMPNRUN_TILE_PIXEL_HEIGHT)); } /************************************/ @@ -53,6 +53,10 @@ enum { JUMPNRUN_TILE_TYPE_TUBE_TOP_RIGHT, JUMPNRUN_TILE_TYPE_TUBE_LEFT, JUMPNRUN_TILE_TYPE_TUBE_RIGHT, + JUMPNRUN_TILE_TYPE_SPIKE_UP, + JUMPNRUN_TILE_TYPE_SPIKE_RIGHT, + JUMPNRUN_TILE_TYPE_SPIKE_DOWN, + JUMPNRUN_TILE_TYPE_SPIKE_LEFT, JUMPNRUN_TILE_TYPE_COUNT };