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.

Image

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.