aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xdevtools/tasmrecover/tasm-recover2
-rw-r--r--engines/dreamweb/dreamgen.cpp27
-rw-r--r--engines/dreamweb/dreamgen.h8
-rw-r--r--engines/dreamweb/stubs.h2
-rw-r--r--engines/dreamweb/talk.cpp12
5 files changed, 19 insertions, 32 deletions
diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover
index 0bce26104b..e37f155bff 100755
--- a/devtools/tasmrecover/tasm-recover
+++ b/devtools/tasmrecover/tasm-recover
@@ -202,6 +202,8 @@ generator = cpp(context, "DreamGen", blacklist = [
'showcity',
'examineobtext',
'wornerror',
+ 'getpersframe',
+ 'convicons',
], skip_output = [
# These functions are processed but not output
'dreamweb',
diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp
index 201d993443..a092509262 100644
--- a/engines/dreamweb/dreamgen.cpp
+++ b/engines/dreamweb/dreamgen.cpp
@@ -5950,31 +5950,6 @@ notnexttalk:
data.byte(kVolumeto) = 0;
}
-void DreamGenContext::convicons() {
- STACK_CHECK;
- al = data.byte(kCharacter);
- _and(al, 127);
- getpersframe();
- di = 234;
- bx = 2;
- data.word(kCurrentframe) = ax;
- findsource();
- ax = data.word(kCurrentframe);
- _sub(ax, data.word(kTakeoff));
- ah = 0;
- showframe();
-}
-
-void DreamGenContext::getpersframe() {
- STACK_CHECK;
- ah = 0;
- _add(ax, ax);
- bx = ax;
- es = data.word(kPeople);
- _add(bx, (0));
- ax = es.word(bx);
-}
-
void DreamGenContext::starttalk() {
STACK_CHECK;
data.byte(kTalkmode) = 0;
@@ -16833,8 +16808,6 @@ void DreamGenContext::__dispatch_call(uint16 addr) {
case addr_redrawmainscrn: redrawmainscrn(); break;
case addr_getback1: getback1(); break;
case addr_talk: talk(); break;
- case addr_convicons: convicons(); break;
- case addr_getpersframe: getpersframe(); break;
case addr_starttalk: starttalk(); break;
case addr_getpersontext: getpersontext(); break;
case addr_moretalk: moretalk(); break;
diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h
index b91bc54349..c29463a258 100644
--- a/engines/dreamweb/dreamgen.h
+++ b/engines/dreamweb/dreamgen.h
@@ -422,8 +422,6 @@ public:
static const uint16 addr_moretalk = 0xc494;
static const uint16 addr_getpersontext = 0xc490;
static const uint16 addr_starttalk = 0xc48c;
- static const uint16 addr_getpersframe = 0xc488;
- static const uint16 addr_convicons = 0xc484;
static const uint16 addr_talk = 0xc480;
static const uint16 addr_getback1 = 0xc47c;
static const uint16 addr_redrawmainscrn = 0xc478;
@@ -1345,7 +1343,7 @@ public:
//void deltextline();
void entercode();
void getopenedsize();
- void getpersframe();
+ //void getpersframe();
void doshake();
void resetkeyboard();
//void showpanel();
@@ -1539,6 +1537,7 @@ public:
//void showcity();
void dumpsymbol();
void disablepath();
+ //void convicons();
void buttonsix();
void intro2text();
void showouterpad();
@@ -1612,9 +1611,8 @@ public:
void showmonk();
void diarykeyn();
void set16colpalette();
- void convicons();
- void interviewer();
void sparky();
+ void interviewer();
void purgeanitem();
void madman();
void createpanel();
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index 458e731679..7057c478bf 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -247,4 +247,6 @@
void examineobtext();
void sortoutmap();
void showcity();
+ uint16 getpersframe(uint8 index);
+ void convicons();
diff --git a/engines/dreamweb/talk.cpp b/engines/dreamweb/talk.cpp
index 75d91f2bae..91291e024a 100644
--- a/engines/dreamweb/talk.cpp
+++ b/engines/dreamweb/talk.cpp
@@ -24,5 +24,17 @@
namespace DreamGen {
+uint16 DreamGenContext::getpersframe(uint8 index) {
+ return segRef(data.word(kPeople)).word(kPersonframes + index * 2);
+}
+
+void DreamGenContext::convicons() {
+ uint8 index = data.byte(kCharacter) & 127;
+ data.word(kCurrentframe) = getpersframe(index);
+ Frame *frame = findsourceCPP();
+ uint16 frameNumber = (data.word(kCurrentframe) - data.word(kTakeoff)) & 0xff;
+ showframe(frame, 234, 2, frameNumber, 0);
+}
+
} /*namespace dreamgen */