It extract dds data but can't add dds header yet.
sample https://www.sendspace.com/file/u72dkx
Code: Select all
endian big
goto 0x10
get Header_SIZE long
xmath base_off "Header_SIZE + 0x64"
xmath file_num_off "Header_SIZE - 0x10"
goto file_num_off
get files long
goto 0x28
get names_jump long
xmath noff "names_jump + 0x81"
for i = 0 < files
goto noff
get name string
strlen namesz name
if name = "Page0"
xmath noff "noff + 0xC"
goto noff
get name string
string name += ".dds"
savepos noff
else
string name += ".dds"
savepos noff
endif
goto base_off
get SIZE long
get UNK1 long
get UNK2 long
get WIDTH short
get HEIGHT short
savepos tmp
xmath OFFSET "tmp + 0x38"
log name OFFSET SIZE
xmath base_off "OFFSET + SIZE + 0x50"
next i
How can I use callfunction to add dds header?
Code: Select all
callfunction addDDSheader
startfunction addDDSheader
endian little
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\x35\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 0x10 WIDTH long
putVarChr MEMORY_FILE 0xC HEIGHT long
endian big
append
log MEMORY_FILE OFFSET SIZE
append
endfunction