Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Wwise packages (PCK)
- # Script for QuickBMS: https://aluigi.altervista.org/quickbms.htm
- idstring "AKPK"
- # Detect endianness.
- goto 0x08
- get TEST long
- endian guess TEST
- goto 0x04
- get HEADER_SIZE long
- get FLAG long
- get SEC1_SIZE long # Languages
- get SEC2_SIZE long # Banks
- get SEC3_SIZE long # Sounds
- xmath SUM "SEC1_SIZE + SEC2_SIZE + SEC3_SIZE + 0x10"
- if SUM == HEADER_SIZE
- # Initial version.
- math VERSION = 1
- else
- # 2012 revision which added the fourth section and changed file size from 64-bit to 32-bit.
- math VERSION = 2
- get SEC4_SIZE long
- endif
- savepos SEC1_OFF
- callfunction PARSE_LANGUAGES 1
- xmath SEC2_OFF "SEC1_OFF + SEC1_SIZE"
- goto SEC2_OFF
- # Extract banks.
- set EXT string "bnk"
- callfunction PARSE_TABLE 1
- # Extract sounds.
- set EXT string "wem"
- callfunction PARSE_TABLE 1
- startfunction PARSE_LANGUAGES
- get LANGS long
- for i = 0 < LANGS
- get NAME_OFFSET long
- get ID long
- savepos PREV_OFF
- math NAME_OFFSET + SEC1_OFF
- goto NAME_OFFSET
- get LANG_NAME string
- strlen NAME_LEN LANG_NAME
- # Language names may be stored as UTF-16 or UTF-8 depending on the platform.
- # Lame UTF-16 detection.
- if NAME_LEN < 2
- goto NAME_OFFSET
- get LANG_NAME unicode
- endif
- putarray 0 ID LANG_NAME
- goto PREV_OFF
- next i
- endfunction
- startfunction PARSE_TABLE
- get FILES long
- for i = 0 < FILES
- get ID long
- get MULT long
- if VERSION == 1
- get SIZE longlong
- else
- get SIZE long
- endif
- get OFFSET long
- get LANG long
- if MULT != 0
- math OFFSET * MULT
- endif
- getarray LANG_NAME 0 LANG
- if LANG_NAME != "sfx"
- string NAME p "%s/%u.%s" LANG_NAME ID EXT
- else
- string NAME p "%u.%s" ID EXT
- endif
- log NAME OFFSET SIZE
- next i
- endfunction
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement