diff options
author | Bertrand Augereau | 2011-07-17 14:38:30 +0200 |
---|---|---|
committer | Bertrand Augereau | 2011-07-18 22:59:16 +0200 |
commit | 9072ecf781bb8fd116a02530631d3cfa1e44648b (patch) | |
tree | 56373a8bdb0440747aff34213ba63da599f0053d | |
parent | 7d9ff04fbfa5749ce1f7ca9d7b5bd8efb5b02bcc (diff) | |
download | scummvm-rg350-9072ecf781bb8fd116a02530631d3cfa1e44648b.tar.gz scummvm-rg350-9072ecf781bb8fd116a02530631d3cfa1e44648b.tar.bz2 scummvm-rg350-9072ecf781bb8fd116a02530631d3cfa1e44648b.zip |
DREAMWEB: Blacklisted 'kernchars' and 'getnextword'
-rwxr-xr-x | devtools/tasmrecover/tasm-recover | 2 | ||||
-rw-r--r-- | engines/dreamweb/dreamgen.cpp | 74 | ||||
-rw-r--r-- | engines/dreamweb/dreamgen.h | 6 | ||||
-rw-r--r-- | engines/dreamweb/stubs.cpp | 43 | ||||
-rw-r--r-- | engines/dreamweb/stubs.h | 3 |
5 files changed, 50 insertions, 78 deletions
diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover index 3f04bad1e9..6b1c6d9d23 100755 --- a/devtools/tasmrecover/tasm-recover +++ b/devtools/tasmrecover/tasm-recover @@ -20,6 +20,8 @@ generator = cpp(context, "DreamGen", blacklist = [ 'frameoutfx', 'cls', 'printundermon', + 'kernchars', + 'getnextword', 'worktoscreen', 'width160', 'convertkey', diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp index c5ada978c0..b8a5e5122b 100644 --- a/engines/dreamweb/dreamgen.cpp +++ b/engines/dreamweb/dreamgen.cpp @@ -4946,36 +4946,6 @@ nokern: cx = pop(); } -void DreamGenContext::kernchars() { - STACK_CHECK; - _cmp(al, 'a'); - if (flags.z()) - goto iskern; - _cmp(al, 'u'); - if (flags.z()) - goto iskern; - return; -iskern: - _cmp(ah, 'n'); - if (flags.z()) - goto kernit; - _cmp(ah, 't'); - if (flags.z()) - goto kernit; - _cmp(ah, 'r'); - if (flags.z()) - goto kernit; - _cmp(ah, 'i'); - if (flags.z()) - goto kernit; - _cmp(ah, 'l'); - if (flags.z()) - goto kernit; - return; -kernit: - _dec(cl); -} - void DreamGenContext::printslow() { STACK_CHECK; data.byte(kPointerframe) = 1; @@ -5347,48 +5317,6 @@ notcent2: cl = ch; } -void DreamGenContext::getnextword() { - STACK_CHECK; - bx = 0; -getloop: - ax = es.word(di); - _inc(di); - _inc(bh); - _cmp(al, ':'); - if (flags.z()) - goto endall; - _cmp(al, 0); - if (flags.z()) - goto endall; - _cmp(al, 32); - if (flags.z()) - goto endword; - modifychar(); - _cmp(al, 255); - if (flags.z()) - goto getloop; - push(ax); - _sub(al, 32); - ah = 0; - _add(ax, data.word(kCharshift)); - _add(ax, ax); - si = ax; - _add(ax, ax); - _add(si, ax); - cl = ds.byte(si+0); - ax = pop(); - kernchars(); - _add(bl, cl); - goto getloop; -endword: - _add(bl, 6); - al = 0; - return; -endall: - _add(bl, 6); - al = 1; -} - void DreamGenContext::fillryan() { STACK_CHECK; es = data.word(kBuffers); @@ -21610,14 +21538,12 @@ void DreamGenContext::__dispatch_call(uint16 addr) { case addr_set16colpalette: set16colpalette(); break; case addr_realcredits: realcredits(); break; case addr_printchar: printchar(); break; - case addr_kernchars: kernchars(); break; case addr_printslow: printslow(); break; case addr_waitframes: waitframes(); break; case addr_printboth: printboth(); break; case addr_printdirect: printdirect(); break; case addr_monprint: monprint(); break; case addr_getnumber: getnumber(); break; - case addr_getnextword: getnextword(); break; case addr_fillryan: fillryan(); break; case addr_fillopen: fillopen(); break; case addr_findallryan: findallryan(); break; diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h index f43e4742bc..032ad5847c 100644 --- a/engines/dreamweb/dreamgen.h +++ b/engines/dreamweb/dreamgen.h @@ -562,14 +562,12 @@ public: static const uint16 addr_findallryan = 0xc328; static const uint16 addr_fillopen = 0xc324; static const uint16 addr_fillryan = 0xc320; - static const uint16 addr_getnextword = 0xc31c; static const uint16 addr_getnumber = 0xc318; static const uint16 addr_monprint = 0xc314; static const uint16 addr_printdirect = 0xc310; static const uint16 addr_printboth = 0xc30c; static const uint16 addr_waitframes = 0xc308; static const uint16 addr_printslow = 0xc304; - static const uint16 addr_kernchars = 0xc300; static const uint16 addr_printchar = 0xc2fc; static const uint16 addr_realcredits = 0xc2f8; static const uint16 addr_set16colpalette = 0xc2f4; @@ -1396,7 +1394,7 @@ public: void showdiscops(); void advisor(); void additionaltext(); - void kernchars(); + //void kernchars(); void othersmoker(); void autosetwalk(); void setuptimedtemp(); @@ -1967,7 +1965,7 @@ public: void checkforshake(); void usebuttona(); void cancelch1(); - void getnextword(); + //void getnextword(); void generalerror(); void actualload(); void allocateload(); diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp index 1bad368d43..e7fb421353 100644 --- a/engines/dreamweb/stubs.cpp +++ b/engines/dreamweb/stubs.cpp @@ -217,6 +217,49 @@ void DreamGenContext::setmouse() { data.word(kOldpointerx) = 0xffff; } +void DreamGenContext::getnextword() { + uint8 totalWidth = 0; + bh = 0; + while(true) { + ax = es.word(di); + uint8 firstChar = al; + uint8 secondChar = ah; + ++di; + ++bh; + if ((firstChar == ':') || (firstChar == 0)) { //endall + totalWidth += 6; + bl = totalWidth; + al = 1; + return; + } + if (firstChar == 32) { //endword + totalWidth += 6; + bl = totalWidth; + al = 0; + return; + } + firstChar = engine->modifyChar(firstChar); + if (firstChar != 255) { + uint8 width = ds.byte(6*(firstChar - 32 + data.word(kCharshift))); + width = kernchars(firstChar, secondChar, width); + totalWidth += width; + bl = totalWidth; + } + } +} + +uint8 DreamGenContext::kernchars(uint8 firstChar, uint8 secondChar, uint8 width) { + if ((firstChar == 'a') || (al == 'u')) { + if ((secondChar == 'n') || (secondChar == 't') || (secondChar == 'r') || (secondChar == 'i') || (secondChar == 'l')) + return width-1; + } + return width; +} + +void DreamGenContext::kernchars() { + cl = kernchars(al, ah, cl); +} + void DreamGenContext::gettime() { TimeDate t; g_system->getTimeAndDate(t); diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h index 4b7f956296..70c1cfda13 100644 --- a/engines/dreamweb/stubs.h +++ b/engines/dreamweb/stubs.h @@ -14,6 +14,9 @@ void seecommandtail(); void randomnumber(); void quickquit2(); + void getnextword(); + void kernchars(); + uint8 kernchars(uint8 firstChar, uint8 secondChar, uint8 width); Sprite* spritetable(); void showframe(); uint16 showframeCPP(uint16 dst, uint16 src, uint16 x, uint16 y, uint8 frameNumber, uint8 effectsFlag); |