diff options
author | Matthew Hoops | 2011-08-26 22:44:17 -0400 |
---|---|---|
committer | Matthew Hoops | 2011-08-26 22:44:17 -0400 |
commit | 4a69dc13d92e82fff85dc5a3a923b74ced259ffa (patch) | |
tree | 8945cd3745fd65f28b043caf7b1beddbbce2b2a1 /devtools/tasmrecover | |
parent | ad293b249e74dd1cfbdbd721d02145efbdaf9eca (diff) | |
parent | 5e174cbfe466dbbe8e5470b0a00de1481b986181 (diff) | |
download | scummvm-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')
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) - |