void Map_ReadHL( IDataStream *in, CPtrArray *map ){ g_WadList = NULL; g_TextureNameCache = NULL; g_MapVersion = MAPVERSION_HL; Map_Read( in,map ); FreeGSList( g_TextureNameCache ); FreeGSList( g_WadList ); }
void Map_UpdateAllTiles() { int cameraTileX = PIXEL_TO_MAP_TILE(Camera_Position.x); int cameraTileY = PIXEL_TO_MAP_TILE(Camera_Position.y); Map_ScrollX = cameraTileX; Map_ScrollY = cameraTileY; Map_ScrollXOffset = Map_ScrollX % MAP_TILE_SCROLL_WRAP_X; Map_ScrollYOffset = Map_ScrollY % MAP_TILE_SCROLL_WRAP_Y; int vramY = Map_ScrollYOffset * 2; for(int row = 0; row < MAP_TILE_SCROLL_WRAP_Y; row++) { Map_Read(0, cameraTileX, cameraTileY + row, MapRead_Horizontal); int vramX = Map_ScrollXOffset * 2; for(int column = 0; column < MAP_TILE_SCROLL_WRAP_X; column++) { uint8_t tile = 4 * Map_ReadBuffer[column]; SetTile(vramX, vramY, tile + 0); SetTile(vramX + 1, vramY, tile + 1); SetTile(vramX, vramY + 1, tile + 2); SetTile(vramX + 1, vramY + 1, tile + 3); vramX += 2; if(vramX >= VRAM_SCROLL_WRAP_X) vramX = 0; } vramY += 2; if(vramY >= VRAM_SCROLL_WRAP_Y) vramY = 0; } }
void Map_UpdateSliceHorizontal(int offsetY) { Map_Read(0, Map_ScrollX, Map_ScrollY + offsetY, MapRead_Horizontal); int vramX = Map_ScrollXOffset * 2; int vramY = (Map_ScrollYOffset + offsetY) * 2; while(vramY >= VRAM_SCROLL_WRAP_Y) vramY -= VRAM_SCROLL_WRAP_Y; for(int i = 0; i < MAP_TILE_SCROLL_WRAP_X; i++) { uint8_t tile = 4 * Map_ReadBuffer[i]; SetTile(vramX, vramY, tile + 0); SetTile(vramX + 1, vramY, tile + 1); SetTile(vramX, vramY + 1, tile + 2); SetTile(vramX + 1, vramY + 1, tile + 3); vramX += 2; if(vramX == VRAM_SCROLL_WRAP_X) vramX = 0; } }
void Map_UpdateSliceVertical(int offsetX) { Map_Read(0, Map_ScrollX + offsetX, Map_ScrollY, MapRead_Vertical); int vramX = (Map_ScrollXOffset + offsetX) * 2; int vramY = Map_ScrollYOffset * 2; while(vramX >= VRAM_SCROLL_WRAP_X) vramX -= VRAM_SCROLL_WRAP_X; for(int i = 0; i < MAP_TILE_SCROLL_WRAP_Y; i++) { uint8_t tile = 4 * Map_ReadBuffer[i]; SetTile(vramX, vramY, tile + 0); SetTile(vramX + 1, vramY, tile + 1); SetTile(vramX, vramY + 1, tile + 2); SetTile(vramX + 1, vramY + 1, tile + 3); vramY += 2; if(vramY == VRAM_SCROLL_WRAP_Y) vramY = 0; } }
void Map_ReadQ2( IDataStream *in, CPtrArray *map ){ g_MapVersion = MAPVERSION_Q2; Map_Read( in,map ); }