Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- idstring 0 "MES2"
- get NAME basename 0
- endian little
- get DUMMY short 0
- get NUMBER_DAT_FILES byte 0
- get DUMMY long 0
- get EOF_OFFSET long 0
- comtype ZLIB
- endian big
- get NEXTBLOCK_TYPE short 0
- if NEXTBLOCK_TYPE == 0
- print %NEXTBLOCK_TYPE%
- get DUMMY short 0
- get BLOCK_SZ long 0
- goto BLOCK_SZ 0 SEEK_CUR
- get BLOCK_SZ long 0
- goto BLOCK_SZ 0 SEEK_CUR
- goto 0x02 0 SEEK_CUR
- endif
- goto 0x08 0 SEEK_CUR #unknown part
- get FILECOUNT long 0
- goto 0x4 0 SEEK_CUR #2nd file count
- get BLOCK_SZ long 0 #block 1 size
- get BLOCK_ZSZ long 0 #block 1 compressed size
- savepos OFFSET 0
- clog MEMORY_FILE OFFSET BLOCK_ZSZ BLOCK_SZ 0
- goto BLOCK_ZSZ 0 SEEK_CUR #skip zlib block
- get BLOCK_SZ long 0 #block 2 size
- get BLOCK_ZSZ long 0 #block 2 compressed size
- savepos OFFSET 0
- clog MEMORY_FILE2 OFFSET BLOCK_ZSZ BLOCK_SZ 0
- goto BLOCK_ZSZ 0 SEEK_CUR #skip zlib block
- get BLOCK_SZ long 0 #block 3 size
- get BLOCK_ZSZ long 0 #block 3 compressed size
- savepos OFFSET 0
- clog MEMORY_FILE3 OFFSET BLOCK_ZSZ BLOCK_SZ 0
- goto BLOCK_ZSZ 0 SEEK_CUR #skip zlib block
- savepos OFFSET 0
- ###################################### EXTRACTION ######################################
- endian little
- for i = 0 < FILECOUNT
- get FILE_NUMBER long MEMORY_FILE2
- get UNKNOWN long MEMORY_FILE2 # unknown
- get FILE_SZ long MEMORY_FILE3
- get FILE_ZSZ long MEMORY_FILE3
- get FILE_NAME_HASH long MEMORY_FILE3
- get FILE_OFFSET long MEMORY_FILE3
- get FILE_COMTYPE byte MEMORY_FILE3 # 0 = no compression, 1 = zlib, 2 = snappy
- get FILE_ARCHIVE_NUM byte MEMORY_FILE3
- get DUMMY short MEMORY_FILE3 # unknown
- if FILE_ARCHIVE_NUM < 204
- string ARCHIVE_NAME p= "%s%04d.dat" NAME FILE_ARCHIVE_NUM
- open FDSE ARCHIVE_NAME 1
- set UNKNOWN long FILE_OFFSET
- if FILE_COMTYPE == 0
- math UNKNOWN += FILE_SZ
- else
- math UNKNOWN += FILE_ZSZ
- endif
- get ARCHIVE_SZ asize 1
- if UNKNOWN < ARCHIVE_SZ
- string FILE_NAME = "__"
- string FILE_NAME += FILE_NUMBER
- if FILE_COMTYPE == 0
- log MEMORY_FILE4 FILE_OFFSET FILE_SZ 1
- elif FILE_COMTYPE == 1
- comtype ZLIB_NOERROR
- clog MEMORY_FILE4 FILE_OFFSET FILE_ZSZ FILE_SZ 1
- elif FILE_COMTYPE == 2
- comtype SNAPPY
- clog MEMORY_FILE4 FILE_OFFSET FILE_ZSZ FILE_SZ 1
- endif
- get FILE_SZ asize MEMORY_FILE4
- if FILE_SZ > 20
- getdstring FILETYPE 3 MEMORY_FILE4
- # print %FILETYPE%
- if FILETYPE ^ "RIF"
- goto 0x14 MEMORY_FILE4 SEEK_SET
- get WAVE_TYPE short MEMORY_FILE4
- string FILE_NAME += "."
- string FILE_NAME += FILE_ARCHIVE_NUM
- string FILE_NAME += "."
- string FILE_NAME += WAVE_TYPE
- string FILE_NAME += ".wav"
- log FILE_NAME 0 FILE_SZ MEMORY_FILE4
- elif FILETYPE ^ "ZOS"
- string FILE_NAME += "."
- string FILE_NAME += FILE_ARCHIVE_NUM
- string FILE_NAME += ".zosft"
- log FILE_NAME 0 FILE_SZ MEMORY_FILE4
- endif
- endif
- endif
- endif
- next i
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement