Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Electronic Arts - IDX/BIG files, essentially a pack of HDR/DAT compiled into one file.
- # Script for QuickBMS: https://aluigi.altervista.org/quickbms.htm
- open FDDE "IDX" 0
- open FDDE "BIG" 1
- get DUMMY long
- endian guess DUMMY
- endian save CUR_ENDIAN
- get SECTIONS long
- goto 0x50
- get DUMMY long
- get SECTIONS long
- get BNAME basename
- for i = 0 < SECTIONS
- get HDR_IDX long
- get HDR_SIZE long
- get HDR_OFFSET long
- get BASE_OFF long
- # Get HDR header.
- log MEMORY_FILE HDR_OFFSET HDR_SIZE
- get HASH short MEMORY_FILE
- get SUBID short MEMORY_FILE
- get USERDATA_SIZE byte MEMORY_FILE
- math USERDATA_SIZE & 0x0F
- get FILES byte MEMORY_FILE
- get DUMMY byte MEMORY_FILE
- get OFF_FLAG byte MEMORY_FILE
- xmath OFF_MULT "OFF_FLAG * 0x0100 + 0x0100"
- goto 0x0C MEMORY_FILE
- if SUBID != 0xFFFF
- string PATH p "%04x/%02d" HASH SUBID
- else
- string PATH p "%04x" HASH
- endif
- set NAME PATH
- string NAME + ".hdr"
- log NAME HDR_OFFSET HDR_SIZE
- set TOTAL_SIZE long 0
- endian big
- for j = 0 < FILES
- get OFFSET short MEMORY_FILE
- goto USERDATA_SIZE MEMORY_FILE SEEK_CUR
- math OFFSET * OFF_MULT
- math OFFSET + BASE_OFF
- goto OFFSET 1
- # Find SCEl block (end marker)
- endian little
- do
- get BLOCKID long 1
- get BLOCKSIZE long 1
- math BLOCKSIZE - 8
- goto BLOCKSIZE 1 SEEK_CUR
- while BLOCKID != 0x6C454353 # SCEl
- endian big
- padding OFF_MULT 1 BASE_OFF
- savepos SIZE 1
- math SIZE - OFFSET
- math TOTAL_SIZE + SIZE
- next j
- endian set CUR_ENDIAN
- set NAME PATH
- string NAME + ".dat"
- log NAME BASE_OFF TOTAL_SIZE 1
- next i
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement