aboutsummaryrefslogtreecommitdiff
path: root/engines/dreamweb
diff options
context:
space:
mode:
authorBertrand Augereau2011-09-07 03:41:05 +0200
committerBertrand Augereau2011-09-07 03:41:05 +0200
commit09a734bd25a341ec0483f28c77406d6de41ab30f (patch)
treeddd5224d71e00bf07187491721eebc19282241e0 /engines/dreamweb
parent230d17ed302f3c3cddb72cd7b1424ded2d5494f9 (diff)
downloadscummvm-rg350-09a734bd25a341ec0483f28c77406d6de41ab30f.tar.gz
scummvm-rg350-09a734bd25a341ec0483f28c77406d6de41ab30f.tar.bz2
scummvm-rg350-09a734bd25a341ec0483f28c77406d6de41ab30f.zip
DREAMWEB: 'findnextcolon' ported to C++
Diffstat (limited to 'engines/dreamweb')
-rw-r--r--engines/dreamweb/dreamgen.cpp14
-rw-r--r--engines/dreamweb/dreamgen.h3
-rw-r--r--engines/dreamweb/stubs.cpp17
-rw-r--r--engines/dreamweb/stubs.h3
4 files changed, 20 insertions, 17 deletions
diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp
index 068f3fcff3..5c71dc97ed 100644
--- a/engines/dreamweb/dreamgen.cpp
+++ b/engines/dreamweb/dreamgen.cpp
@@ -4253,19 +4253,6 @@ foundmatch:
bx = pop();
}
-void DreamGenContext::findnextcolon() {
- STACK_CHECK;
-isntcolon:
- al = es.byte(si);
- _inc(si);
- _cmp(al, 0);
- if (flags.z())
- return /* (endofcolon) */;
- _cmp(al, ':');
- if (!flags.z())
- goto isntcolon;
-}
-
void DreamGenContext::inventory() {
STACK_CHECK;
_cmp(data.byte(kMandead), 1);
@@ -17072,7 +17059,6 @@ void DreamGenContext::__dispatch_call(uint16 addr) {
case addr_obsthatdothings: obsthatdothings(); break;
case addr_getobtextstart: getobtextstart(); break;
case addr_searchforsame: searchforsame(); break;
- case addr_findnextcolon: findnextcolon(); break;
case addr_inventory: inventory(); break;
case addr_setpickup: setpickup(); break;
case addr_examinventory: examinventory(); break;
diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h
index 6db6f73048..9e209f7f95 100644
--- a/engines/dreamweb/dreamgen.h
+++ b/engines/dreamweb/dreamgen.h
@@ -477,7 +477,6 @@ public:
static const uint16 addr_examinventory = 0xc384;
static const uint16 addr_setpickup = 0xc380;
static const uint16 addr_inventory = 0xc37c;
- static const uint16 addr_findnextcolon = 0xc378;
static const uint16 addr_searchforsame = 0xc374;
static const uint16 addr_getobtextstart = 0xc370;
static const uint16 addr_obsthatdothings = 0xc36c;
@@ -1852,7 +1851,7 @@ public:
void soundonreels();
void usegun();
void autoappear();
- void findnextcolon();
+ //void findnextcolon();
//void readmouse4();
void openryan();
void callhotellift();
diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp
index 60bd317a2b..bd589b2d0d 100644
--- a/engines/dreamweb/stubs.cpp
+++ b/engines/dreamweb/stubs.cpp
@@ -1899,5 +1899,22 @@ void DreamGenContext::hangonp(uint16 count) {
data.byte(kPointermode) = 0;
}
+void DreamGenContext::findnextcolon() {
+ uint8 *initialString = es.ptr(si, 0);
+ uint8 *string = initialString;
+ al = findnextcolon(&string);
+ si += (string - initialString);
+}
+
+uint8 DreamGenContext::findnextcolon(uint8 **string) {
+ uint8 c;
+ do {
+ c = **string;
+ ++(*string);
+ } while ((c != 0) && (c != ':'));
+ return c;
+}
+
+
} /*namespace dreamgen */
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index 943d890afa..3149363301 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -235,5 +235,6 @@
void hangon(uint16 frameCount);
void hangonp();
void hangonp(uint16 count);
-
+ uint8 findnextcolon(uint8 **string);
+ void findnextcolon();