sgdk
|
00001 00026 #ifndef _MAP_H_ 00027 #define _MAP_H_ 00028 00029 00030 #include "vdp.h" 00031 #include "vdp_tile.h" 00032 #include "pal.h" 00033 00034 00080 typedef struct 00081 { 00082 u16 w; 00083 u16 h; 00084 u16 hp; 00085 u16 compression; 00086 u16 numMetaTile; 00087 u16 numBlock; 00088 Palette *palette; 00089 TileSet *tileset; 00090 u16 *metaTiles; 00091 void *blocks; 00092 void *blockIndexes; 00093 u16 *blockRowOffsets; 00094 } MapDefinition; 00095 00096 00146 typedef struct Map 00147 { 00148 u16 w; 00149 u16 h; 00150 u16 *metaTiles; 00151 void *blocks; 00152 void *blockIndexes; 00153 u16 *blockRowOffsets; 00154 VDPPlane plane; 00155 u16 baseTile; 00156 u32 posX; 00157 u32 posY; 00158 u16 wMask; 00159 u16 hMask; 00160 u16 planeWidthMask; 00161 u16 planeHeightMask; 00162 u16 lastXT; 00163 u16 lastYT; 00164 u16 hScrollTable[240]; 00165 u16 vScrollTable[20]; 00166 void (*prepareMapDataColumnCB)(struct Map *map, u16 *bufCol1, u16 *bufCol2, u16 xm, u16 ym, u16 height); 00167 void (*prepareMapDataRowCB)(struct Map *map, u16 *bufRow1, u16 *bufRow2, u16 xm, u16 ym, u16 width); 00168 u16 (*getMetaTileCB)(struct Map *map, u16 x, u16 y); 00169 void (*getMetaTilemapRectCB)(struct Map *map, u16 x, u16 y, u16 w, u16 h, u16* dest); 00170 } Map; 00171 00172 00192 Map* MAP_create(const MapDefinition* mapDef, VDPPlane plane, u16 baseTile); 00193 00212 void MAP_scrollTo(Map* map, u32 x, u32 y); 00228 void MAP_scrollToEx(Map* map, u32 x, u32 y, bool forceRedraw); 00229 00253 u16 MAP_getMetaTile(Map* map, u16 x, u16 y); 00277 u16 MAP_getTile(Map* map, u16 x, u16 y); 00306 void MAP_getMetaTilemapRect(Map* map, u16 x, u16 y, u16 w, u16 h, u16* dest); 00338 void MAP_getTilemapRect(Map* map, u16 x, u16 y, u16 w, u16 h, bool column, u16* dest); 00339 00340 00341 #endif // _MAP_H_