July 10Jul 10 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 July 10Jul 10 by DKDave Full ISO link removed
July 11Jul 11 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 July 14Jul 14 by h3x3r
July 11Jul 11 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 July 11Jul 11 by shak-otay
July 14Jul 14 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 July 14Jul 14 by h3x3r
Create an account or sign in to comment