Mercurial > mm7
diff Engine/LOD.cpp @ 2572:d87bfbd3bb3b
Step towards unification of Texture and RGBTexture (class Image)
author | a.parshin |
---|---|
date | Sat, 05 Mar 2016 01:51:54 +0200 |
parents | a902abdfc7f2 |
children | dd36326a9994 |
line wrap: on
line diff
--- a/Engine/LOD.cpp Mon Oct 05 00:19:13 2015 +0200 +++ b/Engine/LOD.cpp Sat Mar 05 01:51:54 2016 +0200 @@ -42,6 +42,15 @@ int _6A0CA8_lod_unused; // weak +inline int LODFile_IconsBitmaps::LoadDummyTexture() +{ + for (unsigned int i = 0; i < uNumLoadedFiles; ++i) + if (!strcmp(pTextures[i].pName, "pending")) + return i; + return LoadTextureFromLOD(&pTextures[uNumLoadedFiles], "pending", TEXTURE_16BIT_PALETTE); +} + + // inlined //----- (mm6c::00408860) -------------------------------------------------- void LODFile_IconsBitmaps::_inlined_sub2() @@ -1144,7 +1153,7 @@ this->dword_11B84 = 0; this->dword_11B80 = 0; this->uNumLoadedFiles = 0; - this->dword_011BA4 = 0; + this->_011BA4_debug_paletted_pixels_uncompressed = false; //this->can_load_hardware_sprites = 0; this->pHardwareSurfaces = 0; this->pHardwareTextures = 0; @@ -1809,20 +1818,20 @@ fread(pDst, 1, 0x30u, File); strcpy(pDst->pName, pContainer); - pDst->pLevelOfDetail0_prolly_alpha_mask = 0; + pDst->paletted_pixels = 0; if ( pDst->uDecompressedSize ) { - pDst->pLevelOfDetail0_prolly_alpha_mask = (unsigned __int8 *)malloc(pDst->uDecompressedSize); + pDst->paletted_pixels = (unsigned __int8 *)malloc(pDst->uDecompressedSize); v9 = malloc(pDst->uTextureSize); fread((void *)v9, 1, (size_t)pDst->uTextureSize, File); - zlib::MemUnzip(pDst->pLevelOfDetail0_prolly_alpha_mask, &pDst->uDecompressedSize, v9, pDst->uTextureSize); + zlib::MemUnzip(pDst->paletted_pixels, &pDst->uDecompressedSize, v9, pDst->uTextureSize); pDst->uTextureSize = pDst->uDecompressedSize; free(v9); } else { - pDst->pLevelOfDetail0_prolly_alpha_mask = (unsigned __int8 *)malloc(0); - fread(pDst->pLevelOfDetail0_prolly_alpha_mask, 1, (size_t)pDst->uTextureSize, File); + pDst->paletted_pixels = (unsigned __int8 *)malloc(0); + fread(pDst->paletted_pixels, 1, (size_t)pDst->uTextureSize, File); } pDst->pPalette16 = 0; pDst->pPalette24 = 0; @@ -1849,7 +1858,7 @@ if ( pDst->pBits & 2 ) { - v15 = (int)&pDst->pLevelOfDetail0_prolly_alpha_mask[pDst->uSizeOfMaxLevelOfDetail]; + v15 = (int)&pDst->paletted_pixels[pDst->uSizeOfMaxLevelOfDetail]; pDst->pLevelOfDetail1 = (unsigned __int8 *)v15; v16 = (pDst->uSizeOfMaxLevelOfDetail >> 2) + v15; //pDst->pLevelOfDetail2 = (unsigned __int8 *)v16; @@ -2061,7 +2070,7 @@ File = FindContainer(pContainer, 0); v6 = pDst; - if ( File && pDst->pLevelOfDetail0_prolly_alpha_mask + if ( File && pDst->paletted_pixels && mode == 2 && pDst->pPalette16 && !pDst->pPalette24 && (v7 = pDst->uTextureSize, @@ -2070,9 +2079,9 @@ v8 = pDst->uTextureSize, (signed int)v8 <= (signed int)v7) ) { - if ( !pDst->uDecompressedSize || this->dword_011BA4 ) + if ( !pDst->uDecompressedSize || this->_011BA4_debug_paletted_pixels_uncompressed) { - fread(pDst->pLevelOfDetail0_prolly_alpha_mask, 1, pDst->uTextureSize, File); + fread(pDst->paletted_pixels, 1, pDst->uTextureSize, File); } else { @@ -2082,7 +2091,7 @@ zlib::MemUnzip(Sourcea, &v6->uDecompressedSize, DstBufa, v6->uTextureSize); v6->uTextureSize = pDst->uDecompressedSize; free(DstBufa); - memcpy(v6->pLevelOfDetail0_prolly_alpha_mask, Sourcea, pDst->uDecompressedSize); + memcpy(v6->paletted_pixels, Sourcea, pDst->uDecompressedSize); free(Sourcea); } for( uint i = 0; i < 256; ++i ) @@ -2159,10 +2168,10 @@ } return result; } - if ( !v8->uDecompressedSize || dword_011BA4 ) + if ( !v8->uDecompressedSize || _011BA4_debug_paletted_pixels_uncompressed) { - v8->pLevelOfDetail0_prolly_alpha_mask = (unsigned __int8 *)malloc(v8->uTextureSize); - fread(v8->pLevelOfDetail0_prolly_alpha_mask, 1, (size_t)v8->uTextureSize, pFile); + v8->paletted_pixels = (unsigned __int8 *)malloc(v8->uTextureSize); + fread(v8->paletted_pixels, 1, (size_t)v8->uTextureSize, pFile); } else { @@ -2179,8 +2188,8 @@ + ((signed int)v8->uSizeOfMaxLevelOfDetail >> 6)); v22 = (size_t)pOutTex; v23 = &pContainer[v8->uTextureWidth * v8->uTextureHeight]; - v8->pLevelOfDetail0_prolly_alpha_mask = (unsigned __int8 *)malloc((unsigned int)pOutTex); - memcpy(v8->pLevelOfDetail0_prolly_alpha_mask, v23, v22); + v8->paletted_pixels = (unsigned __int8 *)malloc((unsigned int)pOutTex); + memcpy(v8->paletted_pixels, v23, v22); v8->uTextureWidth = (signed __int16)v8->uTextureWidth / 2; v8->uTextureHeight = (signed __int16)v8->uTextureHeight / 2; --v8->uWidthLn2; @@ -2192,8 +2201,8 @@ } else { - v8->pLevelOfDetail0_prolly_alpha_mask = (unsigned __int8 *)malloc(v8->uDecompressedSize); - memcpy(v8->pLevelOfDetail0_prolly_alpha_mask, pContainer, v8->uDecompressedSize); + v8->paletted_pixels = (unsigned __int8 *)malloc(v8->uDecompressedSize); + memcpy(v8->paletted_pixels, pContainer, v8->uDecompressedSize); } free((void *)pContainer); } @@ -2230,7 +2239,7 @@ if ( v8->pBits & 2 ) { - v8->pLevelOfDetail1 = &v8->pLevelOfDetail0_prolly_alpha_mask[v8->uSizeOfMaxLevelOfDetail]; + v8->pLevelOfDetail1 = &v8->paletted_pixels[v8->uSizeOfMaxLevelOfDetail]; //v8->pLevelOfDetail2 = &v8->pLevelOfDetail1[v8->uSizeOfMaxLevelOfDetail >> 2]; //v8->pLevelOfDetail3 = &v8->pLevelOfDetail2[v8->uSizeOfMaxLevelOfDetail >> 4]; }