Alone In The Dark PC analyzation
Posted: Sat Feb 19, 2011 1:04 am
The contents of this post was deleted because of possible forum rules violation.
Code: Select all
IDString "XMBF"
Open FDDE big 1
Endian little
GetDString DUMMY 12
Get OFFS long
GoTo OFFS
Get NUMHASHES long
Get HASHOFFSET long
Math HASHOFFSET += OFFS
Get NUMFILEREC long
Get FILERECOFFSET long
Math FILERECOFFSET += OFFS
If NUMHASHES != NUMFILEREC
CleanExit
EndIf
For I = 0 < NUMHASHES
GoTo HASHOFFSET
Get HASH2 long
Get HASH1 long
String NAME p= "%08X%08X.bin" HASH1 HASH2
SavePos HASHOFFSET
GoTo FILERECOFFSET
Get FILESIZE longlong
Get DUMMY longlong # compressed size?
Get DUMMY longlong # uncompressed size?
Get FILEOFFSET longlong
SavePos FILERECOFFSET
Log NAME FILEOFFSET FILESIZE 1
Next IToday is that dayqwerty wrote:maybe someday...
Code: Select all
IDString "XMBF"
Open FDDE big 1
Endian little
GetDString DUMMY 12
Get OFFS long
GoTo OFFS
Get NUMHASHES long
Get HASHOFFSET long
Math HASHOFFSET += OFFS
Get NUMFILEREC long
Get FILERECOFFSET long
Math FILERECOFFSET += OFFS
If NUMHASHES != NUMFILEREC
CleanExit
EndIf
For I = 0 < NUMHASHES
GoTo HASHOFFSET
Get HASH2 long
Get HASH1 long
String NAME p= "%08X%08X.bnk" HASH1 HASH2
SavePos HASHOFFSET
GoTo FILERECOFFSET
Get FILESIZE longlong
Get DUMMY longlong # compressed size?
Get DUMMY longlong # uncompressed size?
Get FILEOFFSET longlong
SavePos FILERECOFFSET
#Log NAME FILEOFFSET FILESIZE 1
CallFunction UnpackFile
Next I
########################
StartFunction UnpackFile
Endian big
ComType lzo
Log MEMORY_FILE FILEOFFSET FILESIZE 1
GoTo 0x10 MEMORY_FILE
Get CHUNKSZ long MEMORY_FILE
Get FATOFFSET long MEMORY_FILE
Get ZDATAOFFSET long MEMORY_FILE
Get DUMMY long MEMORY_FILE
Get DATASIZE longlong MEMORY_FILE
Get ZDATASIZE longlong MEMORY_FILE
Get BUFFSIZE long MEMORY_FILE
Math BUFF = ZDATAOFFSET
Math BUFF += BUFFSIZE
Math NUMCHUNKS = ZDATAOFFSET
Math NUMCHUNKS -= FATOFFSET
Math NUMCHUNKS /= 4
Log MEMORY_FILE2 0 0
PutVarChr MEMORY_FILE2 DATASIZE 0
Log MEMORY_FILE2 0 0
Append
GoTo FATOFFSET MEMORY_FILE
For J = 0 < NUMCHUNKS
Get ZCHUNKSZ long MEMORY_FILE
Math ZDATAOFFSET += ZCHUNKSZ
If ZDATAOFFSET > BUFF
Math ZDATAOFFSET -= ZCHUNKSZ
Math ZDATAOFFSET x= 0x800
Math BUFF = ZDATAOFFSET
Math BUFF += BUFFSIZE
Else
Math ZDATAOFFSET -= ZCHUNKSZ
EndIf
If ZCHUNKSZ == 0
Break
ElseIf ZCHUNKSZ < CHUNKSZ
CLog MEMORY_FILE2 ZDATAOFFSET ZCHUNKSZ CHUNKSZ MEMORY_FILE
Else
Log MEMORY_FILE2 ZDATAOFFSET ZCHUNKSZ MEMORY_FILE
EndIf
Math ZCHUNKSZ x= 0x10
Math ZDATAOFFSET += ZCHUNKSZ
Next J
Append
Log NAME 0 DATASIZE MEMORY_FILE2
Endian little
EndFunction
########################Code: Select all
quickbms.exe -o tdu2_bnk.bms d:\input_folder_with_all_bnks d:\output_folderYes! just change the endianess to bigOrangeC wrote:any chance to support x360 version?
Code: Select all
IDString "XMBF"
Open FDDE big 1
Endian big
GetDString DUMMY 12
Get OFFS long
GoTo OFFS
Get NUMHASHES long
Get HASHOFFSET long
Math HASHOFFSET += OFFS
Get NUMFILEREC long
Get FILERECOFFSET long
Math FILERECOFFSET += OFFS
If NUMHASHES != NUMFILEREC
CleanExit
EndIf
For I = 0 < NUMHASHES
GoTo HASHOFFSET
Get HASH2 long
Get HASH1 long
String NAME p= "%08X%08X.bnk" HASH2 HASH1
SavePos HASHOFFSET
GoTo FILERECOFFSET
Get FILESIZE longlong
Get DUMMY longlong # compressed size?
Get DUMMY longlong # uncompressed size?
Get FILEOFFSET longlong
SavePos FILERECOFFSET
#Log NAME FILEOFFSET FILESIZE 1
CallFunction UnpackFile
Next I
########################
StartFunction UnpackFile
#Endian big
ComType lzo
Log MEMORY_FILE FILEOFFSET FILESIZE 1
GoTo 0x10 MEMORY_FILE
Get CHUNKSZ long MEMORY_FILE
Get FATOFFSET long MEMORY_FILE
Get ZDATAOFFSET long MEMORY_FILE
Get DUMMY long MEMORY_FILE
Get DATASIZE longlong MEMORY_FILE
Get ZDATASIZE longlong MEMORY_FILE
Get BUFFSIZE long MEMORY_FILE
Math BUFF = ZDATAOFFSET
Math BUFF += BUFFSIZE
Math NUMCHUNKS = ZDATAOFFSET
Math NUMCHUNKS -= FATOFFSET
Math NUMCHUNKS /= 4
Log MEMORY_FILE2 0 0
PutVarChr MEMORY_FILE2 DATASIZE 0
Log MEMORY_FILE2 0 0
Append
GoTo FATOFFSET MEMORY_FILE
For J = 0 < NUMCHUNKS
Get ZCHUNKSZ long MEMORY_FILE
Math ZDATAOFFSET += ZCHUNKSZ
If ZDATAOFFSET > BUFF
Math ZDATAOFFSET -= ZCHUNKSZ
Math ZDATAOFFSET x= 0x800
Math BUFF = ZDATAOFFSET
Math BUFF += BUFFSIZE
Else
Math ZDATAOFFSET -= ZCHUNKSZ
EndIf
If ZCHUNKSZ == 0
Break
ElseIf ZCHUNKSZ < CHUNKSZ
CLog MEMORY_FILE2 ZDATAOFFSET ZCHUNKSZ CHUNKSZ MEMORY_FILE
Else
Log MEMORY_FILE2 ZDATAOFFSET ZCHUNKSZ MEMORY_FILE
EndIf
Math ZCHUNKSZ x= 0x10
Math ZDATAOFFSET += ZCHUNKSZ
Next J
Append
Log NAME 0 DATASIZE MEMORY_FILE2
#Endian little
EndFunction
########################Code: Select all
Set FULLNAME string ""
Set NAME string ""
Log MEMORY_FILE 0 0
PutVarChr MEMORY_FILE 0 4 long
GetDString DUMMY 8
GetDString ID 4
If ID != "KNAB"
CleanExit
EndIf
GoTo 0x28
Get NUMFILES long
Get DUMMY long
Get FATOFFSET long
Math FATOFFSET += 8
Get DUMMY long
Get NAMESOFFSET long
Math NAMESOFFSET += 8
Get FILESORDER long
Math FILESORDER += 8
PutVarChr MEMORY_FILE 0 FILESORDER long
GoTo NAMESOFFSET
If NUMFILES != 0
CallFunction Parser
EndIf
StartFunction Parser
Get NAMESZ byte
If NAMESZ > 0x7F
String FULLNAME += NAME
String FULLNAME += \
Get FOLDERS byte
If FOLDERS > 0x7F
Get TMP byte
Math TMP < 7
Math FOLDERS & 0x0000007F
Math FOLDERS | TMP
# Print %FOLDERS%
EndIf
Math NAMESZ ^= 0xFF
Math NAMESZ += 1
GetDString NAME NAMESZ
For I = 0 < FOLDERS
CallFunction Parser
Next I
Else
GetDString BASENAME NAMESZ
String FULLNAME += BASENAME
String FULLNAME += NAME
# Print %FULLNAME%
SavePos NAMESOFFSET
GetVarChr FILESORDER MEMORY_FILE 0 long
GoTo FILESORDER
If NUMFILES > 0x100
Get FILENUMBER word
Else
Get FILENUMBER byte
EndIf
SavePos FILESORDER
PutVarChr MEMORY_FILE 0 FILESORDER long
Math FILENUMBER *= 0x14
Math FATOFFSET += FILENUMBER
GoTo FATOFFSET
Get OFFSET long
Get SIZE long
GetDString DUMMY 12
Log FULLNAME OFFSET SIZE
GoTo NAMESOFFSET
EndIf
EndFunction Parseryeah i would like to know this as well?NewHewkas wrote:Hi!
I'm new here, so i hope this is the right topic to ask.
I used your script on AITD 5's big files to .bnks then i extract them with the tdu2's script. Now, i have the files what i would like to have (the language files .lng), but how can I find the fonts, in which file(s)?
Can you help me, please?