lorak Posted June 6 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.
lorak Posted July 2 Author 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 h3x3r Posted Wednesday at 03:30 PM Engineers Posted Wednesday at 03:30 PM (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 Wednesday at 04:49 PM by h3x3r 1
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