aboutsummaryrefslogtreecommitdiff
path: root/devtools
diff options
context:
space:
mode:
authorEugene Sandulenko2011-07-19 03:03:09 -0700
committerEugene Sandulenko2011-07-19 03:03:09 -0700
commit73cf347b94a41930b33d198755025b4a9a27dd62 (patch)
treefdff4872516f6a49abd6383c5d38df9bbc03e8ca /devtools
parente1ca235c4457e7f5f35dea688396845146fbf04a (diff)
parent599c0f486262c1d3677c94f0122dab604e324084 (diff)
downloadscummvm-rg350-73cf347b94a41930b33d198755025b4a9a27dd62.tar.gz
scummvm-rg350-73cf347b94a41930b33d198755025b4a9a27dd62.tar.bz2
scummvm-rg350-73cf347b94a41930b33d198755025b4a9a27dd62.zip
Merge pull request #48 from tramboi/master
DREAMWEB: More porting into C++
Diffstat (limited to 'devtools')
-rw-r--r--devtools/tasmrecover/dreamweb/vars.asm2
-rwxr-xr-xdevtools/tasmrecover/tasm-recover17
-rw-r--r--devtools/tasmrecover/tasm/cpp.py14
3 files changed, 28 insertions, 5 deletions
diff --git a/devtools/tasmrecover/dreamweb/vars.asm b/devtools/tasmrecover/dreamweb/vars.asm
index 8646697e52..8678231a9d 100644
--- a/devtools/tasmrecover/dreamweb/vars.asm
+++ b/devtools/tasmrecover/dreamweb/vars.asm
@@ -273,7 +273,7 @@ savesource dw 0
savex db 0
savey db 0
currentob db 0
-priority db 0
+priorityDep db 0 ; dep for deprecated, I leave a byte here to minimize changes to the generated code
destpos db 0
diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover
index 54fc091f06..6b1c6d9d23 100755
--- a/devtools/tasmrecover/tasm-recover
+++ b/devtools/tasmrecover/tasm-recover
@@ -15,14 +15,29 @@ generator = cpp(context, "DreamGen", blacklist = [
'multiget',
'multiput',
'multidump',
- 'frameoutnm',
+ 'frameoutnm',
+ 'frameoutbh',
+ 'frameoutfx',
'cls',
'printundermon',
+ 'kernchars',
+ 'getnextword',
'worktoscreen',
'width160',
'convertkey',
'readabyte',
'readoneblock',
+ 'printsprites',
+ 'printasprite',
+ 'eraseoldobs',
+ 'clearsprites',
+ 'makesprite',
+ 'showframe',
+ 'initman',
+ 'walking',
+ 'spriteupdate',
+ 'dodoor',
+ 'liftsprite',
'frameoutv',
'modifychar',
'lockmon'
diff --git a/devtools/tasmrecover/tasm/cpp.py b/devtools/tasmrecover/tasm/cpp.py
index dfdfb239f4..81c883da1e 100644
--- a/devtools/tasmrecover/tasm/cpp.py
+++ b/devtools/tasmrecover/tasm/cpp.py
@@ -544,14 +544,19 @@ namespace %s {
"""\n#include "dreamweb/runtime.h"
namespace %s {
-
+#include "structs.h"
class %sContext : public Context {
public:
void __start();
void __dispatch_call(uint16 addr);
+#include "stubs.h" // Allow hand-reversed functions to have a signature different than void f()
"""
%(self.namespace, self.namespace))
+
+ for name,addr in self.proc_addr:
+ self.hd.write("\tstatic const uint16 addr_%s = 0x%04x;\n" %(name, addr))
+
offsets = []
for k, v in self.context.get_globals().items():
if isinstance(v, op.var):
@@ -564,7 +569,10 @@ public:
self.hd.write("\tconst static uint16 k%s = %s;\n" %o)
self.hd.write("\n")
for p in set(self.methods):
- self.hd.write("\tvoid %s();\n" %p)
+ if p in self.blacklist:
+ self.hd.write("\t//void %s();\n" %p)
+ else:
+ self.hd.write("\tvoid %s();\n" %p)
self.hd.write("};\n}\n\n#endif\n")
self.hd.close()
@@ -574,7 +582,7 @@ public:
self.fd.write("\nvoid %sContext::__dispatch_call(uint16 addr) {\n\tswitch(addr) {\n" %self.namespace)
self.proc_addr.sort(cmp = lambda x, y: x[1] - y[1])
for name,addr in self.proc_addr:
- self.fd.write("\t\tcase 0x%04x: %s(); break;\n" %(addr, name))
+ self.fd.write("\t\tcase addr_%s: %s(); break;\n" %(name, name))
self.fd.write("\t\tdefault: ::error(\"invalid call to %04x dispatched\", (uint16)ax);")
self.fd.write("\n\t}\n}\n\n} /*namespace*/\n")