Members lorak Posted June 6 Members Posted June 6 The attachment has two folders, one with sample textures from MLBTS 22 PS4 and the other one with textures from MLBTS 25 Switch. In both cases, the texture files are in txt files. I assume that all those textures are compressed as I cannot see any reasonable shape in texture finders. Hopefully some of you can help me to extract these textures from those two systems. MLB The Show PS4-Switch.zip
piken Posted July 1 Posted July 1 Looks like multiple textures with some records in the header that are 352 bytes wide. e.g. UNIFORM.TEX: I agree it looks like the .TEX files uses some variable length compression. The "GLOVEINFIELDER_L01.0.PS4" is interesting with 16-byte blocks, but none of the usual BC* formats are turning up anything recognizable.
Members lorak Posted July 2 Author Members Posted July 2 (edited) On 7/1/2025 at 12:45 AM, piken said: Looks like multiple textures with some records in the header that are 352 bytes wide. e.g. UNIFORM.TEX: I agree it looks like the .TEX files uses some variable length compression. I agree, the length of header of the Switch files seems to be 0x160 (352) bytes. By the way, in the header of the Nintendo Switch files we find the following in little endian: offset 0x10 File size, minus header size (0x2720 bytes for the Switch version). offset 0x14 Number of files. Inside each texture header, move 0x144 bytes from the start of the header to find the offset of the texture itself. For example, for "jersey-color" go to offset 0x173 and for "numbers-color" go to offset 0x854 to find 0x2720 and 0x1f9a0. Those offsets tell us where each data texture starts respectively. For the PS4 files, all this information should be located in another place. The problem is to decompress those textures. On 7/1/2025 at 12:45 AM, piken said: The "GLOVEINFIELDER_L01.0.PS4" is interesting with 16-byte blocks, but none of the usual BC* formats are turning up anything recognizable. This file seems to be the 3D model for the glove infielder not a texture. Edited July 4 by lorak 1
Engineers Solution h3x3r Posted July 9 Engineers Solution Posted July 9 (edited) Detected PS4 format compression LZ4 + PS4 swizzle. Used comp type scan. I will try to write bms. Here's some info. //------------------------------------------------ //--- 010 Editor v14.0 Binary Template // // File: // Authors: // Version: // Purpose: // Category: // File Mask: // ID Bytes: // History: //------------------------------------------------ local uint32 i; char Sign[8]; uint32 Unknown_0; uint32 Unknown_1; char Platform[4]; uint32 TextureCount; uint32 Unknown_2; uint32 UnknownCount; uint32 TotalCompressedSize; uint32 TotalDecompressedSize; uint32 Unknown_6; uint32 Unknown_7; struct { char TextureName[64]; uint32 Unknown_0[4]; uint32 CompressedSize; uint32 Offset; // + BaseOffset uint32 Unknown_3; uint32 DecompressdSize; uint16 Unknown_4; uint16 Unknown_5; uint32 Unknown_6; uint32 Unknown_7; uint32 Unknown_8; uint16 TextureWidth; uint16 TextureHeight; uint32 Unknown_9; uint16 PixelFormat; uint16 Unknown_10; uint32 Unknown_11; ubyte Unknown_12[4]; uint32 Unknown_13; uint16 Unknown_14; uint16 Unknown_15; uint32 Unknown_16; uint32 Null[4]; }BlockInfo[TextureCount]<optimize=false>; struct { uint32 Unknown_0; uint32 Unknown_1; uint32 Unknown_2; uint32 Unknown_3; uint16 Unknown_4; uint16 Unknown_5; uint32 Unknown_6; uint32 Unknown_7; uint32 Unknown_8; uint32 Unknown_9; uint32 Unknown_10; }UnknownInfo[UnknownCount]<optimize=false>; local uint32 BaseOffset=FTell(); for (i=0; i < TextureCount; i++) { FSeek(BaseOffset + BlockInfo[i].Offset); struct { byte CompressedData[BlockInfo[i].CompressedSize]; }LZ4CompressedData; } I am too lazy write bms. Edited July 9 by h3x3r 2
Members lorak Posted July 28 Author Members Posted July 28 On 7/9/2025 at 9:30 AM, h3x3r said: Detected PS4 format compression LZ4 + PS4 swizzle. Used comp type scan. I will try to write bms. Here's some info. I am too lazy write bms. Thanks for sharing this info, I just reading your message. Did you check the Nintendo Switch textures too?
Engineers h3x3r Posted July 28 Engineers Posted July 28 (edited) Yes but it's terrible compared to ps4. Still investigating... EDiT: Well compression is same, LZ4 at switch + switch swizzle. Here's template for switch version. //------------------------------------------------ //--- 010 Editor v14.0 Binary Template // // File: // Authors: // Version: // Purpose: // Category: // File Mask: // ID Bytes: // History: //------------------------------------------------ local uint32 i; char Sign[8]; uint32 Version; uint32 TotalCompressedSize; uint32 TotalDecompressedSize; uint32 TextureCount; uint32 UnknownInfoSize; uint32 Unknown_0; uint32 Checksum<format=hex>; uint32 Unknown_1; uint32 Unknown_2; uint32 Unknown_3; struct { char TextureName[64]; struct { uint32 Unknown_0[4]; uint32 TextureSize; uint16 TextureWidth; uint16 TextureHeight; uint16 Unknown_1; uint16 Unknown_2; uint32 MipMaps; }TextureInfo[3]<optimize=false>; byte Null_0[32]; uint32 DecompressedChunk_0_Size; uint32 CompressedChunk_0_Size; byte Null_1[8]; ubyte Unknown_0; ubyte Unknown_1; ubyte Unknown_2; ubyte Unknown_3; uint32 DecompressedChunk_1_Size; uint32 CompressedChunk_1_Size; uint32 CompressedChunk_1_Offset; // + Offset uint32 Unknown_4; uint32 Unknown_5; uint32 DecompressedChunk_2_Size; uint32 CompressedChunk_2_Size; uint32 CompressedChunk_2_Offset; // + Offset uint32 Unknown_6; uint32 Unknown_7; uint32 Unknown_8; uint32 Unknown_9; uint32 Unknown_10; uint32 Unknown_11; uint32 Unknown_12; uint32 Unknown_13; uint32 Unknown_14; uint32 Unknown_15; byte Null_2[36]; uint32 Unknown_16; uint32 Offset; uint32 Unknown_17; uint32 Unknown_18; uint32 Unknown_19; uint32 Unknown_20; uint32 Unknown_21; uint32 Unknown_22; }BufferInfo[TextureCount]<optimize=false>; struct { uint32 Count,Size; byte Unknown[Size-8]; }UnknownInfo; Not sure where is PixelFormat variable. Edited July 29 by h3x3r 1
Members lorak Posted July 31 Author Members Posted July 31 (edited) On 7/28/2025 at 9:51 AM, h3x3r said: Yes but it's terrible compared to ps4. Still investigating... EDiT: Well compression is same, LZ4 at switch + switch swizzle. Here's template for switch version. Many, many thanks. Edited July 31 by lorak
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now