April 16Apr 16 Hello, I would like help extracting files with the correct names from the file OUT2.CAR. I can see a list with the paths and names in the file SLPS_254.40 (22C3A8), but I haven't found the offset or size to extract them. Here is the link to the files: https://mega.nz/folder/uYsgiYgR#kGVm9F9NGNfPBkKurdtHdQ. sorry about the size. I appreciate any help. Edited April 16Apr 16 by Reh
April 17Apr 17 Supporter Hello Reh, I split the out2.car from 0x3042000 to 0x8916640 (as an example), but with floats and an FVFsize of 64 there's soon a NAN, not-a-(float)number: (split block starts with offs 0 then, of course) # 0x74c8b0: verts= 500 v 0.758720 0.051729 1.000000 v 0.509014 0.051729 1.000000 v 0.758718 0.945331 1.000000 v 0.509014 0.945331 1.000000 v 0.758717 0.984665 1.000000 v 0.381963 0.971724 1.000000 v 0.258720 1.000000 1.000000 v 13.915825 0.055000 -30.631762 v 13.915825 0.866694 -30.631762 v 13.871824 0.055000 -30.675766 v 13.871824 0.866501 -30.675766 v 13.915825 0.055000 -30.719618 v 13.915825 0.866501 -30.719620 v 13.959826 0.055000 -30.675766 v 13.959826 0.866501 -30.675766 v 13.915825 0.055000 -30.631762 v 13.915825 0.866694 -30.631762 v 0.000000 nan 0.000000 v 0.991364 0.042016 -0.124226 v -0.000001 -0.702304 0.71187 edit: starting at 0x74C7A0 and replacing the "v 0.000000 nan 0.000000" lines by #v 0.000000 nan 0.000000 gives this: Edited April 17Apr 17 by shak-otay
April 18Apr 18 Supporter The struct is struct Out2Entry { u32 name_ptr; // pointer to path string s32 tag; // -2 normal, -3 special/sentinel u32 lsn_or_blk; // LSN/offset in blocks u32 sectors; // number of blocks u32 alloc_size; // always sectors * 0x800 u32 real_size; // actual file size u32 flags; // unknown };
April 18Apr 18 Supporter Let the SLPS in the same folder of out2.car and use this script below in quickbms selecting out2.car #Konjiki no Gashbell extractor by Rabatini open FDSE "SLPS_254.40" 1 get ARCHIVE_SIZE asize 0 get SLPS_SIZE asize 1 set BASE_LSN long 311 set VADDR_BASE long 0x247A80 set FILE_BASE long 0x148A80 set SCAN_START long 0x001000 math SCAN_END = SLPS_SIZE math SCAN_END - 0x1c set FOUND long 0 for POS = SCAN_START < SCAN_END goto POS 1 get NAME_PTR long 1 get TAG long 1 get LSN long 1 get SECTORS long 1 get ALLOC long 1 get SIZE long 1 get FLAGS long 1 if TAG == 0xFFFFFFFE math EXPECT = SECTORS math EXPECT * 0x800 if EXPECT == ALLOC if SIZE > 0 if SIZE <= ALLOC math OFFSET = LSN math OFFSET - BASE_LSN if OFFSET >= 0 math OFFSET * 0x800 math END_OFF = OFFSET math END_OFF + SIZE if END_OFF <= ARCHIVE_SIZE set DUP long 0 for J = 0 < FOUND getarray OLDLSN 0 J if OLDLSN == LSN set DUP long 1 break endif next J if DUP == 0 putarray 0 FOUND LSN math FOUND + 1 string NAME p= "files/%05d_%08x_%08x.bin" FOUND LSN SIZE # tenta resolver o nome pelo ponteiro da entrada math NAME_OFF = NAME_PTR math NAME_OFF - VADDR_BASE math NAME_OFF + FILE_BASE if NAME_OFF >= 0 if NAME_OFF < SLPS_SIZE goto NAME_OFF 1 getct TMP string 0x00 1 if TMP != "" string NAME = TMP endif endif endif log NAME OFFSET SIZE 0 endif endif endif endif endif endif endif # o for adiciona +1 no next, então aqui somamos +3 = passo real de 4 bytes math POS + 3 next POS Konjiki no Gashbell extractor by Rabatini.zip Edited April 18Apr 18 by Rabatini
April 18Apr 18 Supporter Thanks! Here's hahen-d.mdl (from bg\stg01): and bg_s18: Edited April 18Apr 18 by shak-otay
April 23Apr 23 Author On 4/17/2026 at 12:58 PM, shak-otay said: Hello Reh, Hello shak-otay 😄 These PS2 formats are always a headache XD
April 23Apr 23 Author On 4/17/2026 at 10:42 PM, Rabatini said: Let the SLPS in the same folder of out2.car and use this script below in quickbms selecting out2.car #Konjiki no Gashbell extractor by Rabatini open FDSE "SLPS_254.40" 1 get ARCHIVE_SIZE asize 0 get SLPS_SIZE asize 1 set BASE_LSN long 311 set VADDR_BASE long 0x247A80 set FILE_BASE long 0x148A80 set SCAN_START long 0x001000 math SCAN_END = SLPS_SIZE math SCAN_END - 0x1c set FOUND long 0 for POS = SCAN_START < SCAN_END goto POS 1 get NAME_PTR long 1 get TAG long 1 get LSN long 1 get SECTORS long 1 get ALLOC long 1 get SIZE long 1 get FLAGS long 1 if TAG == 0xFFFFFFFE math EXPECT = SECTORS math EXPECT * 0x800 if EXPECT == ALLOC if SIZE > 0 if SIZE <= ALLOC math OFFSET = LSN math OFFSET - BASE_LSN if OFFSET >= 0 math OFFSET * 0x800 math END_OFF = OFFSET math END_OFF + SIZE if END_OFF <= ARCHIVE_SIZE set DUP long 0 for J = 0 < FOUND getarray OLDLSN 0 J if OLDLSN == LSN set DUP long 1 break endif next J if DUP == 0 putarray 0 FOUND LSN math FOUND + 1 string NAME p= "files/%05d_%08x_%08x.bin" FOUND LSN SIZE # tenta resolver o nome pelo ponteiro da entrada math NAME_OFF = NAME_PTR math NAME_OFF - VADDR_BASE math NAME_OFF + FILE_BASE if NAME_OFF >= 0 if NAME_OFF < SLPS_SIZE goto NAME_OFF 1 getct TMP string 0x00 1 if TMP != "" string NAME = TMP endif endif endif log NAME OFFSET SIZE 0 endif endif endif endif endif endif endif # o for adiciona +1 no next, então aqui somamos +3 = passo real de 4 bytes math POS + 3 next POS Konjiki no Gashbell extractor by Rabatini.zip 1007 B · 2 downloads Thanks for the script Rabatini, but the file headers don't look right, por example, .mdl files should start with MDL4, and some images also have missing data. In any case, I am very grateful for the help and time you dedicated to assisting me. Thank you all very much.
April 23Apr 23 Supporter 3 minutes ago, Reh said: Hello shak-otay 😄 These PS2 formats are always a headache XD Hi, if it's about the automatic creation of faces: Nenkai solved it generally for PS2, afaik. But I haven't had the time to check his code yet.
April 23Apr 23 Author 2 hours ago, shak-otay said: Hi, if it's about the automatic creation of faces: Nenkai solved it generally for PS2, afaik. But I haven't had the time to check his code yet. That would be a great help. Could you tell me what the Nenkai script is so I can take a look? Edited April 23Apr 23 by Reh
April 23Apr 23 Supporter 4 hours ago, Reh said: Could you tell me what the Nenkai script is... That's the problem - if I could remember I would have given the link. I fear you'll need to search for yourself. My best bet is that I was checking the links in this post. (I have a picture in mind of one of his solutions here on ResHax, parallel blocks of buildings, but I can't seem to find it any more.) edit: was before 16th of August 2025 coming closer Edited April 23Apr 23 by shak-otay
Create an account or sign in to comment