Friday at 10:20 PM3 days Localization HiHere is some files from pain ps3https://www.dropbox.com/scl/fi/3ewdo0gpj9x6bf0o0eyfr/Pain-Ps3-game.rar?rlkey=oi7unkbw2xjd9fz05dwhgj5q8&st=9rdjfgd5&dl=0https://www.dropbox.com/scl/fi/vcctp9fxvnlmtx3kuzqty/Elvira.rar?rlkey=h2w4mmi6re6dyweyd9rvd17jr&st=fg76cxfk&dl=0<link removed>Can somebody try to make a blender plug-in or a Noesis plug-inThanks 🙂 Edited Friday at 11:15 PM3 days by DKDave Full ISO link removed
Saturday at 09:48 AM3 days Supporter Here's code for decompression. You can decompress it with qbms.//------------------------------------------------ //--- 010 Editor v14.0 Binary Template // // File: // Authors: // Version: // Purpose: // Category: // File Mask: // ID Bytes: // History: //------------------------------------------------ BigEndian();OutputPaneClear(); local uint32 i; char SegsSign[4]; uint16 Unknown_0; uint16 ChunkCount; uint32 DecompressedSize; uint32 FileSize; struct { uint16 ChunkCompSize; uint16 ChunkDecompSize; // if 0 = 65536 uint32 ChunkOffset; }ChunkToc[ChunkCount]; for (i=0; i < ChunkCount; i++) { FSeek(ChunkToc[i].ChunkOffset - 1); struct { byte ChunkCompData[ChunkToc[i].ChunkCompSize]; }ChunkData; }So here's decompressor. Now it should unpack both of them.############################## get BaseFileName basename get FileSize asize get FileExtension extension comtype deflate endian big if FileExtension == "rsx" getdstring Dummy 0x8 get SegsCount ushort getdstring Dummy 0xE for i = 0 < SegsCount get SegsCompressedSize[i] uint32 next i for i = 0 < SegsCount savepos SegsBaseOffset idstring "segs" getdstring Dummy 0x2 get ChunkCount ushort get TotalDecompressedSize uint32 get FileSize uint32 for j = 0 < ChunkCount get ChunkCompSize ushort get ChunkDecompressedSize ushort get ChunkOffset uint32 xmath ChunkOffset "SegsBaseOffset + ChunkOffset - 1" append 0 string Name p "%s.%s_d" BaseFileName FileExtension if ChunkDecompressedSize == 0 clog Name ChunkOffset ChunkCompSize 65536 else clog Name ChunkOffset ChunkCompSize ChunkDecompressedSize endif next j goto SegsBaseOffset getdstring Dummy SegsCompressedSize[i] next i else idstring "segs" getdstring Dummy 0x2 get ChunkCount ushort get TotalDecompressedSize uint32 get FileSize uint32 for i = 0 < ChunkCount get ChunkCompSize ushort get ChunkDecompressedSize ushort get ChunkOffset uint32 math ChunkOffset - 1 append 0 string Name p "%s.%s_d" BaseFileName FileExtension if ChunkDecompressedSize == 0 clog Name ChunkOffset ChunkCompSize 65536 else clog Name ChunkOffset ChunkCompSize ChunkDecompressedSize endif next i endif Edited 4 hours ago4 hr by h3x3r
Saturday at 03:02 PM3 days Supporter Thanks, works for .chl files. For .rsx the first 32 bytes need to be deleted, tested with Elvira_Swimsiut.rsx, but it has another segs block... texture obviouslyedit: the model from from Elvira.rsx, decompressed, looks a bit strange: Edited Saturday at 03:51 PM3 days by shak-otay
11 hours ago11 hr Supporter On 7/11/2026 at 5:02 PM, shak-otay said:For .rsx the first 32 bytes need to be deletedI wouldn't recomend that because it's important. And thanks for telling me that. Looks like those 32 bytes holds info about segs count and offsets.EDiT: Updated previous post with bms script. Now it decompress rsx.But i think that segs should be joined. I output them as separate. Edited 5 hours ago5 hr by h3x3r
Create an account or sign in to comment