diff --git a/assets.h b/assets.h index 8d71d4e..d879237 100644 --- a/assets.h +++ b/assets.h @@ -13,7 +13,7 @@ */ #define SFG_TRANSPARENT_TEXTURE 255 -static inline uint8_t SFG_getTexel(uint8_t *texture, uint8_t x, uint8_t y) +static inline uint8_t SFG_getTexel(const uint8_t *texture, uint8_t x, uint8_t y) { return texture[(y & 0x1f) * SFG_TEXTURE_SIZE + (x & 0x1f)]; } @@ -153,6 +153,46 @@ const uint8_t SFG_texturesWall[][SFG_TEXTURE_SIZE * SFG_TEXTURE_SIZE] = 36,3,3,36,4,3,19,3,3,4,3,3,4,4,3,4,11,4,4,3,4,12,4,4,4,4,4,4,12,4,19,4,19,4,3,3, 3,3,4,3,4,3,4,12,3,4,3,3,4,3,4,4,4,3,4,36,4,4,12,4,3,4,3,3,3,130,3,3,3,3,3,3, 130,3,3,3,2,2,130,130,3,3,11,3,3,3,3,3,3,130,3,3,130,3,3,3 + }, + { +43,20,20,19,43,43,43,43,20,20,43,20,20,20,20,43,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +11,19,20,20,20,20,20,20,20,20,20,20,20,20,20,21,20,11,12,12,11,11,12,12,11,12, +12,12,12,12,12,12,20,43,20,20,20,20,20,20,20,20,20,20,20,20,20,20,43,11,11,11, +11,11,11,11,11,11,11,11,11,11,11,11,43,11,20,20,20,21,20,20,21,20,20,20,21,20, +20,21,43,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,20,43,20,20,20,20,20,20, +20,20,20,20,20,20,20,21,43,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,19,10, +20,43,19,43,43,11,11,11,11,19,11,11,43,43,19,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,81, +43,21,21,21,21,21,21,21,20,21,20,21,20,20,21,20,11,11,12,12,12,12,12,12,12,12, +12,12,12,11,12,20,43,20,20,20,20,20,20,20,21,21,21,20,20,20,20,43,11,12,11,11, +12,12,12,12,12,12,12,12,12,11,12,20,43,21,20,20,20,20,21,20,20,20,20,20,20,20, +20,43,11,11,11,11,11,12,12,12,11,11,11,12,12,12,12,43,83,20,21,21,21,21,21,20, +20,20,20,21,20,20,20,43,11,11,11,11,12,12,12,11,12,12,12,12,12,12,12,20,65,11, +19,19,19,19,81,81,2,34,19,19,19,19,11,42,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,19,83,21, +20,21,21,21,21,21,21,21,21,21,20,21,21,20,11,12,12,12,12,12,12,12,12,12,12,11,2, +11,12,43,83,20,20,20,20,20,20,20,20,20,20,20,20,20,20,43,11,12,12,12,12,12,12, +12,12,12,11,11,12,12,12,20,43,20,21,21,21,20,21,20,20,20,20,20,20,20,20,43,11, +11,11,11,12,12,12,12,12,12,11,11,12,12,11,19,83,20,21,21,21,21,21,21,21,20,21, +20,20,20,20,43,11,12,11,12,12,11,12,12,12,12,11,11,12,12,12,20,83,11,11,11,19, +19,19,19,43,43,43,19,19,12,19,43,2,11,11,11,11,11,11,11,11,11,11,2,2,11,11,11,2, +11,11,11,11,11,2,11,82,11,11,2,11,11,2,2,19,20,21,21,20,21,20,20,20,20,20,20,20, +20,20,43,11,12,12,12,12,12,12,12,12,12,12,12,11,12,12,2,20,21,21,21,20,21,20,21, +21,21,21,21,21,21,21,43,11,12,11,11,11,11,11,11,11,11,11,11,11,11,12,2,20,20,21, +21,21,21,21,21,21,21,21,21,21,20,21,43,11,11,11,11,12,11,11,11,11,11,11,12,11, +11,12,2,20,21,21,21,21,21,21,21,21,21,21,21,21,20,21,43,11,11,11,12,12,12,12,12, +12,11,12,12,12,11,12,2,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,43,1,73,1, +73,73,2,2,2,2,2,2,2,2,2,2,1,43,43,19,43,19,43,19,19,19,19,10,2,19,2,19,9,11,12, +11,11,12,11,11,11,11,11,12,12,12,12,12,2,20,21,21,21,21,21,21,21,21,21,21,21,21, +21,21,43,11,12,12,12,11,11,11,11,11,11,11,11,12,12,12,11,43,20,21,21,21,21,20, +20,21,21,20,20,20,21,21,19,11,12,11,12,12,11,11,12,12,12,11,11,11,11,12,2,43,20, +20,20,20,20,21,21,21,21,21,20,21,21,20,43,11,12,12,11,12,12,12,12,12,12,12,12, +12,12,12,2,20,21,21,21,21,21,21,21,21,21,21,21,20,21,20,19,73,2,73,1,73,73,2,2, +1,73,73,2,1,1,2,1,43,43,43,43,43,43,43,43,11,43,43,43,11,11,11,81,11,11,12,12, +11,11,12,11,11,11,12,12,12,11,11,2,20,21,20,20,20,20,20,20,20,20,20,21,21,21,21, +20,11,12,12,12,12,11,11,11,11,12,12,12,12,12,12,2,43,20,20,20,20,20,20,20,20,20, +20,20,21,21,21,20,11,12,12,12,12,12,12,12,12,11,12,12,12,12,12,2,43,20,43,43,43, +20,20,43,20,12,43,12,20,20,20,43,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12, +11,43,20,20,20,20,20,20,20,20,20,43,20,20,20,20,43,2,11,11,11,11,11,11,11,11,11, +11,11,11,11,11,2,11,43,43,43,43,20,20,43,43,43,43,43,43,43,43,11 } }; diff --git a/levels.h b/levels.h index 0f03f5b..0bf9ffc 100644 --- a/levels.h +++ b/levels.h @@ -60,7 +60,12 @@ typedef struct SFG_Map map; } SFG_Level; -static inline SFG_TileDefinition SFG_getMapTile(SFG_Map *map, int16_t x, int16_t y) +static inline SFG_TileDefinition SFG_getMapTile +( + const SFG_Map *map, + int16_t x, + int16_t y +) { if (x < 0 || x >= SFG_MAP_SIZE || y < 0 || y >= SFG_MAP_SIZE) return SFG_OUTSIDE_TILE; @@ -68,7 +73,12 @@ static inline SFG_TileDefinition SFG_getMapTile(SFG_Map *map, int16_t x, int16_t return map->tileDictionary[map->mapArray[y * SFG_MAP_SIZE + x] & 0x3f]; } -static inline uint8_t SFG_getMapTileProperties(SFG_Map *map, int16_t x, int16_t y) +static inline uint8_t SFG_getMapTileProperties +( + const SFG_Map *map, + int16_t x, + int16_t y +) { if (x < 0 || x >= SFG_MAP_SIZE || y < 0 || y >= SFG_MAP_SIZE) return 0; @@ -82,8 +92,8 @@ static const SFG_Level SFG_level0 = { .tileDictionary = { - SFG_TD(0 ,31,0,0),SFG_TD(5 ,63,0,0),SFG_TD(1 ,63,3,0),SFG_TD(2 ,63,3,0), // 0 - SFG_TD(3 ,31,3,0),SFG_TD(4 ,63,3,0),SFG_TD(5 ,63,3,0),SFG_TD(1 ,10,0,0), // 4 + SFG_TD(0 ,31,0,0),SFG_TD(5 ,63,0,0),SFG_TD(1 ,63,4,0),SFG_TD(2 ,63,4,0), // 0 + SFG_TD(3 ,31,4,0),SFG_TD(4 ,63,4,0),SFG_TD(5 ,63,4,0),SFG_TD(1 ,10,0,0), // 4 SFG_TD(0 ,31,0,0),SFG_TD(0 ,63,0,0),SFG_TD(0 ,63,0,0),SFG_TD(0 ,63,0,0), // 8 SFG_TD(0 ,31,0,0),SFG_TD(0 ,63,0,0),SFG_TD(0 ,63,0,0),SFG_TD(0 ,63,0,0), // 12 SFG_TD(0 ,31,0,0),SFG_TD(0 ,63,0,0),SFG_TD(0 ,63,0,0),SFG_TD(0 ,63,0,0), // 16 @@ -105,16 +115,16 @@ static const SFG_Level SFG_level0 = #define o 0 o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,7 ,7 ,7 ,7 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o , o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,7 ,7 ,7 ,7 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o , - o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,7 ,7 ,7 ,7 ,o ,o ,o ,o ,1 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o , + o ,o ,o ,o ,o ,6 ,o ,o ,o ,o ,7 ,7 ,7 ,7 ,o ,o ,o ,o ,1 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o , o ,o ,o ,o ,o ,o ,o ,o ,2 ,o ,7 ,7 ,7 ,7 ,o ,o ,o ,o ,1 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o , o ,o ,o ,o ,o ,o ,o ,o ,3 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,1 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o , o ,o ,o ,o ,o ,o ,o ,o ,4 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,1 ,1 ,1 ,1 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o , - o ,o ,o ,o ,o ,6 ,6 ,6 ,5 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o , - o ,o ,o ,o ,o ,6 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o , - o ,o ,o ,o ,o ,6 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o , - o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o , - o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o , - o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o , + 6 ,o ,o ,o ,o ,6 ,6 ,6 ,5 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o , + 6 ,o ,o ,o ,o ,6 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o , + 6 ,o ,o ,o ,o ,6 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o , + 6 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o , + 6 ,o ,o ,o ,o ,6 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o , + 6 ,6 ,6 ,6 ,6 ,6 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o , o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o , o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o , o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o , diff --git a/main.c b/main.c index 95cb0a7..39a819c 100755 --- a/main.c +++ b/main.c @@ -99,20 +99,20 @@ void SFG_pixelFunc(RCL_PixelInfo *pixel) RCL_Unit SFG_textureAt(int16_t x, int16_t y) { - SFG_TileDefinition tile = SFG_getMapTile(&SFG_level0,x,y); + SFG_TileDefinition tile = SFG_getMapTile(&(SFG_level0.map),x,y); return SFG_TILE_FLOOR_TEXTURE(tile); } RCL_Unit SFG_floorHeightAt(int16_t x, int16_t y) { - SFG_TileDefinition tile = SFG_getMapTile(&SFG_level0,x,y); + SFG_TileDefinition tile = SFG_getMapTile(&(SFG_level0.map),x,y); return SFG_TILE_FLOOR_HEIGHT(tile) * (RCL_UNITS_PER_SQUARE / 4); } RCL_Unit SFG_ceilingHeightAt(int16_t x, int16_t y) { - SFG_TileDefinition tile = SFG_getMapTile(&SFG_level0,x,y); + SFG_TileDefinition tile = SFG_getMapTile(&(SFG_level0.map),x,y); uint8_t height = SFG_TILE_CEILING_HEIGHT(tile); diff --git a/platform_sdl.h b/platform_sdl.h index 98dfb94..6777405 100644 --- a/platform_sdl.h +++ b/platform_sdl.h @@ -68,8 +68,6 @@ int main() SDL_Surface *screenSurface = SDL_GetWindowSurface(window); - SDL_Event event; - sdlKeyboardState = SDL_GetKeyboardState(NULL); int running = 1;