get idstring long
endian big
get files long
get arcsize long
get nameend long
get namestart long
get baseoff long
get version long
get null long
savepos filestart
print %filestart%
for i = 0 < files
goto filestart
getdstring hash 0x10
get offset long
math offset + baseoff
get size long
get null1 long
get null2 long
savepos filestart
goto namestart
get name string
savepos namestart
log name offset size
next i
Open FDDE p3igg 0
Open FDDE p3img 1
endian big
get idstring long 1
get unk long 1
get arcsize long 1
get null1 long 1
get baseoff long 1
getdstring unk01 0x14 1
get files long 1
get null long 1
get skip long 1
math skip + baseoff
goto skip 1
savepos filepos 1
for i = 0 < files
goto filepos 1
get nameoff long 1
get offset long 1
math nameoff + baseoff
get size long 1
get null long 1
get type byte 1
get unk021 byte 1
get unk022 byte 1
get unk023 byte 1
get unk03 long 1
get width1 byte 1
get width2 byte 1
get height1 byte 1
get height2 byte 1
getdstring null03 0x14 1
putVarChr MEMORY_FILE 0x11 width1 byte
putVarChr MEMORY_FILE 0x10 width2 byte
putVarChr MEMORY_FILE 0xD height1 byte
putVarChr MEMORY_FILE 0xC height2 byte
savepos filepos 1
goto nameoff 1
get name string 1
string name + ".dds"
callfunction addDDSheader
math SIZE + 0x80
log NAME 0 SIZE MEMORY_FILE
next i
startfunction addDDSheader
set MEMORY_FILE binary "\x44\x44\x53\x20\x7C\x00\x00\x00\x07\x10\x0A\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x05\x00\x00\x00\x44\x58\x54\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x10\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
putVarChr MEMORY_FILE 0x11 width1 byte
putVarChr MEMORY_FILE 0x10 width2 byte
putVarChr MEMORY_FILE 0xD height1 byte
putVarChr MEMORY_FILE 0xC height2 byte
if type == 136
putVarChr MEMORY_FILE 0x57 0x35
endif
if type == 135
putVarChr MEMORY_FILE 0x57 0x33
endif
if type == 134
putVarChr MEMORY_FILE 0x57 0x31
endif
append
log MEMORY_FILE OFFSET SIZE
append
endfunction
Chrrox, How did you open d00h.psarc.sdat? Do I need to rename it? I manage to extract d03b.psarc and d04b.psarc without a hitch, but they contain mostly sounds.
I'm stuck trying to figure out the other files that end with .sdat.
Any assistance is much appreciated.
I see, thank you Rick for pointing that out.
I read about decrsdat.cpp, v1 over at asmodean's.
Bummer! I really wanted to access and hopefully convert actual model and texture data with the scripts provided.
Sorry to revive such an old thread, but I kinda wish there were more guidelines on this process.
I've extracted the psarc file and have all the .hpk archives, but I'm at a loss how to use HPK Extractor
I've read Crypton's posts about the tool, but I still don't know how to use it to extract the assets
Sorry, I'm very noobish at this. (obviously)
I'm mainly focused on extracting the model files from the game...
quick instruction
1. launch QuickBMS.exe
2. select the script you want to run
3. select the file you want to process with the script
4. select the destination for processed files and done!