mirror of
https://github.com/zeldaret/tmc
synced 2026-08-05 17:44:13 -04:00
Generate using inline assembly
This commit is contained in:
+47
-50
@@ -1,54 +1,51 @@
|
||||
#ifndef SCRIPT_MACROS_H
|
||||
#define SCRIPT_MACROS_H
|
||||
|
||||
// Generated by disassemble_script.py
|
||||
#define START_SCRIPT(name) const unsigned short name[] = {
|
||||
#define END_SCRIPT() };
|
||||
#define WORD_TO_SHORTS(word) (unsigned short)(word & 0xffff),(unsigned short)(word >> 16)
|
||||
#define START_SCRIPT(name) asm(".globl "#name); asm(".section .rodata"); asm(#name":");
|
||||
#define END_SCRIPT() asm(".short 0xffff");
|
||||
|
||||
#define nullsub_507() 0x0400,
|
||||
#define sub_0807E004() 0x0401,
|
||||
#define sub_0807E014() 0x0402,
|
||||
#define sub_0807E024(s) 0x0803, s,
|
||||
#define sub_0807E050(s) 0x0804, s,
|
||||
#define sub_0807E064(s) 0x0805, s,
|
||||
#define sub_0807E078(s) 0x0806, s,
|
||||
#define sub_0807E0A0(w) 0x0c07, WORD_TO_SHORTS(w),
|
||||
#define sub_0807E0B8(w) 0x0c08, WORD_TO_SHORTS(w),
|
||||
#define sub_0807E0CC(w) 0x0c09, WORD_TO_SHORTS(w),
|
||||
#define sub_0807E0E0(w) 0x0c0a, WORD_TO_SHORTS(w),
|
||||
#define sub_0807E10C(w) 0x0c0b, WORD_TO_SHORTS(w),
|
||||
#define sub_0807E124(a,b) 0x140c, WORD_TO_SHORTS(a), WORD_TO_SHORTS(b),
|
||||
#define sub_0807E148(w) 0x0c0d, WORD_TO_SHORTS(w),
|
||||
#define sub_0807E158(w) 0x0c0e, WORD_TO_SHORTS(w),
|
||||
#define sub_0807E188(s) 0x080f, s,
|
||||
#define sub_0807E1D8(s) 0x0810, s,
|
||||
#define sub_0807E4AC(s) 0x0811, s,
|
||||
#define sub_0807E260(s) 0x0815, s,
|
||||
#define sub_0807E2A8(s) 0x0817, s,
|
||||
#define sub_0807E2E4() 0x0418,
|
||||
#define sub_0807E5F8(w) 0x0c28, WORD_TO_SHORTS(w),
|
||||
#define sub_0807E680(s) 0x0831, s,
|
||||
#define sub_0807E6AC(w) 0x0c33, WORD_TO_SHORTS(w),
|
||||
#define sub_0807E864() 0x0443,
|
||||
#define sub_0807E878() 0x0444,
|
||||
#define sub_0807E8C4(w) 0x0c47, WORD_TO_SHORTS(w),
|
||||
#define sub_0807E8E4() 0x0449,
|
||||
#define sub_0807E8E4a() 0x044a,
|
||||
#define sub_0807E8E4b() 0x044b,
|
||||
#define sub_0807E8E4c() 0x044c,
|
||||
#define sub_0807E930(s) 0x0850, s,
|
||||
#define sub_0807E9D4() 0x0453,
|
||||
#define sub_0807E9DC() 0x0454,
|
||||
#define sub_0807EA94() 0x0459,
|
||||
#define sub_0807EAD0(a,b) 0x0c5c, a,b,
|
||||
#define sub_0807EB28(s) 0x085f, s,
|
||||
#define sub_0807EB8C() 0x0464,
|
||||
#define sub_0807EBC0(s) 0x0867, s,
|
||||
#define sub_0807EC1C(s) 0x086d, s,
|
||||
#define sub_0807EE30() 0x0475,
|
||||
#define sub_0807EF80(s) 0x0879, s,
|
||||
#define sub_0807EFAC(s) 0x087c, s,
|
||||
#define sub_0807EFE4() 0x047e,
|
||||
|
||||
#endif
|
||||
#define nullsub_507() asm(".short 0x0400");
|
||||
#define sub_0807E004() asm(".short 0x0401");
|
||||
#define sub_0807E014() asm(".short 0x0402");
|
||||
#define sub_0807E024(s) asm(".short 0x0803");asm(".short " #s);
|
||||
#define sub_0807E050(s) asm(".short 0x0804");asm(".short " #s);
|
||||
#define sub_0807E064(s) asm(".short 0x0805");asm(".short " #s);
|
||||
#define sub_0807E078(s) asm(".short 0x0806");asm(".short " #s);
|
||||
#define sub_0807E0A0(w) asm(".short 0x0c07");asm(".word " #w);
|
||||
#define sub_0807E0B8(w) asm(".short 0x0c08");asm(".word " #w);
|
||||
#define sub_0807E0CC(w) asm(".short 0x0c09");asm(".word " #w);
|
||||
#define sub_0807E0E0(w) asm(".short 0x0c0a");asm(".word " #w);
|
||||
#define sub_0807E10C(w) asm(".short 0x0c0b");asm(".word " #w);
|
||||
#define sub_0807E124(a,b) asm(".short 0x140c");asm(".word " #a);asm(".word " #b);
|
||||
#define sub_0807E148(w) asm(".short 0x0c0d");asm(".word " #w);
|
||||
#define sub_0807E158(w) asm(".short 0x0c0e");asm(".word " #w);
|
||||
#define sub_0807E188(s) asm(".short 0x080f");asm(".short " #s);
|
||||
#define sub_0807E1D8(s) asm(".short 0x0810");asm(".short " #s);
|
||||
#define sub_0807E4AC(s) asm(".short 0x0811");asm(".short " #s);
|
||||
#define sub_0807E260(s) asm(".short 0x0815");asm(".short " #s);
|
||||
#define sub_0807E2A8(s) asm(".short 0x0817");asm(".short " #s);
|
||||
#define sub_0807E2E4() asm(".short 0x0418");
|
||||
#define sub_0807E5F8(w) asm(".short 0x0c28");asm(".word " #w);
|
||||
#define sub_0807E680(s) asm(".short 0x0831");asm(".short " #s);
|
||||
#define sub_0807E6AC(w) asm(".short 0x0c33");asm(".word " #w);
|
||||
#define sub_0807E864() asm(".short 0x0443");
|
||||
#define sub_0807E878() asm(".short 0x0444");
|
||||
#define sub_0807E8C4(w) asm(".short 0x0c47");asm(".word " #w);
|
||||
#define sub_0807E8E4_0() asm(".short 0x0449");
|
||||
#define sub_0807E8E4_1() asm(".short 0x044a");
|
||||
#define sub_0807E8E4_2() asm(".short 0x044b");
|
||||
#define sub_0807E8E4_3() asm(".short 0x044c");
|
||||
#define sub_0807E930(s) asm(".short 0x0850");asm(".short " #s);
|
||||
#define sub_0807E9D4() asm(".short 0x0453");
|
||||
#define sub_0807E9DC() asm(".short 0x0454");
|
||||
#define sub_0807EA94() asm(".short 0x0459");
|
||||
#define sub_0807EAD0(a,b) asm(".short 0x0c5c");asm(".short " #a);asm(".short " #b);
|
||||
#define sub_0807EB28(s) asm(".short 0x085f");asm(".short " #s);
|
||||
#define sub_0807EB8C() asm(".short 0x0464");
|
||||
#define sub_0807EBC0(s) asm(".short 0x0867");asm(".short " #s);
|
||||
#define sub_0807EC1C(s) asm(".short 0x086d");asm(".short " #s);
|
||||
#define sub_0807EE30() asm(".short 0x0475");
|
||||
#define sub_0807EF80(s) asm(".short 0x0879");asm(".short " #s);
|
||||
#define sub_0807EFAC(s) asm(".short 0x087c");asm(".short " #s);
|
||||
#define sub_0807EFE4() asm(".short 0x047e");
|
||||
#endif
|
||||
+42
-177
File diff suppressed because one or more lines are too long
@@ -120,10 +120,10 @@ commands = [
|
||||
{'fun': 'sub_0807E898'},
|
||||
{'fun': 'sub_0807E8C4', 'params': 'w'},
|
||||
{'fun': 'sub_0807E8D4'},
|
||||
{'fun': 'sub_0807E8E4', 'params': ''},
|
||||
{'fun': 'sub_0807E8E4', 'params': ''},
|
||||
{'fun': 'sub_0807E8E4', 'params': ''},
|
||||
{'fun': 'sub_0807E8E4', 'params': ''},
|
||||
{'fun': 'sub_0807E8E4_0', 'params': ''}, # duplicate
|
||||
{'fun': 'sub_0807E8E4_1', 'params': ''}, # duplicate
|
||||
{'fun': 'sub_0807E8E4_2', 'params': ''}, # duplicate
|
||||
{'fun': 'sub_0807E8E4_3', 'params': ''}, # duplicate
|
||||
{'fun': 'sub_0807E908'},
|
||||
{'fun': 'sub_0807E914'},
|
||||
{'fun': 'sub_0807E924'},
|
||||
@@ -199,25 +199,25 @@ parameters = {
|
||||
's': {
|
||||
'length': 1,
|
||||
'param': 's',
|
||||
'expr': 's,',
|
||||
'expr': 'asm(".short " #s);',
|
||||
'read': lambda ctx: barray_to_u16_hex(ctx.data[ctx.ptr+2:ctx.ptr+4])[0]
|
||||
},
|
||||
'w': {
|
||||
'length': 2,
|
||||
'param': 'w',
|
||||
'expr': 'WORD_TO_SHORTS(w),',
|
||||
'expr': 'asm(".word " #w);',
|
||||
'read': lambda ctx: barray_to_u32_hex(ctx.data[ctx.ptr+2:ctx.ptr+6])[0]
|
||||
},
|
||||
'ss': {
|
||||
'length': 2,
|
||||
'param': 'a,b',
|
||||
'expr': 'a,b,',
|
||||
'expr': 'asm(".short " #a);asm(".short " #b);',
|
||||
'read': lambda ctx: ','.join(barray_to_u16_hex(ctx.data[ctx.ptr+2:ctx.ptr+6]))
|
||||
},
|
||||
'ww': {
|
||||
'length': 4,
|
||||
'param': 'a,b',
|
||||
'expr': 'WORD_TO_SHORTS(a), WORD_TO_SHORTS(b),',
|
||||
'expr': 'asm(".word " #a);asm(".word " #b);',
|
||||
'read': lambda ctx: ','.join(barray_to_u32_hex(ctx.data[ctx.ptr+2:ctx.ptr+10]))
|
||||
},
|
||||
}
|
||||
@@ -276,9 +276,9 @@ def generate_macros():
|
||||
print('#ifndef SCRIPT_MACROS_H')
|
||||
print('#define SCRIPT_MACROS_H')
|
||||
print('// Generated by disassemble_script.py')
|
||||
print('#define START_SCRIPT(name) const unsigned short name[] = {')
|
||||
print('#define END_SCRIPT() };')
|
||||
print('#define WORD_TO_SHORTS(word) (unsigned short)word & 0xffff,(unsigned short)word >> 16')
|
||||
print('#define START_SCRIPT(name) asm(".globl "#name); asm(".section .rodata"); asm(#name":");')
|
||||
print('#define END_SCRIPT()')
|
||||
#print('#define WORD_TO_SHORTS(word) (unsigned short)word & 0xffff,(unsigned short)word >> 16')
|
||||
print('')
|
||||
for num, command in enumerate(commands):
|
||||
if not 'params' in command:
|
||||
@@ -289,7 +289,7 @@ def generate_macros():
|
||||
|
||||
params = parameters[command['params']]
|
||||
id = ((params['length']+1) << 0xA) + num
|
||||
print('#define ' + command['fun'] + '(' + params['param'] + ') '+u16_to_hex(id)+', ' + params['expr'])
|
||||
print('#define ' + command['fun'] + '(' + params['param'] + ') asm(".short '+u16_to_hex(id)+'");' + params['expr'])
|
||||
|
||||
print ('#endif')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user