Based on the CRW reinserter. """ import os from rominfo import FILES, FILE_BLOCKS, CONTROL_CODES, UNCOMPRESSED_FILES from romtools.disk import Disk, Gamefile, Block from romtools.dump import DumpExcel, PointerExcel from codec import encode ORIGINAL_ROM_PATH = os.path.join('original', 'Insiders94.hdm') TARGET_ROM_PATH = os.path.join('patched', 'Insiders94.hdm') DUMP_XLS_PATH = 'insiders_dump.xlsx' POINTER_XLS_PATH = 'insiders_pointers.xlsx' Dump = DumpExcel(DUMP_XLS_PATH) PtrDump = PointerExcel(POINTER_XLS_PATH) OriginalINS = Disk(ORIGINAL_ROM_PATH, dump_excel=Dump, pointer_excel=PtrDump) TargetINS = Disk(TARGET_ROM_PATH) FILES_TO_REINSERT = ['IDS', 'ISS'] # TODO: Unsure if there are multiple pointer files, but there is ICS so far pointer_gamefile_path = os.path.join('original', 'ICS') pointer_gamefile = Gamefile(pointer_gamefile_path, disk=OriginalINS, dest_disk=TargetINS, pointer_sheet_name='IDS.decompressed') for filename in FILES_TO_REINSERT:
""" Dante98-II reinserter. Based on the CRW reinserter base. """ import os from rominfo import FILE_BLOCKS, ORIGINAL_ROM_PATH, TARGET_ROM_PATH from romtools.disk import Disk, Gamefile, Block from romtools.dump import DumpExcel, PointerExcel DUMP_XLS_PATH = 'dante98-II_dump.xlsx' POINTER_XLS_PATH = 'dante98-II_pointer_dump.xlsx' Dump = DumpExcel(DUMP_XLS_PATH) PtrDump = PointerExcel(POINTER_XLS_PATH) OriginalDante = Disk(ORIGINAL_ROM_PATH, dump_excel=Dump, pointer_excel=PtrDump) TargetDante = Disk(TARGET_ROM_PATH) #FILES_TO_REINSERT = ['EDENEMY.EXE', ] FILES_TO_REINSERT = ['EDENEMY.EXE', 'EDPLAYER.EXE', 'EDWORD.EXE', 'EDMAGIC.EXE', 'EDITEM.EXE', 'EDMAP.EXE', 'EDCHIP.EXE', 'EDCONV.EXE', 'EDPACK.EXE', 'EDUSAGE.EXE', 'ENEMY.DAT', 'MAPNAME.DAT', 'PLAYER.DAT', 'WORD.DAT'] for filename in FILES_TO_REINSERT: if filename.endswith('.DAT'): path_in_disk = "DANTE2\\DAT_RPG" gamefile_path = os.path.join('original', 'DANTE2', 'DAT_RPG', filename) pointers = []
Based on the CRW reinserter base. """ import os from shutil import copyfile from rominfo import SEGMENTS, ORIGINAL_DATA_TRACK, ImgSegment, SjisSegment, PointerSegment, CodeSegment from rominfo import MERGED_STRINGS from asm import EDITS from romtools.dump import DumpExcel, SegmentPointer MAPPING_MODE = True DUMP_XLS_PATH = 'LA_Text.xlsx' Dump = DumpExcel(DUMP_XLS_PATH) copyfile('original/LA7.iso', 'patched/LA7.iso') STRING_COUNT = 0 TRANSLATED_STRING_COUNT = 0 # Stuff to always include EDITED_IMG_SEGMENTS = [ ImgSegment(0x4a41b20, 0x4a42000, 'FontBlue-00-3f'), ImgSegment(0x4a42000, 0x4a42800, 'FontBlue-40-7f'), #ImgSegment(0x4a43000, 0x4a43800, 'FontBlue-c0-ff'), ImgSegment(0x4a43b20, 0x4a44000, 'FontBlack-00-3f'), ImgSegment(0x4a44000, 0x4a44800, 'FontBlack-40-7f'), ImgSegment(0x4a45000, 0x4a45800, 'FontBlack-c0-ff'), ]
garbage_pointer_values = [ 0x0, 0xff, 0x8, 0x4, 0x200, 0x400, 0x800, 0xd00, 0x900, 0x1, 0x2, 0x3 ] def find_all(a_str, sub): start = 0 while True: start = a_str.find(sub, start) if start == -1: return yield start start += len(sub) # use start += 1 to find overlapping matches DUMP_XLS_PATH = 'appareden_sys_dump.xlsx' Dump = DumpExcel(DUMP_XLS_PATH) #MSG_DUMP_XLSX_PATH = 'appareden_msg_dump.xlsx' #MsgDump = DumpExcel(MSG_DUMP_XLSX_PATH) OriginalAp = Disk(SRC_DISK, dump_excel=Dump) OriginalCdAp = Disk(CD_SRC_DISK, dump_excel=Dump) #files_to_search = ['ORFIELD.EXE', 'ORBTL.EXE', 'ORTITLE.EXE'] # TODO: Add ORITTLE back in once I've mapped the CD version. files_to_search = ['ORFIELD.EXE', 'ORBTL.EXE', 'ORTITLE.EXE'] problem_count = 0 try:
""" Text typesetter for Appareden. Truncates ORFIELD text that exceeds limits. """ from appareden.rominfo import WAITS, MSGS from appareden.rominfo import DUMP_XLS_PATH, MAX_LENGTH from appareden.utils import typeset, sjis_punctuate, WAITS, NAMES #from appareden.reinsert import MSGS from romtools.dump import DumpExcel from openpyxl.styles import PatternFill Dump = DumpExcel(DUMP_XLS_PATH) filenames = ['ORFIELD.EXE', 'ORBTL.EXE'] def safe_print(s): if '\u014d' in s: s = s.replace('\u014d', '[o]') if '\u016b' in s: s = s.replace('\u016b', '[u]') print(s) def starts_with_nametag(s): for n in NAMES: if s.split('[LN]')[0] == n: if s.split('[LN]')[1] != '': return True return False
""" Kuro no Ken reinserter. """ import os from shutil import copyfile from romtools.disk import Disk, Gamefile, Block from romtools.dump import DumpExcel, PointerExcel from rominfo import SRC_DISK, DEST_DISK, FILES, FILES_TO_REINSERT, COMPRESSED_FILES_TO_EDIT, ARCHIVES_TO_REINSERT from rominfo import FILE_BLOCKS, LENGTH_SENSITIVE_BLOCKS, NAMES from rominfo import DUMP_XLS_PATH, POINTER_XLS_PATH, POINTERS_TO_REASSIGN, CONTROL_CODES from asm import BYTE_EDITS from fa1 import repack, unpack Dump = DumpExcel(DUMP_XLS_PATH) PtrDump = PointerExcel(POINTER_XLS_PATH) def typeset(s): if s in NAMES: return s words = s.split(b' ') #print(words) lines = [] this_line = b' ' while words: if (len(this_line) + len(words[0]) + 1) > 48: this_line = this_line.rstrip() lines.append(this_line)