|
|
|
@ -51,6 +51,11 @@ typedef uint8_t SFG_MapArray[SFG_MAP_SIZE * SFG_MAP_SIZE];
|
|
|
|
|
bbbbbb: index into tile dictionary
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#define SFG_TILE_PROPERTY_NORMAL 0x00
|
|
|
|
|
#define SFG_TILE_PROPERTY_ELEVATOR 0x40
|
|
|
|
|
#define SFG_TILE_PROPERTY_SQUEEZER 0x80
|
|
|
|
|
#define SFG_TILE_PROPERTY_DOOR 0xc0
|
|
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
SFG_MapArray mapArray;
|
|
|
|
@ -70,26 +75,20 @@ static inline SFG_TileDefinition SFG_getMapTile
|
|
|
|
|
(
|
|
|
|
|
const SFG_Map *map,
|
|
|
|
|
int16_t x,
|
|
|
|
|
int16_t y
|
|
|
|
|
int16_t y,
|
|
|
|
|
uint8_t *properties
|
|
|
|
|
)
|
|
|
|
|
{
|
|
|
|
|
if (x < 0 || x >= SFG_MAP_SIZE || y < 0 || y >= SFG_MAP_SIZE)
|
|
|
|
|
{
|
|
|
|
|
*properties = SFG_TILE_PROPERTY_NORMAL;
|
|
|
|
|
return SFG_OUTSIDE_TILE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return map->tileDictionary[map->mapArray[y * SFG_MAP_SIZE + x] & 0x3f];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
uint8_t tile = map->mapArray[y * SFG_MAP_SIZE + x];
|
|
|
|
|
|
|
|
|
|
return map->mapArray[y * SFG_MAP_SIZE + x] & 0xc0;
|
|
|
|
|
*properties = tile & 0xc0;
|
|
|
|
|
return map->tileDictionary[tile & 0x3f];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static const SFG_Level SFG_level0 =
|
|
|
|
@ -100,7 +99,7 @@ static const SFG_Level SFG_level0 =
|
|
|
|
|
.tileDictionary =
|
|
|
|
|
{
|
|
|
|
|
SFG_TD(0 ,31,0,0),SFG_TD(15,63,5,0),SFG_TD(28,63,1,0),SFG_TD(6 ,63,6,0), // 0
|
|
|
|
|
SFG_TD(3 ,31,4,0),SFG_TD(4 ,63,4,0),SFG_TD(5 ,63,4,0),SFG_TD(1 ,10,1,0), // 4
|
|
|
|
|
SFG_TD(10,28,4,0),SFG_TD(4 ,63,4,0),SFG_TD(5 ,63,4,0),SFG_TD(1 ,10,1,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
|
|
|
|
@ -119,6 +118,7 @@ static const SFG_Level SFG_level0 =
|
|
|
|
|
.mapArray =
|
|
|
|
|
{
|
|
|
|
|
#define o 0
|
|
|
|
|
#define AA (0x04 | SFG_TILE_PROPERTY_ELEVATOR)
|
|
|
|
|
1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,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 ,
|
|
|
|
|
1 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,3 ,3 ,3 ,3 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,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 ,3 ,3 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,
|
|
|
|
@ -126,7 +126,7 @@ static const SFG_Level SFG_level0 =
|
|
|
|
|
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 ,o ,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 ,o ,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 ,3 ,3 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,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 ,3 ,3 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,
|
|
|
|
|
1 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,AA,o ,o ,o ,o ,o ,AA,3 ,3 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,
|
|
|
|
|
1 ,o ,o ,o ,o ,o ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,
|
|
|
|
|
1 ,o ,o ,o ,o ,o ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,
|
|
|
|
|
1 ,o ,o ,o ,o ,o ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,
|
|
|
|
@ -184,6 +184,7 @@ static const SFG_Level SFG_level0 =
|
|
|
|
|
o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,
|
|
|
|
|
o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,
|
|
|
|
|
#undef o
|
|
|
|
|
#undef A
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|