# NHL 2K10 0xaa00b3bf # script for QuickBMS http://quickbms.aluigi.org # copy pasted from nhl_2k11.bms endian big idstring "\xaa\x00\xb3\xbf" get ALIGN long get ARCHIVES long get ZERO long get FILES long get ZERO long # guess the size of the archive names: 4 or 32 utf16 characters # unfortunatley there is no version or flag, we must guess the 3 or more formats available savepos TMP2 get ARCHIVE_SIZE long get ZERO long savepos TMP get NAME unicode savepos i math i - TMP for i = i < 0x40 get TMP short if TMP != 0 break endif next i + 2 math NAMESZ = 8 goto TMP2 for i = 0 < ARCHIVES get ARCHIVE_SIZE long math ARCHIVE_SIZE >> 1 get ZERO long getdstring NAME NAMESZ # 0A, 0B set NAME unicode NAME putarray 10 i NAME # unused putarray 11 i ARCHIVE_SIZE # unused next i for i = 0 < FILES get ZERO long # compression? ever zero get SIZE long get SOME_CRC long get OFFSET long putarray 0 i ZERO putarray 1 i SIZE putarray 2 i SOME_CRC putarray 3 i OFFSET next i print "sorting offsets, please wait..." sortarray 3 1 math ARCHIVE_OFF = 0 for i = 0 < FILES getarray ZERO 0 i getarray SIZE 1 i getarray SOME_CRC 2 i getarray OFFSET 3 i math OFFSET * ALIGN math OFFSET - ARCHIVE_OFF get ARCHIVE_SIZE asize xmath TMP "OFFSET + SIZE" if TMP u> ARCHIVE_SIZE xmath SIZE1 "ARCHIVE_SIZE - OFFSET" xmath SIZE2 "SIZE - SIZE1" putvarchr MEMORY_FILE SIZE 0 log MEMORY_FILE OFFSET SIZE1 math ARCHIVE_OFF + ARCHIVE_SIZE get NAME filename string NAME p "0x%s" NAME math NAME + 1 string NAME p "%02X" NAME open FDSE NAME 0 EXISTS if EXISTS == 0 string NAME + ".DAT" open FDSE NAME 0 endif append log MEMORY_FILE 0 SIZE2 append log "" 0 SIZE MEMORY_FILE else log "" OFFSET SIZE endif next i