#include <stdint.h>
-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,
typedef struct jumpnrun_tile_position {
int16_t x;
int8_t y;
-} jumpnrun_tile_position;
+} __attribute__((packed)) jumpnrun_tile_position;
typedef struct jumpnrun_tile_type {
uint8_t lethal_sides;
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)); }
/************************************/
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
};