summaryrefslogtreecommitdiff
path: root/tools/script_disassembler/script_disassembler.py
diff options
context:
space:
mode:
authoroctorock <79596758+octorock@users.noreply.github.com>2021-03-05 23:42:17 +0100
committeroctorock <79596758+octorock@users.noreply.github.com>2021-03-06 14:53:33 +0100
commit9441dac477d46218cc2e1879df1d1c2127189761 (patch)
treeb6c695db548b3cb035ad7bf4a5cdd72f0a9ef94d /tools/script_disassembler/script_disassembler.py
parentc83c3e60d373b29efef0688f622d061c6cde6a1b (diff)
Split at externally referenced labels
Diffstat (limited to 'tools/script_disassembler/script_disassembler.py')
-rw-r--r--tools/script_disassembler/script_disassembler.py13
1 files changed, 9 insertions, 4 deletions
diff --git a/tools/script_disassembler/script_disassembler.py b/tools/script_disassembler/script_disassembler.py
index ae8f3272..44ca0a74 100644
--- a/tools/script_disassembler/script_disassembler.py
+++ b/tools/script_disassembler/script_disassembler.py
@@ -55,7 +55,7 @@ commands = [
{'fun': 'ScriptCommand_TestBit', 'params': 'w'},
{'fun': 'ScriptCommand_CheckInventory1', 'params': 's'},
{'fun': 'ScriptCommand_CheckInventory2', 'params': 's'},
- {'fun': 'ScriptCommand_HasRoomItemForSale', 'params': ''},
+ {'fun': 'ScriptCommand_HasRoomItemForSale', 'params': 'v'},
{'fun': 'ScriptCommand_CheckLocalFlag', 'params': 's'},
{'fun': 'ScriptCommand_CheckLocalFlagByOffset', 'params': 'ss'},
{'fun': 'ScriptCommand_CheckGlobalFlag', 'params': 's'},
@@ -330,14 +330,16 @@ def ExecuteScriptCommandSet(ctx: Context):
if params['length'] == -1: # variable parameter length
- print(build_script_command(command['fun']))
+ print(f'.short {u16_to_hex(cmd)} @ {build_script_command(command["fun"])} with {commandSize-1} parameters')
if commandSize > 1:
print('\n'.join(['.short ' + x for x in barray_to_u16_hex(ctx.data[ctx.ptr+2:ctx.ptr+commandSize*2])]))
- print(f'@ End of {commandSize-1} parameters')
+ print(f'@ End of parameters')
ctx.ptr += commandSize*2
return 1
elif params['length'] == -2: # point and var
- print(build_script_command(command['fun']) + ' '+ get_pointer(ctx.data[ctx.ptr+2:ctx.ptr+6]))
+ print(f'.short {u16_to_hex(cmd)} @ {build_script_command(command["fun"])} with parameters:')
+
+ print('.word'+ get_pointer(ctx.data[ctx.ptr+2:ctx.ptr+6]))
if commandSize > 3:
print('\n'.join(['.short ' + x for x in barray_to_u16_hex(ctx.data[ctx.ptr+6:ctx.ptr+commandSize*2])]))
print(f'% End of {commandSize-3} parameters')
@@ -428,6 +430,9 @@ def generate_macros():
params = parameters[command['params']]
id = ((params['length']+1) << 0xA) + num
+ if params['length'] < 0:
+ continue
+
print(f'.macro {build_script_command(command["fun"])} {params["param"]}')
print(f' .short {u16_to_hex(id)}')
if params['expr'] != '':