diff options
author | mid-kid <esteve.varela@gmail.com> | 2020-09-09 23:15:44 +0200 |
---|---|---|
committer | mid-kid <esteve.varela@gmail.com> | 2020-09-09 23:15:57 +0200 |
commit | 9ecb7765b2913cffbca4a63677eec7bd8bce0300 (patch) | |
tree | 59e897c5a6184c8abc7e52c53d28554354f04da9 | |
parent | 78d593443ec95231f8d7acbeda14c51ecef1d9e4 (diff) |
mgbdis: Add single-bank disassembly
-rwxr-xr-x | mgbdis/mgbdis.py | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/mgbdis/mgbdis.py b/mgbdis/mgbdis.py index 529126e..f864cfa 100755 --- a/mgbdis/mgbdis.py +++ b/mgbdis/mgbdis.py @@ -889,7 +889,7 @@ class ROM: return ((self.data[0x143] & 0x80) == 0x80) - def disassemble(self, output_dir): + def disassemble(self, output_dir, onebank=None): self.output_directory = os.path.abspath(output_dir.rstrip(os.sep)) @@ -904,7 +904,11 @@ class ROM: print('Generating labels...') - self.generate_labels() + if onebank is not None: + self.banks[onebank].disassemble(rom, True) + else: + for bank in range(0, self.num_banks): + self.banks[bank].disassemble(rom, True) self.image_dependencies = [] @@ -912,21 +916,20 @@ class ROM: if debug: print('') - for bank in range(0, self.num_banks): - self.write_bank_asm(bank) + if onebank is not None: + self.write_bank_asm(onebank) + else: + for bank in range(0, self.num_banks): + self.write_bank_asm(bank) - self.copy_hardware_inc() - self.write_game_asm() - self.write_makefile() + if onebank is None: + self.copy_hardware_inc() + self.write_game_asm() + self.write_makefile() print('\nDisassembly generated in "{}"'.format(self.output_directory)) - def generate_labels(self): - for bank in range(0, self.num_banks): - self.banks[bank].disassemble(rom, True) - - def write_bank_asm(self, bank): if not debug: # progress indicator @@ -1162,6 +1165,7 @@ parser.add_argument('--disable-halt-nops', help='Disable RGBDS\'s automatic inse parser.add_argument('--disable-auto-ldh', help='Disable RGBDS\'s automatic optimisation of \'ld [$ff00+a8], a\' to \'ldh [a8], a\' instructions. Requires RGBDS >= v0.3.7', action='store_true') parser.add_argument('--overwrite', help='Allow generating a disassembly into an already existing directory', action='store_true') parser.add_argument('--debug', help='Display debug output', action='store_true') +parser.add_argument('--bank', help='Disassemble only one bank', type=lambda x: int(x, 16), default=None) args = parser.parse_args() debug = args.debug @@ -1181,4 +1185,4 @@ style = { instructions = apply_style_to_instructions(style, instructions) rom = ROM(args.rom_path, style) -rom.disassemble(args.output_dir) +rom.disassemble(args.output_dir, args.bank) |