aboutsummaryrefslogtreecommitdiff
path: root/devtools/tasmrecover
diff options
context:
space:
mode:
authorMatthew Hoops2011-08-26 22:44:17 -0400
committerMatthew Hoops2011-08-26 22:44:17 -0400
commit4a69dc13d92e82fff85dc5a3a923b74ced259ffa (patch)
tree8945cd3745fd65f28b043caf7b1beddbbce2b2a1 /devtools/tasmrecover
parentad293b249e74dd1cfbdbd721d02145efbdaf9eca (diff)
parent5e174cbfe466dbbe8e5470b0a00de1481b986181 (diff)
downloadscummvm-rg350-4a69dc13d92e82fff85dc5a3a923b74ced259ffa.tar.gz
scummvm-rg350-4a69dc13d92e82fff85dc5a3a923b74ced259ffa.tar.bz2
scummvm-rg350-4a69dc13d92e82fff85dc5a3a923b74ced259ffa.zip
Merge remote branch 'upstream/master' into pegasus
Diffstat (limited to 'devtools/tasmrecover')
-rw-r--r--devtools/tasmrecover/.gitignore1
-rw-r--r--devtools/tasmrecover/dreamweb/backdrop.asm24
-rw-r--r--devtools/tasmrecover/dreamweb/dreamweb.asm17
-rw-r--r--devtools/tasmrecover/dreamweb/keypad.asm1
-rw-r--r--devtools/tasmrecover/dreamweb/look.asm6
-rw-r--r--devtools/tasmrecover/dreamweb/monitor.asm5
-rw-r--r--devtools/tasmrecover/dreamweb/newplace.asm5
-rw-r--r--devtools/tasmrecover/dreamweb/object.asm5
-rw-r--r--devtools/tasmrecover/dreamweb/saveload.asm5
-rw-r--r--devtools/tasmrecover/dreamweb/sblaster.asm30
-rw-r--r--devtools/tasmrecover/dreamweb/sprite.asm16
-rw-r--r--devtools/tasmrecover/dreamweb/talk.asm18
-rw-r--r--devtools/tasmrecover/dreamweb/titles.asm13
-rw-r--r--devtools/tasmrecover/dreamweb/use.asm11
-rw-r--r--devtools/tasmrecover/dreamweb/vars.asm1
-rw-r--r--devtools/tasmrecover/dreamweb/vgafades.asm2
-rw-r--r--devtools/tasmrecover/dreamweb/vgagrafx.asm2
-rwxr-xr-xdevtools/tasmrecover/tasm-recover111
-rw-r--r--devtools/tasmrecover/tasm/cpp.py29
-rw-r--r--devtools/tasmrecover/tasm/op.py1
20 files changed, 133 insertions, 170 deletions
diff --git a/devtools/tasmrecover/.gitignore b/devtools/tasmrecover/.gitignore
index f2bff8e8d9..69ae325082 100644
--- a/devtools/tasmrecover/.gitignore
+++ b/devtools/tasmrecover/.gitignore
@@ -1,4 +1,3 @@
*.pyc
dreamgen.*
_stubs*
-
diff --git a/devtools/tasmrecover/dreamweb/backdrop.asm b/devtools/tasmrecover/dreamweb/backdrop.asm
index 5dfe20bf5d..ec0e4959b3 100644
--- a/devtools/tasmrecover/dreamweb/backdrop.asm
+++ b/devtools/tasmrecover/dreamweb/backdrop.asm
@@ -850,27 +850,3 @@ over147: mov ch,0
ret
endp
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/devtools/tasmrecover/dreamweb/dreamweb.asm b/devtools/tasmrecover/dreamweb/dreamweb.asm
index c222a63178..8a52435b0c 100644
--- a/devtools/tasmrecover/dreamweb/dreamweb.asm
+++ b/devtools/tasmrecover/dreamweb/dreamweb.asm
@@ -6264,20 +6264,3 @@ STACKSPACE ends
;-----------------------------------------------------------End of all code----
end Dreamweb
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/devtools/tasmrecover/dreamweb/keypad.asm b/devtools/tasmrecover/dreamweb/keypad.asm
index 8d918e618b..6eee2fa11c 100644
--- a/devtools/tasmrecover/dreamweb/keypad.asm
+++ b/devtools/tasmrecover/dreamweb/keypad.asm
@@ -1759,4 +1759,3 @@ Findtext1 proc near
ret
endp
-
diff --git a/devtools/tasmrecover/dreamweb/look.asm b/devtools/tasmrecover/dreamweb/look.asm
index 399e1f16fd..a5a8b8055e 100644
--- a/devtools/tasmrecover/dreamweb/look.asm
+++ b/devtools/tasmrecover/dreamweb/look.asm
@@ -158,9 +158,3 @@ dogetback: mov getback,1
ret
endp
-
-
-
-
-
-
diff --git a/devtools/tasmrecover/dreamweb/monitor.asm b/devtools/tasmrecover/dreamweb/monitor.asm
index 7f3979c2b3..5354e9f7d5 100644
--- a/devtools/tasmrecover/dreamweb/monitor.asm
+++ b/devtools/tasmrecover/dreamweb/monitor.asm
@@ -1490,8 +1490,3 @@ finishcurdel:
ret
endp
-
-
-
-
-
diff --git a/devtools/tasmrecover/dreamweb/newplace.asm b/devtools/tasmrecover/dreamweb/newplace.asm
index 2bbf4fe498..b06a351f5f 100644
--- a/devtools/tasmrecover/dreamweb/newplace.asm
+++ b/devtools/tasmrecover/dreamweb/newplace.asm
@@ -577,8 +577,3 @@ Readcitypic proc near
ret
endp
-
-
-
-
-
diff --git a/devtools/tasmrecover/dreamweb/object.asm b/devtools/tasmrecover/dreamweb/object.asm
index 830c9676f3..e6f8037579 100644
--- a/devtools/tasmrecover/dreamweb/object.asm
+++ b/devtools/tasmrecover/dreamweb/object.asm
@@ -2603,8 +2603,3 @@ beforethistext: mov [es:di],ax
ret
endp
-
-
-
-
-
diff --git a/devtools/tasmrecover/dreamweb/saveload.asm b/devtools/tasmrecover/dreamweb/saveload.asm
index 369e799d53..6c98774a0f 100644
--- a/devtools/tasmrecover/dreamweb/saveload.asm
+++ b/devtools/tasmrecover/dreamweb/saveload.asm
@@ -1502,6 +1502,7 @@ Loadold proc near
alreadyloadold: mov ax,mousebutton
and ax,1
jz noloadold
+ mov ax,0ffffh
call doload
cmp getback,4
jz noloadold
@@ -1513,7 +1514,3 @@ alreadyloadold: mov ax,mousebutton
noloadold: ret
endp
-
-
-
-
diff --git a/devtools/tasmrecover/dreamweb/sblaster.asm b/devtools/tasmrecover/dreamweb/sblaster.asm
index 46eb8e2366..7a271e9c90 100644
--- a/devtools/tasmrecover/dreamweb/sblaster.asm
+++ b/devtools/tasmrecover/dreamweb/sblaster.asm
@@ -1260,33 +1260,3 @@ nopitflip: cli
iret
endp
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/devtools/tasmrecover/dreamweb/sprite.asm b/devtools/tasmrecover/dreamweb/sprite.asm
index 45f807da3f..06b06c76e3 100644
--- a/devtools/tasmrecover/dreamweb/sprite.asm
+++ b/devtools/tasmrecover/dreamweb/sprite.asm
@@ -4226,7 +4226,7 @@ botofdoor2: sub ah,ch
opendoor2: cmp throughdoor,1
jz mustbeopen
cmp lockstatus,1
- jz shutdoor
+ jz shutdoor2
mustbeopen: mov cl,[es:bx+19]
cmp cl,1
jnz notdoorsound4
@@ -5017,17 +5017,3 @@ dumpevery2: mov ax,[es:bx]
finishevery2: ret
endp
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/devtools/tasmrecover/dreamweb/talk.asm b/devtools/tasmrecover/dreamweb/talk.asm
index b6b96313f7..4d6b381881 100644
--- a/devtools/tasmrecover/dreamweb/talk.asm
+++ b/devtools/tasmrecover/dreamweb/talk.asm
@@ -563,21 +563,3 @@ doredes: call delpointer
ret
endp
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/devtools/tasmrecover/dreamweb/titles.asm b/devtools/tasmrecover/dreamweb/titles.asm
index 8f2b46e3f4..52f58867ed 100644
--- a/devtools/tasmrecover/dreamweb/titles.asm
+++ b/devtools/tasmrecover/dreamweb/titles.asm
@@ -570,16 +570,3 @@ realcreditsearly:
ret
endp
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/devtools/tasmrecover/dreamweb/use.asm b/devtools/tasmrecover/dreamweb/use.asm
index fbbd9c99db..78917d50f4 100644
--- a/devtools/tasmrecover/dreamweb/use.asm
+++ b/devtools/tasmrecover/dreamweb/use.asm
@@ -3815,14 +3815,3 @@ nowinch: call showfirstuse
ret
endp
-
-
-
-
-
-
-
-
-
-
-
diff --git a/devtools/tasmrecover/dreamweb/vars.asm b/devtools/tasmrecover/dreamweb/vars.asm
index 8678231a9d..6d34074528 100644
--- a/devtools/tasmrecover/dreamweb/vars.asm
+++ b/devtools/tasmrecover/dreamweb/vars.asm
@@ -560,4 +560,3 @@ roomssample db 0
gameerror db 0
howmuchalloc dw 0
-
diff --git a/devtools/tasmrecover/dreamweb/vgafades.asm b/devtools/tasmrecover/dreamweb/vgafades.asm
index 06cc9d6a44..a1043d9cf5 100644
--- a/devtools/tasmrecover/dreamweb/vgafades.asm
+++ b/devtools/tasmrecover/dreamweb/vgafades.asm
@@ -862,5 +862,3 @@ Initialmoncols proc near
ret
endp
-
-
diff --git a/devtools/tasmrecover/dreamweb/vgagrafx.asm b/devtools/tasmrecover/dreamweb/vgagrafx.asm
index 110fc95ee0..4ba1b16ba1 100644
--- a/devtools/tasmrecover/dreamweb/vgagrafx.asm
+++ b/devtools/tasmrecover/dreamweb/vgagrafx.asm
@@ -1758,5 +1758,3 @@ Title6graphics db "DREAMWEB.I06",0
Title7graphics db "DREAMWEB.I07",0
Palettescreen db "DREAMWEB.PAL",0
-
-
diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover
index 705d3ac6b1..744e285fbf 100755
--- a/devtools/tasmrecover/tasm-recover
+++ b/devtools/tasmrecover/tasm-recover
@@ -29,6 +29,7 @@ p.strip_path = 3
context = p.parse('dreamweb/dreamweb.asm')
p.link()
generator = cpp(context, "DreamGen", blacklist = [
+ # These functions are not processed
'randomnumber',
'quickquit',
'quickquit2',
@@ -39,10 +40,22 @@ generator = cpp(context, "DreamGen", blacklist = [
'frameoutnm',
'frameoutbh',
'frameoutfx',
- 'cls',
+ 'cls',
+ 'clearwork',
'printundermon',
'kernchars',
'getnextword',
+ 'getnumber',
+ 'dumptextline',
+ 'printboth',
+ 'printchar',
+ 'printdirect',
+ 'printslow',
+ 'usetimedtext',
+ 'dumptimedtext',
+ 'setuptimedtemp',
+ 'putundertimed',
+ 'getundertimed',
'worktoscreen',
'width160',
'convertkey',
@@ -55,14 +68,108 @@ generator = cpp(context, "DreamGen", blacklist = [
'makesprite',
'showframe',
'initman',
+ 'aboutturn',
+ 'readheader',
+ 'fillspace',
+ 'getroomdata',
+ 'startloading',
+ 'showreelframe',
+ 'showgamereel',
+ 'getreelframeax',
+ 'findsource',
'walking',
+ 'autosetwalk',
+ 'checkdest',
'spriteupdate',
'dodoor',
+ 'lockeddoorway',
'liftsprite',
'frameoutv',
'modifychar',
+ 'allocatework',
'lockmon',
'cancelch0',
- 'cancelch1'
+ 'cancelch1',
+ 'getroomspaths',
+ 'makebackob',
+ 'dealwithspecial',
+ 'plotreel',
+ 'facerightway',
+ 'zoom',
+ 'crosshair',
+ 'showrain',
+ 'domix',
+ 'channel0tran',
+ 'makenextblock',
+ 'loopchannel0',
+ 'parseblaster',
+ 'deltextline',
+ 'doblocks',
+ 'checkifperson',
+ 'checkiffree',
+ 'getreelstart',
+ 'findobname',
+ 'copyname',
+ 'commandwithob',
+ 'showpanel',
+ 'updatepeople',
+ 'madmantext',
+ 'madmode',
+ 'movemap',
+ 'doorway',
+ 'widedoor',
+ 'showallobs',
+ 'addalong',
+ 'addlength',
+ 'getdimension',
+ 'getxad',
+ 'getyad',
+ 'getmapad',
+ 'calcmapad',
+ 'calcfrframe',
+ 'finalframe',
+ 'commandonly',
+ 'makename',
+ 'findlen',
+ 'blocknametext',
+ 'walktotext',
+ 'personnametext',
+ 'findxyfrompath',
+ 'findormake',
+ 'setallchanges',
+ 'dochange',
+ 'deletetaken',
+ 'placesetobject',
+ 'removesetobject',
+ 'showallfree',
+ 'adjustlen',
+ 'finishedwalking',
+ 'checkone',
+ 'getflagunderp',
+ 'walkandexamine',
+ 'obname',
+ 'delpointer',
+ 'showblink',
+ 'dumpblink',
+ 'dumppointer',
+ 'showpointer',
+ 'animpointer',
+ 'checkcoords',
+ 'readmouse',
+ 'readmouse1',
+ 'readmouse2',
+ 'readmouse3',
+ 'readmouse4',
+ 'waitframes',
+ 'drawflags',
+ ], skip_output = [
+ # These functions are processed but not output
+ 'dreamweb',
+ 'backobject',
+ 'mainman',
+ 'madman',
+ 'loadgame',
+ 'savegame',
+ 'doload'
])
generator.generate('dreamweb') #start routine
diff --git a/devtools/tasmrecover/tasm/cpp.py b/devtools/tasmrecover/tasm/cpp.py
index a73fd6c890..61edb41fb2 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 = []):
+ def __init__(self, context, namespace, skip_first = 0, blacklist = [], skip_output = []):
self.namespace = namespace
fname = namespace.lower() + ".cpp"
header = namespace.lower() + ".h"
@@ -79,8 +79,10 @@ class cpp:
self.proc_done = []
self.blacklist = blacklist
self.failed = list(blacklist)
+ self.skip_output = skip_output
self.translated = []
self.proc_addr = []
+ self.used_data_offsets = set()
self.methods = []
self.fd.write("""%s
@@ -98,11 +100,13 @@ namespace %s {
if self.indirection == -1:
try:
offset,p,p = self.context.get_offset(name)
- print "OFFSET = %d" %offset
- self.indirection = 0
- return str(offset)
except:
pass
+ else:
+ print "OFFSET = %d" %offset
+ self.indirection = 0
+ self.used_data_offsets.add((name,offset))
+ return "offset_%s" % (name,)
g = self.context.get_global(name)
if isinstance(g, op.const):
@@ -527,7 +531,8 @@ namespace %s {
self.proc.optimize(keep_labels=[label])
self.proc.visit(self, start)
self.body += "}\n";
- self.translated.insert(0, self.body)
+ if name not in self.skip_output:
+ self.translated.insert(0, self.body)
self.proc = None
if self.temps_count > 0:
raise Exception("temps count == %d at the exit of proc" %self.temps_count);
@@ -579,11 +584,17 @@ namespace %s {
data_bin = self.data_seg
data_impl = "\n\tstatic const uint8 src[] = {\n\t\t"
n = 0
+ comment = str()
for v in data_bin:
data_impl += "0x%02x, " %v
n += 1
+
+ comment += chr(v) if (v >= 0x20 and v < 0x7f and v != ord('\\')) else "."
if (n & 0xf) == 0:
- data_impl += "\n\t\t"
+ data_impl += "\n\t\t//0x%04x: %s\n\t\t" %(n - 16, comment)
+ comment = str()
+ elif (n & 0x3) == 0:
+ comment += " "
data_impl += "};\n\tds.assign(src, src + sizeof(src));\n"
self.hd.write(
"""\n#include "dreamweb/runtime.h"
@@ -602,6 +613,10 @@ public:
for name,addr in self.proc_addr:
self.hd.write("\tstatic const uint16 addr_%s = 0x%04x;\n" %(name, addr))
+
+ for name,addr in self.used_data_offsets:
+ self.hd.write("\tstatic const uint16 offset_%s = 0x%04x;\n" %(name, addr))
+
offsets = []
for k, v in self.context.get_globals().items():
if isinstance(v, op.var):
@@ -611,7 +626,7 @@ public:
offsets = sorted(offsets, key=lambda t: t[1])
for o in offsets:
- self.hd.write("\tconst static uint16 k%s = %s;\n" %o)
+ self.hd.write("\tstatic const uint16 k%s = %s;\n" %o)
self.hd.write("\n")
for p in set(self.methods):
if p in self.blacklist:
diff --git a/devtools/tasmrecover/tasm/op.py b/devtools/tasmrecover/tasm/op.py
index 6b19068f2a..30852bcb58 100644
--- a/devtools/tasmrecover/tasm/op.py
+++ b/devtools/tasmrecover/tasm/op.py
@@ -428,4 +428,3 @@ class label(baseop):
self.name = name
def visit(self, visitor):
visitor._label(self.name)
-