SDL_Surface *load_tnt_minimap_fast_raw_bmp(const String& filename, int& sw, int& sh) { File *headerBytes = VFS::Instance()->readFileRange(filename, 0, sizeof(TNTHEADER)); if (headerBytes == NULL) return 0; TNTHEADER *header = &((TNTHEADER_U*)headerBytes->data())->header; File *minimapdata = VFS::Instance()->readFileRange(filename, header->PTRminimap, sizeof(TNTMINIMAP)); if (!minimapdata) { delete headerBytes; return 0; } minimapdata->seek(header->PTRminimap); TNTMINIMAP minimap; *minimapdata >> minimap; SDL_Surface *bitmap = load_tnt_minimap_bmp(&minimap, &sw, &sh); delete headerBytes; delete minimapdata; return bitmap; }
BITMAP *load_tnt_minimap_fast_raw_bmp(const String& filename, int& sw, int& sh) { byte *headerBytes = HPIManager->PullFromHPI_zone(filename.c_str(),0,sizeof(TNTHEADER),NULL); if (headerBytes==NULL) { return 0; } TNTHEADER *header = &((TNTHEADER_U*)headerBytes)->header; byte *minimapdata = HPIManager->PullFromHPI_zone(filename.c_str(),header->PTRminimap,sizeof(TNTMINIMAP),NULL); if (minimapdata==NULL) { delete[] headerBytes; return 0; } TNTMINIMAP *minimap = &((TNTMINIMAP_U*)(&minimapdata[header->PTRminimap]))->map; BITMAP *bitmap = load_tnt_minimap_bmp(minimap, &sw, &sh); delete[] headerBytes; delete[] minimapdata; return bitmap; }