diff options
author | Bertrand Augereau | 2011-12-01 12:35:14 -0800 |
---|---|---|
committer | Bertrand Augereau | 2011-12-01 12:35:14 -0800 |
commit | ec8d8207202d74ebb78ec52720bf8ae70ae2afd4 (patch) | |
tree | 9e8b535ba79d699c408631419dd80965e6eb40c9 /devtools/tasmrecover/tasm/cpp.py | |
parent | 24c355e04fe7fb536bbfd72bdb998b4dbf265148 (diff) | |
parent | 349cbc527f33858b6275daaa8f770cd6f7fcd42d (diff) | |
download | scummvm-rg350-ec8d8207202d74ebb78ec52720bf8ae70ae2afd4.tar.gz scummvm-rg350-ec8d8207202d74ebb78ec52720bf8ae70ae2afd4.tar.bz2 scummvm-rg350-ec8d8207202d74ebb78ec52720bf8ae70ae2afd4.zip |
Merge pull request #123 from digitall/dreamweb_tasmNameMap
Add Function Name Remapping to tasm-recover tool...
Diffstat (limited to 'devtools/tasmrecover/tasm/cpp.py')
-rw-r--r-- | devtools/tasmrecover/tasm/cpp.py | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/devtools/tasmrecover/tasm/cpp.py b/devtools/tasmrecover/tasm/cpp.py index f93f994681..648b434075 100644 --- a/devtools/tasmrecover/tasm/cpp.py +++ b/devtools/tasmrecover/tasm/cpp.py @@ -33,7 +33,7 @@ def parse_bin(s): return v class cpp: - def __init__(self, context, namespace, skip_first = 0, blacklist = [], skip_output = [], skip_dispatch_call = False, header_omit_blacklisted = False): + def __init__(self, context, namespace, skip_first = 0, blacklist = [], skip_output = [], skip_dispatch_call = False, header_omit_blacklisted = False, function_name_remapping = { }): self.namespace = namespace fname = namespace.lower() + ".cpp" header = namespace.lower() + ".h" @@ -82,6 +82,7 @@ class cpp: self.skip_output = skip_output self.skip_dispatch_call = skip_dispatch_call self.header_omit_blacklisted = header_omit_blacklisted + self.function_name_remapping = function_name_remapping self.translated = [] self.proc_addr = [] self.used_data_offsets = set() @@ -288,7 +289,10 @@ namespace %s { jump_proc = True if jump_proc: - return "{ %s(); return; }" %name + if name in self.function_name_remapping: + return "{ %s(); return; }" %self.function_name_remapping[name] + else: + return "{ %s(); return; }" %name else: # TODO: name or self.resolve_label(name) or self.mangle_label(name)?? if name in self.proc.retlabels: @@ -310,7 +314,10 @@ namespace %s { if name == 'ax': self.body += "\t__dispatch_call(%s);\n" %self.expand('ax', 2) return - self.body += "\t%s();\n" %name + if name in self.function_name_remapping: + self.body += "\t%s();\n" %self.function_name_remapping[name] + else: + self.body += "\t%s();\n" %name self.schedule(name) def _ret(self): @@ -501,7 +508,10 @@ namespace %s { self.proc_addr.append((name, self.proc.offset)) self.body = str() - self.body += "void %sContext::%s() {\n\tSTACK_CHECK;\n" %(self.namespace, name); + if name in self.function_name_remapping: + self.body += "void %sContext::%s() {\n\tSTACK_CHECK;\n" %(self.namespace, self.function_name_remapping[name]); + else: + self.body += "void %sContext::%s() {\n\tSTACK_CHECK;\n" %(self.namespace, name); self.proc.optimize() self.unbounded = [] self.proc.visit(self, skip) @@ -552,7 +562,10 @@ namespace %s { fd = open(fname, "wt") fd.write("namespace %s {\n" %self.namespace) for p in procs: - fd.write("void %sContext::%s() {\n\t::error(\"%s\");\n}\n\n" %(self.namespace, p, p)) + if p in self.function_name_remapping: + fd.write("void %sContext::%s() {\n\t::error(\"%s\");\n}\n\n" %(self.namespace, self.function_name_remapping[p], self.function_name_remapping[p])) + else: + fd.write("void %sContext::%s() {\n\t::error(\"%s\");\n}\n\n" %(self.namespace, p, p)) fd.write("} /*namespace %s */\n" %self.namespace) fd.close() @@ -641,7 +654,10 @@ public: if self.header_omit_blacklisted == False: self.hd.write("\t//void %s();\n" %p) else: - self.hd.write("\tvoid %s();\n" %p) + if p in self.function_name_remapping: + self.hd.write("\tvoid %s();\n" %self.function_name_remapping[p]) + else: + self.hd.write("\tvoid %s();\n" %p) self.hd.write("};\n}\n\n#endif\n") self.hd.close() |