diff options
author | Bryan Bishop <kanzure@gmail.com> | 2012-01-10 12:47:37 -0600 |
---|---|---|
committer | Bryan Bishop <kanzure@gmail.com> | 2012-01-10 12:47:37 -0600 |
commit | ebcf2a87565c4a74206dcb167f96fb33faf10d2b (patch) | |
tree | 5ed0609e19cf0c4c0335be247e5c001c654aafef /extras/gbz80disasm.py | |
parent | 7990b5f632b66508e1be2b79677360d0709b3749 (diff) |
implement two-byte op codes in gbz80disasm
Previously, two-byte commands in gbz80disasm would not read or allow
parameters. This update fixes gbz80disasm to read both the "x" and
"?" parameters.
x = one-byte parameter
? = two-byte parameter
hg-commit-id: 1494e8a88115
Diffstat (limited to 'extras/gbz80disasm.py')
-rw-r--r-- | extras/gbz80disasm.py | 36 |
1 files changed, 32 insertions, 4 deletions
diff --git a/extras/gbz80disasm.py b/extras/gbz80disasm.py index d0093436..f23a761a 100644 --- a/extras/gbz80disasm.py +++ b/extras/gbz80disasm.py @@ -597,12 +597,38 @@ def output_bank_opcodes(original_offset, max_byte_count=0x4000): temp_maybe += ( ord(rom[offset+1]) << 8) if temp_maybe in opt_table.keys(): opstr = copy(opt_table[temp_maybe][0]) - - output += spacing + opstr.lower() #+ " ; " + hex(offset) + + if "x" in opstr: + for x in range(0, opstr.count("x")): + insertion = ord(rom[offset + 1]) + insertion = "$" + hex(insertion)[2:] + + opstr = opstr[:opstr.find("x")].lower() + insertion + opstr[opstr.find("x")+1:].lower() + + current_byte += 1 + offset += 1 + if "?" in opstr: + for y in range(0, opstr.count("?")): + byte1 = ord(rom[offset + 1]) + byte2 = ord(rom[offset + 2]) + + number = byte1 + number += byte2 << 8; + + insertion = "$%.4x" % (number) + + opstr = opstr[:opstr.find("?")].lower() + insertion + opstr[opstr.find("?")+1:].lower() + output += spacing + opstr #+ " ; " + hex(offset) + output += "\n" + + current_byte_number += 2 + offset += 2 + + output += spacing + opstr #+ " ; " + hex(offset) output += "\n" - current_byte_number += 2 - offset += 2 + current_byte_number += 1 + offset += 1 elif maybe_byte in opt_table.keys(): op_code = opt_table[maybe_byte] op_code_type = op_code[1] @@ -611,6 +637,8 @@ def output_bank_opcodes(original_offset, max_byte_count=0x4000): #type = -1 when it's the E op #if op_code_type != -1: if op_code_type == 0 and ord(rom[offset]) == op_code_byte: + op_str = op_code[0].lower() + output += spacing + op_code[0].lower() #+ " ; " + hex(offset) output += "\n" |