# Devil May Cry 4 / Dead Rising 360 / Resident Evil 5 / Capcom ARC files (script 0.1.3)
# script for QuickBMS http://aluigi.org/papers.htm#quickbms
quickbmsver 0.3.13
set HFS long 0
set BASE_OFF long 0
get SIGN long
if SIGN == 0x00534648 # " SFH"
endian big
set HFS long 1
elif SIGN == 0x48465300 # "HFS "
endian little
set HFS long 1
endif
if HFS != 0
get DUMMY short
get TYPE short
if TYPE == 0
set BASE_OFF long 0x20000
else
set BASE_OFF long 0x10
endif
goto BASE_OFF
get SIGN long
endif
if SIGN == 0x00435241 # " CRA"
endian little
elif SIGN == 0x41524300 # "ARC "
endian big
else
cleanexit
endif
get VERSION short
if VERSION == 4
comtype zlib
elif VERSION == 8
set TYPE2 ".ps3"
comtype deflate
elif VERSION == 0x11
set TYPE2 ".360"
comtype XMemDecompress 0x8000 # yeah 0x8000 is the "magic" for RE5
else
comtype zlib
print "unknown version %VERSION%, I try zlib compression"
endif
get FILES short
for i = 0 < FILES
getdstring NAME 0x40
string name + TYPE2
get TYPE long
get ZSIZE long
get SIZE long
get OFFSET long
print %TYPE%
if TYPE == 606035435
string name + .TEX
elif TYPE == 1486968918
string name + .DOM
elif TYPE == 659146920
string name + .MRL
elif TYPE == 1988234625
string name + .LMT
elif TYPE == 329180445
string name + .LMT
else
string name + .
string name + TYPE
print "unknown TYPE %TYPE%, let me know what it is"
endif
if SIZE & 0x40000000
math SIZE -= 0x40000000
endif
if HFS != 0 # used in RE5 PS3
math ZSIZE += 32
#math SIZE /= 8
math TMP = OFFSET
math TMP /= 0x20000
math TMP *= 0x10
math ZSIZE += TMP
math SIZE += TMP
math OFFSET += TMP
math OFFSET += 2
endif
math OFFSET += BASE_OFF # needed for HFS header
clog NAME OFFSET ZSIZE SIZE
next i
Models coming soon
You do not have the required permissions to view the files attached to this post.
I have to make a max script for the models to import into 3ds max i am working on bones and weights.
The source code for quickbms is freely available to see what that command does.
Noesis opens those models now with v3.2. Although there are various issues. Can't find the texture index for the materials (although the materials are correctly mapped), and I think pointweighting still has issues with > 2 weights. Haven't had a lot of time to look at it (and I'm about to take off again for the day), so hopefully chrrox or revelation can make some progress from my code.