Hardland .PVR

Textures, recreate headers, conversions, algorithms and parsing of image files
makc_ar
Posts: 1193
Joined: Sun Aug 17, 2014 7:27 pm

Hardland .PVR

Post by makc_ar »

MerlinSVK
Posts: 165
Joined: Wed Aug 13, 2014 10:00 am

Re: Hardland .PVR

Post by MerlinSVK »

Code: Select all

# Hardland
# PVR to DDS converter
# by MerlinSVK    Oct 2014
# script for QuickBMS    http://aluigi.org/papers.htm#quickbms

set MEMORY_FILE binary "\x44\x44\x53\x20\x7C\x00\x00\x00\x0F\x10\x02\x00\xAA\xAA\xAA\xAA\xBB\xBB\xBB\xBB\xCC\xCC\xCC\xCC\x00\x00\x00\x00\xDD\xDD\xDD\xDD\x4D\x45\x52\x4C\x49\x4E\x3A\x29\x01\x00\x03\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\x41\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\xFF\x00\x00\x00\x00\xFF\x00\x00\x00\x00\xFF\x00\x00\x00\x00\xFF\x08\x10\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"

get NAME basename
string HNAME = NAME
string HNAME += ".flag"
string NAME += ".dds"

get FSIZE asize
goto 0x10
get FLAG long
log HNAME 0x10 4         # make a flag file used for DDS -> PVR conversion

goto 0x18
get HEIGHT long
get WIDTH long
goto 0x2C
get MIPS long

goto 0x34
savepos START

math DATASIZE = FSIZE
math DATASIZE -= 0x34

putVarChr MEMORY_FILE 0XC HEIGHT long
putVarChr MEMORY_FILE 0x10 WIDTH long
putVarChr MEMORY_FILE 0x14 DATASIZE long
putVarChr MEMORY_FILE 0x1C MIPS long

append
log MEMORY_FILE START DATASIZE
append

get DDSSIZE asize MEMORY_FILE
log NAME 0 DDSSIZE MEMORY_FILE



Code: Select all

# Hardland
# DDS to PVR converter
# by MerlinSVK    Oct 2014
# script for QuickBMS    http://aluigi.org/papers.htm#quickbms

set MEMORY_FILE binary "\x50\x56\x52\x03\x00\x00\x00\x00\x72\x67\x62\x61\x08\x08\x08\x08\x00\x00\x00\x00\x00\x00\x00\x00\xAA\xAA\xAA\xAA\xBB\xBB\xBB\xBB\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\xDD\xDD\xDD\xDD\x00\x00\x00\x00"

open FDDE DDS 0
open FDDE FLAG 1 FLAGFILE

get NAME basename 0

if FLAGFILE == 0
     print "%NAME%.flag file doesn't exist, quitting..."
    cleanexit
else
     get FLAG long 1
endif

string NAME += ".pvr_NEW"

goto 0xC
get HEIGHT long
get WIDTH long
get DATASIZE long
goto 0x1C
get MIPS long

append
log MEMORY_FILE 0x80 DATASIZE
append

putVarChr MEMORY_FILE 0x10 FLAG long
putVarChr MEMORY_FILE 0x18 HEIGHT long
putVarChr MEMORY_FILE 0x1C WIDTH long
putVarChr MEMORY_FILE 0x2C MIPS long

get PVRSIZE asize MEMORY_FILE
log NAME 0 PVRSIZE MEMORY_FILE