74Variable *
tilemap_storage(
Environment * _environment,
char * _source_name,
char * _target_name,
int _mode,
int _flags,
int _transparent_color,
int _background_color,
int _bank_expansion ) {
88 final->originalTilemap = tilemap;
109 if ( final->tileset ) {
112 char * tilesetFileName = strdup( lookedFilename );
115 char * separator = strrchr( tilesetFileName,
'/' );
118 strcopy( tilesetFileNameWithPath, tilesetFileName );
120 strcat( tilesetFileNameWithPath, tileset->
source );
122 Variable * tilesetVar =
tileset_load( _environment, lookedFilename, NULL, _mode, _flags, _transparent_color, _background_color, _bank_expansion );
128 int tilesetSize = tilesetVar->
size;
137 char * mapData = NULL;
138 if ( final->valueBuffer ) {
139 if ( final->size !=
size ) {
142 mapData = realloc( final->valueBuffer, final->size +
size );
143 final->valueBuffer = mapData;
144 mapData +=
final->size;
147 final->valueBuffer = mapData;
149 memset( mapData, 0,
size );
150 for(
int i=0; i<
size; ++i ) {
152 mapData[i] = ((
unsigned char)layer->
data[i]) - (tilesetVar->
firstGid);
158 final->mapWidth = layer->
width;
159 final->mapHeight = layer->
height;
164 char * tilemapData =
final->valueBuffer;
165 int tilemapSize =
final->size;
169 int deltaFrameConst =
final->mapWidth > screenWidthAsTilesConst ? (
final->mapWidth - screenWidthAsTilesConst ) : 0;
170 int sizeConst =
final->mapWidth *
final->mapHeight;
171 int deltaFrameScreenConst = sizeConst - (
final->mapWidth * screenHeightAsTilesConst );
172 int mapWidth =
final->mapWidth;
175 int mapLayers =
final->mapLayers;
207 int size = tilesetSize + tilemapSize + 15;
208 char * data =
malloc( tilesetSize + tilemapSize + 15 );
211 data[1] = ( tilemapSize & 0xff );
212 data[0] = ( ( tilemapSize >> 8 ) & 0xff );
214 data[0] = ( tilemapSize & 0xff );
215 data[1] = ( ( tilemapSize >> 8 ) & 0xff );
220 data[2] = ( screenWidthAsTilesConst & 0xff );
224 data[3] = ( screenHeightAsTilesConst & 0xff );
228 data[4] = ( deltaFrameConst & 0xff );
233 data[6] = ( sizeConst & 0xff );
234 data[5] = ( ( sizeConst >> 8 ) & 0xff );
236 data[5] = ( sizeConst & 0xff );
237 data[6] = ( ( sizeConst >> 8 ) & 0xff );
243 data[8] = ( deltaFrameScreenConst & 0xff );
244 data[7] = ( ( deltaFrameScreenConst >> 8 ) & 0xff );
246 data[7] = ( deltaFrameScreenConst & 0xff );
247 data[8] = ( ( deltaFrameScreenConst >> 8 ) & 0xff );
252 data[9] = ( mapWidth & 0xff );
256 data[10] = ( frameWidth & 0xff );
260 data[11] = ( frameHeight & 0xff );
264 data[12] = ( mapLayers & 0xff );
269 data[14] = ( frameSize & 0xff );
270 data[13] = ( ( frameSize >> 8 ) & 0xff );
272 data[13] = ( frameSize & 0xff );
273 data[14] = ( ( frameSize >> 8 ) & 0xff );
278 memcpy( &data[15], tilemapData, tilemapSize );
279 memcpy( &data[15+tilemapSize], tilesetData, tilesetSize );
Variable * tilemap_storage(Environment *_environment, char *_source_name, char *_target_name, int _mode, int _flags, int _transparent_color, int _background_color, int _bank_expansion)
Emit code for LOAD TILEMAP(...).
Variable * tileset_load(Environment *_environment, char *_filename, char *_alias, int _mode, int _flags, int _transparent_color, int _background_color, int _bank_expansion)
Emit code for LOAD TILESERT(...).