Page 1 of 1
PS3 How to train your dragon 2 hunkfile
Posted: Tue Dec 23, 2014 8:30 pm
by PredatorCZ
Sup, Im not an archive guy and if I ever try it will take a long time.
Sample hir.
Would be happy if anyone make bms script for it.
Re: PS3 How to train your dragon 2 hunkfile
Posted: Tue Dec 23, 2014 11:02 pm
by merlinsvk
My guess for this file:
Little endian
offset 0x2DD
4 bytes (long) => width // maybe height
4 bytes (long) => height // maybe width
2 bytes (short) = > null
4 bytes (long) => texture length
4 bytes (long) => unknown
0x20000 bytes texture data
This sample file contains DXT1 512x512px texture without mipmaps.
Re: PS3 How to train your dragon 2 hunkfile
Posted: Fri Dec 18, 2015 8:03 pm
by PredatorCZ
Okay, so it will be year soon since I posted it, and still nothing, I have decided to use my noob skillz and create bms script, actually I just finished it.
I will add code for texture conversion soon, and maybye ms too.
Code: Select all
# How to train your dragon 2 hunk (HNK), Little Orbit
# Author Lukáš Kužel in 2015
# script for QuickBMS http://quickbms.aluigi.org
set curoff long 0
set size long 0
set curname string ""
get fsiz ASIZE
math fsiz -= 8
for i = 0 < fsiz
savepos Slump
get LumpLen long
get LumpID long
if LumpID == 0x40071
get unk11 short
get unk12 short
get unk13 short
get typelength short
get namelength short
getdstring TYPE typelength
getdstring curname namelength
string curname + "."
string curname + TYPE
elif LumpID == 0x40070
get blcount short
get unk22 short
get unk23 short
get unk24 short
get unk25 long
get usedblocks long
for i2 = 0 < blcount
getdstring name 64
get unk26 long // offset or size?
get unk27 long // identifier, last short from lumpid
next i2
elif LumpID == 0x40072
math size = Slump
math size -= curoff
log curname curoff size
//Print "Log %curname% %curoff% %size%"
math curoff = 0
elif curoff == 0
math curoff = Slump
goto LumpLen 0 SEEK_CUR
else
goto LumpLen 0 SEEK_CUR
endif
if fsiz == Slump
cleanexit
endif
next i
Re: PS3 How to train your dragon 2 hunkfile
Posted: Fri Dec 18, 2015 10:24 pm
by PredatorCZ
And we have texture conversion to dds.
Code: Select all
# How to train your dragon 2 Texture to dds (TSETexture), Little Orbit
# Author Lukáš Kužel in 2015
# script for QuickBMS http://quickbms.aluigi.org
get ddsname BASENAME
string ddsname + ".dds"
log MEMORY_FILE 0 0
Put 0x20534444 Long MEMORY_FILE
Put 0x7c long MEMORY_FILE
set flags long 7
math flags | 0x1000
math flags | 0x8
math flags | 0x800000
Put flags Long MEMORY_FILE
goto 8
get type byte
goto 19
get size1 short
get size2 short
goto 100
get size3 long
get lumpid long
Put size2 Long MEMORY_FILE
Put size1 Long MEMORY_FILE
Put 0 Long MEMORY_FILE
Put 1 Long MEMORY_FILE
Put 11 Long MEMORY_FILE // mipmaps
Put 0 Long MEMORY_FILE
Put 0 Long MEMORY_FILE
Put 0 Long MEMORY_FILE
Put 0 Long MEMORY_FILE
Put 0 Long MEMORY_FILE
Put 0 Long MEMORY_FILE
Put 0 Long MEMORY_FILE
Put 0 Long MEMORY_FILE
Put 0 Long MEMORY_FILE
Put 0 Long MEMORY_FILE
Put 0 Long MEMORY_FILE
Put 0x20 Long MEMORY_FILE
Put 5 Long MEMORY_FILE
if type == 0xa1
Put 0x31545844 Long MEMORY_FILE
else
Put 0x35545844 Long MEMORY_FILE
endif
Put 0 Long MEMORY_FILE
Put 0 Long MEMORY_FILE
Put 0 Long MEMORY_FILE
Put 0 Long MEMORY_FILE
Put 0 Long MEMORY_FILE
set pflags long 0x400000
math pflags | 0x1000
math pflags | 5
Put pflags Long MEMORY_FILE
Put 0 Long MEMORY_FILE
Put 0 Long MEMORY_FILE
Put 0 Long MEMORY_FILE
Put 0 Long MEMORY_FILE
set fsize 125
math fsize += size3
for i = 0 < size3
get tmp byte
Put tmp byte MEMORY_FILE
next i
goto 0 MEMORY_FILE
log ddsname 0 fsize MEMORY_FILE
Re: PS3 How to train your dragon 2 hunkfile
Posted: Fri Mar 11, 2022 9:06 am
by keybladegames
it doesn't work at all.