# Tales of Hearts (script 0.1.1) # Note: compression is not supported yet # script for QuickBMS http://quickbms.aluigi.org math WORKAROUND = 0 idstring "L7CA" get DUMMY long get L7C_SIZE long get INFO_OFF long get INFO_SIZE long get DUMMY long # 0x00010000 get ENTRIES long get DUMMY long get FILES long get TREES long get NAMES_SIZE long get DUMMY long # 5 goto INFO_OFF for i = 0 < ENTRIES get FILE_ID long get DUMMY long get FOLDER_OFF long get NAME_OFF long get TSTAMP longlong if FILE_ID >= 0 putarray 5 FILE_ID FOLDER_OFF putarray 6 FILE_ID NAME_OFF endif next i for i = 0 < FILES get ZSIZE long get SIZE long get TREE_ID long get FLAGS long get OFFSET long get DUMMY long putarray 0 i ZSIZE putarray 1 i SIZE putarray 2 i TREE_ID putarray 3 i FLAGS putarray 4 i OFFSET next i for i = 0 < TREES get OFFSET long get DUMMY long math OFFSET & 0x7fffffff if OFFSET % 0x100 math WORKAROUND = 1 # Taiko no Tatsujin V else math OFFSET / 20 # size of each ENTRY endif putarray 10 i OFFSET next i if WORKAROUND == 0 for i = 0 < FILES getarray ID 2 i if ID >= TREES math WORKAROUND = 1 else getarray ID 10 ID if ID >= FILES math WORKAROUND = 1 endif endif next i endif savepos NAMES_OFF for i = 0 < FILES if WORKAROUND == 0 getarray ID 2 i getarray ID 10 ID else math ID = i endif getarray ZSIZE 0 ID getarray SIZE 1 ID getarray FLAGS 3 ID getarray OFFSET 4 ID getarray FOLDER_OFF 5 ID getarray NAME_OFF 6 ID math FOLDER_OFF + NAMES_OFF goto FOLDER_OFF get NAMESZ byte getdstring NAME NAMESZ math NAME_OFF + NAMES_OFF goto NAME_OFF get NAMESZ byte getdstring NAME2 NAMESZ string NAME + / string NAME + NAME2 if SIZE == ZSIZE log NAME OFFSET SIZE else #clog NAME OFFSET ZSIZE SIZE string NAME p "unknown_compression/%s" NAME log NAME OFFSET ZSIZE endif next i