diff --git a/src/Textures.cpp b/src/Textures.cpp index 33a16a23..61b5572e 100644 --- a/src/Textures.cpp +++ b/src/Textures.cpp @@ -272,6 +272,150 @@ const struct TextureLoadParameters u32 lineShift; u32 maxTexels; } imageFormat[4][4][5] = +{ // G_TT_NONE + { // Get16 glType16 glInternalFormat16 Get32 glType32 glInternalFormat32 autoFormat + { // 4-bit + { GetI4_RGBA4444, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetI4_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA4, 4, 8192 }, // RGBA as I + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA4, 4, 8192 }, // YUV + { GetI4_RGBA4444, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetI4_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA4, 4, 8192 }, // CI without palette + { GetIA31_RGBA4444, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetIA31_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA4, 4, 8192 }, // IA + { GetI4_RGBA4444, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetI4_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA4, 4, 8192 }, // I + }, + { // 8-bit + { GetI8_RGBA4444, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetI8_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA, 3, 4096 }, // RGBA as I + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA4, 0, 4096 }, // YUV + { GetI8_RGBA4444, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetI8_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA, 3, 4096 }, // CI without palette + { GetIA44_RGBA4444, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetIA44_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA4, 3, 4096 }, // IA + { GetI8_RGBA4444, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetI8_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA, 3, 4096 }, // I + }, + { // 16-bit + { GetRGBA5551_RGBA5551, datatype::UNSIGNED_SHORT_5_5_5_1, internalcolor::RGB5_A1, GetRGBA5551_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGB5_A1, 2, 2048 }, // RGBA + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA4, 2, 2048 }, // YUV + { GetIA88_RGBA4444, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetIA88_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA, 2, 2048 }, // CI as IA + { GetIA88_RGBA4444, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetIA88_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA, 2, 2048 }, // IA + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA4, 0, 2048 }, // I + }, + { // 32-bit + { GetRGBA8888_RGBA4444, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetRGBA8888_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA, 2, 1024 }, // RGBA + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA4, 0, 1024 }, // YUV + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA4, 0, 1024 }, // CI + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA4, 0, 1024 }, // IA + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA4, 0, 1024 }, // I + } + }, + // DUMMY + { // Get16 glType16 glInternalFormat16 Get32 glType32 glInternalFormat32 autoFormat + { // 4-bit + { GetCI4RGBA_RGBA5551, datatype::UNSIGNED_SHORT_5_5_5_1, internalcolor::RGB5_A1, GetCI4RGBA_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGB5_A1, 4, 4096 }, // CI (Banjo-Kazooie uses this, doesn't make sense, but it works...) + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA4, 4, 8192 }, // YUV + { GetCI4RGBA_RGBA5551, datatype::UNSIGNED_SHORT_5_5_5_1, internalcolor::RGB5_A1, GetCI4RGBA_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGB5_A1, 4, 4096 }, // CI + { GetCI4RGBA_RGBA5551, datatype::UNSIGNED_SHORT_5_5_5_1, internalcolor::RGB5_A1, GetCI4RGBA_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGB5_A1, 4, 4096 }, // IA as CI + { GetCI4RGBA_RGBA5551, datatype::UNSIGNED_SHORT_5_5_5_1, internalcolor::RGB5_A1, GetCI4RGBA_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGB5_A1, 4, 4096 }, // I as CI + }, + { // 8-bit + { GetCI8RGBA_RGBA5551, datatype::UNSIGNED_SHORT_5_5_5_1, internalcolor::RGB5_A1, GetCI8RGBA_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGB5_A1, 3, 2048 }, // RGBA + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA4, 0, 4096 }, // YUV + { GetCI8RGBA_RGBA5551, datatype::UNSIGNED_SHORT_5_5_5_1, internalcolor::RGB5_A1, GetCI8RGBA_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGB5_A1, 3, 2048 }, // CI + { GetCI8RGBA_RGBA5551, datatype::UNSIGNED_SHORT_5_5_5_1, internalcolor::RGB5_A1, GetCI8RGBA_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGB5_A1, 3, 2048 }, // IA as CI + { GetCI8RGBA_RGBA5551, datatype::UNSIGNED_SHORT_5_5_5_1, internalcolor::RGB5_A1, GetCI8RGBA_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGB5_A1, 3, 2048 }, // I as CI + }, + { // 16-bit + { GetCI16RGBA_RGBA5551, datatype::UNSIGNED_SHORT_5_5_5_1, internalcolor::RGB5_A1, GetRGBA5551_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGB5_A1, 2, 2048 }, // RGBA + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA4, 2, 2048 }, // YUV + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA4, 0, 2048 }, // CI + { GetCI16RGBA_RGBA5551, datatype::UNSIGNED_SHORT_5_5_5_1, internalcolor::RGB5_A1, GetCI16RGBA_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGB5_A1, 2, 2048 }, // IA as CI + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA4, 0, 2048 }, // I + }, + { // 32-bit + { GetRGBA8888_RGBA4444, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetRGBA8888_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA, 2, 1024 }, // RGBA + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA4, 0, 1024 }, // YUV + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA4, 0, 1024 }, // CI + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA4, 0, 1024 }, // IA + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA4, 0, 1024 }, // I + } + }, + // G_TT_RGBA16 + { // Get16 glType16 glInternalFormat16 Get32 glType32 glInternalFormat32 autoFormat + { // 4-bit + { GetCI4RGBA_RGBA5551, datatype::UNSIGNED_SHORT_5_5_5_1, internalcolor::RGB5_A1, GetCI4RGBA_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGB5_A1, 4, 4096 }, // CI (Banjo-Kazooie uses this, doesn't make sense, but it works...) + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA4, 4, 8192 }, // YUV + { GetCI4RGBA_RGBA5551, datatype::UNSIGNED_SHORT_5_5_5_1, internalcolor::RGB5_A1, GetCI4RGBA_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGB5_A1, 4, 4096 }, // CI + { GetCI4RGBA_RGBA5551, datatype::UNSIGNED_SHORT_5_5_5_1, internalcolor::RGB5_A1, GetCI4RGBA_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGB5_A1, 4, 4096 }, // IA as CI + { GetCI4RGBA_RGBA5551, datatype::UNSIGNED_SHORT_5_5_5_1, internalcolor::RGB5_A1, GetCI4RGBA_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGB5_A1, 4, 4096 }, // I as CI + }, + { // 8-bit + { GetCI8RGBA_RGBA5551, datatype::UNSIGNED_SHORT_5_5_5_1, internalcolor::RGB5_A1, GetCI8RGBA_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGB5_A1, 3, 2048 }, // RGBA + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA4, 0, 4096 }, // YUV + { GetCI8RGBA_RGBA5551, datatype::UNSIGNED_SHORT_5_5_5_1, internalcolor::RGB5_A1, GetCI8RGBA_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGB5_A1, 3, 2048 }, // CI + { GetCI8RGBA_RGBA5551, datatype::UNSIGNED_SHORT_5_5_5_1, internalcolor::RGB5_A1, GetCI8RGBA_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGB5_A1, 3, 2048 }, // IA as CI + { GetCI8RGBA_RGBA5551, datatype::UNSIGNED_SHORT_5_5_5_1, internalcolor::RGB5_A1, GetCI8RGBA_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGB5_A1, 3, 2048 }, // I as CI + }, + { // 16-bit + { GetCI16RGBA_RGBA5551, datatype::UNSIGNED_SHORT_5_5_5_1, internalcolor::RGB5_A1, GetRGBA5551_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGB5_A1, 2, 2048 }, // RGBA + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA4, 2, 2048 }, // YUV + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA4, 0, 2048 }, // CI + { GetCI16RGBA_RGBA5551, datatype::UNSIGNED_SHORT_5_5_5_1, internalcolor::RGB5_A1, GetCI16RGBA_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGB5_A1, 2, 2048 }, // IA as CI + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA4, 0, 2048 }, // I + }, + { // 32-bit + { GetRGBA8888_RGBA4444, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetRGBA8888_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA, 2, 1024 }, // RGBA + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA4, 0, 1024 }, // YUV + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA4, 0, 1024 }, // CI + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA4, 0, 1024 }, // IA + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA4, 0, 1024 }, // I + } + }, + // G_TT_IA16 + { // Get16 glType16 glInternalFormat16 Get32 glType32 glInternalFormat32 autoFormat + { // 4-bit + { GetCI4IA_RGBA4444, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetCI4IA_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA, 4, 4096 }, // IA + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA, 4, 8192 }, // YUV + { GetCI4IA_RGBA4444, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetCI4IA_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA, 4, 4096 }, // CI + { GetCI4IA_RGBA4444, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetCI4IA_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA, 4, 4096 }, // IA + { GetCI4IA_RGBA4444, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetCI4IA_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA, 4, 4096 }, // I + }, + { // 8-bit + { GetCI8IA_RGBA4444, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetCI8IA_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA, 3, 2048 }, // RGBA + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA, 0, 4096 }, // YUV + { GetCI8IA_RGBA4444, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetCI8IA_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA, 3, 2048 }, // CI + { GetCI8IA_RGBA4444, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetCI8IA_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA, 3, 2048 }, // IA + { GetCI8IA_RGBA4444, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetCI8IA_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA, 3, 2048 }, // I + }, + { // 16-bit + { GetCI16IA_RGBA4444, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetCI16IA_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA, 2, 2048 }, // RGBA + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA, 2, 2048 }, // YUV + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA, 0, 2048 }, // CI + { GetCI16IA_RGBA4444, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetCI16IA_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA, 2, 2048 }, // IA + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA, 0, 2048 }, // I + }, + { // 32-bit + { GetRGBA8888_RGBA4444, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetRGBA8888_RGBA8888, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA, 2, 1024 }, // RGBA + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA, 0, 1024 }, // YUV + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA, 0, 1024 }, // CI + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA, 0, 1024 }, // IA + { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA, 0, 1024 }, // I + } + } +}; + +struct ImageFormat { + ImageFormat(); + + TextureLoadParameters tlp[4][4][5]; + + static ImageFormat & get() { + static ImageFormat imageFmt; + return imageFmt; + } +}; + +#ifdef OS_WINDOWS +ImageFormat::ImageFormat() +{ + memcpy(tlp, imageFormat, sizeof(tlp)); +} +#else +ImageFormat::ImageFormat() : lp( { // G_TT_NONE { // Get16 glType16 glInternalFormat16 Get32 glType32 glInternalFormat32 autoFormat { // 4-bit @@ -396,7 +540,8 @@ const struct TextureLoadParameters { GetNone, datatype::UNSIGNED_SHORT_4_4_4_4, internalcolor::RGBA4, GetNone, datatype::UNSIGNED_BYTE, internalcolor::RGBA, internalcolor::RGBA, 0, 1024 }, // I } } -}; +}) {} +#endif /** cite from RiceVideo */ inline u32 CalculateDXT(u32 txl2words) @@ -604,7 +749,8 @@ void _calcTileSizes(u32 _t, TileSizes & _sizes, gDPTile * _pLoadTile) { gDPTile * pTile = _t < 2 ? gSP.textureTile[_t] : &gDP.tiles[_t]; - const TextureLoadParameters & loadParams = imageFormat[gDP.otherMode.textureLUT][pTile->size][pTile->format]; + const TextureLoadParameters & loadParams = + ImageFormat::get().tlp[gDP.otherMode.textureLUT][pTile->size][pTile->format]; const u32 maxTexels = loadParams.maxTexels; const u32 tileWidth = ((pTile->lrs - pTile->uls) & 0x03FF) + 1; const u32 tileHeight = ((pTile->lrt - pTile->ult) & 0x03FF) + 1; @@ -787,7 +933,8 @@ void TextureCache::_loadBackground(CachedTexture *pTexture) Parameter glInternalFormat; Parameter glType; - const TextureLoadParameters & loadParams = imageFormat[pTexture->format == 2 ? G_TT_RGBA16 : G_TT_NONE][pTexture->size][pTexture->format]; + const TextureLoadParameters & loadParams = + ImageFormat::get().tlp[pTexture->format == 2 ? G_TT_RGBA16 : G_TT_NONE][pTexture->size][pTexture->format]; if (loadParams.autoFormat == internalcolor::RGBA) { pTexture->textureBytes = (pTexture->realWidth * pTexture->realHeight) << 2; GetTexel = loadParams.Get32; @@ -1097,7 +1244,8 @@ void TextureCache::_load(u32 _tile, CachedTexture *_pTexture) Parameter glType; u32 sizeShift; - const TextureLoadParameters & loadParams = imageFormat[gDP.otherMode.textureLUT][_pTexture->size][_pTexture->format]; + const TextureLoadParameters & loadParams = + ImageFormat::get().tlp[gDP.otherMode.textureLUT][_pTexture->size][_pTexture->format]; if (loadParams.autoFormat == internalcolor::RGBA) { sizeShift = 2; _pTexture->textureBytes = (_pTexture->realWidth * _pTexture->realHeight) << sizeShift;