aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xdevtools/tasmrecover/tasm-recover1
-rw-r--r--engines/dreamweb/dreamgen.cpp39
-rw-r--r--engines/dreamweb/dreamgen.h1
-rw-r--r--engines/dreamweb/stubs.h1
-rw-r--r--engines/dreamweb/talk.cpp25
5 files changed, 26 insertions, 41 deletions
diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover
index 65c0611c14..4e8a0c9adf 100755
--- a/devtools/tasmrecover/tasm-recover
+++ b/devtools/tasmrecover/tasm-recover
@@ -848,6 +848,7 @@ generator = cpp(context, "DreamGen", blacklist = [
'startdmablock',
'startloading',
'startpaltoend',
+ 'starttalk',
'startup',
'startup1',
'steady',
diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp
index b9816c28b2..487839c03b 100644
--- a/engines/dreamweb/dreamgen.cpp
+++ b/engines/dreamweb/dreamgen.cpp
@@ -975,45 +975,6 @@ cantpurge2:
goto lookforpurge2;
}
-void DreamGenContext::startTalk() {
- STACK_CHECK;
- data.byte(kTalkmode) = 0;
- al = data.byte(kCharacter);
- _and(al, 127);
- getPersonText();
- data.word(kCharshift) = 91+91;
- di = 66;
- bx = 64;
- dl = 241;
- al = 0;
- ah = 79;
- printDirect();
- data.word(kCharshift) = 0;
- di = 66;
- bx = 80;
- dl = 241;
- al = 0;
- ah = 0;
- printDirect();
- data.byte(kSpeechloaded) = 0;
- al = data.byte(kCharacter);
- _and(al, 127);
- ah = 0;
- cx = 64;
- _mul(cx);
- cl = 'C';
- dl = 'R';
- dh = data.byte(kReallocation);
- loadSpeech();
- _cmp(data.byte(kSpeechloaded), 1);
- if (!flags.z())
- return /* (nospeech1) */;
- data.byte(kVolumedirection) = 1;
- data.byte(kVolumeto) = 6;
- al = 50+12;
- playChannel1();
-}
-
void DreamGenContext::getPersonText() {
STACK_CHECK;
ah = 0;
diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h
index 10abde7fff..f6399b4e7d 100644
--- a/engines/dreamweb/dreamgen.h
+++ b/engines/dreamweb/dreamgen.h
@@ -460,7 +460,6 @@ public:
void outOfOpen();
void dirCom();
void findFirstPath();
- void startTalk();
void getAnyAd();
void getFreeAd();
void dirFile();
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index c0c8aede5b..5f777e4e9a 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -98,6 +98,7 @@
void showCity();
uint16 getPersFrame(uint8 index);
void convIcons();
+ void startTalk();
void examineOb(bool examineAgain = true);
void dumpWatch();
void transferText();
diff --git a/engines/dreamweb/talk.cpp b/engines/dreamweb/talk.cpp
index 40c514b34a..20ac58dd7a 100644
--- a/engines/dreamweb/talk.cpp
+++ b/engines/dreamweb/talk.cpp
@@ -84,7 +84,30 @@ uint16 DreamGenContext::getPersFrame(uint8 index) {
return getSegment(data.word(kPeople)).word(kPersonframes + index * 2);
}
-// TODO: put Starttalk here
+void DreamGenContext::startTalk() {
+ data.byte(kTalkmode) = 0;
+
+ al = (data.byte(kCharacter) & 0x7F);
+ getPersonText();
+ const uint8 *str = es.ptr(si, 0);
+ uint16 y;
+
+ data.word(kCharshift) = 91+91;
+ y = 64;
+ printDirect(&str, 66, &y, 241, true);
+
+ data.word(kCharshift) = 0;
+ y = 80;
+ printDirect(&str, 66, &y, 241, true);
+
+ data.byte(kSpeechloaded) = 0;
+ loadSpeech('R', data.byte(kReallocation), 'C', 64*(data.byte(kCharacter) & 0x7F));
+ if (data.byte(kSpeechloaded) == 1) {
+ data.byte(kVolumedirection) = 1;
+ data.byte(kVolumeto) = 6;
+ playChannel1(50 + 12);
+ }
+}
// TODO: put Getpersontext here