aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xdevtools/tasmrecover/tasm-recover1
-rw-r--r--engines/dreamweb/dreamgen.cpp79
-rw-r--r--engines/dreamweb/dreamgen.h10
-rw-r--r--engines/dreamweb/stubs.cpp54
-rw-r--r--engines/dreamweb/stubs.h1
5 files changed, 60 insertions, 85 deletions
diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover
index 86b789bb4c..68312eca45 100755
--- a/devtools/tasmrecover/tasm-recover
+++ b/devtools/tasmrecover/tasm-recover
@@ -153,6 +153,7 @@ generator = cpp(context, "DreamGen", blacklist = [
'dumpblink',
'dumppointer',
'showpointer',
+ 'animpointer',
'checkcoords',
], skip_output = [
# These functions are processed but not output
diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp
index ffe8d81c3a..01de5fc7a8 100644
--- a/engines/dreamweb/dreamgen.cpp
+++ b/engines/dreamweb/dreamgen.cpp
@@ -16352,84 +16352,6 @@ _tmp1:
multiget();
}
-void DreamGenContext::animpointer() {
- STACK_CHECK;
- _cmp(data.byte(kPointermode), 2);
- if (flags.z())
- goto combathand;
- _cmp(data.byte(kPointermode), 3);
- if (flags.z())
- goto mousehand;
- _cmp(data.word(kWatchingtime), 0);
- if (flags.z())
- goto notwatchpoint;
- data.byte(kPointerframe) = 11;
- return;
-notwatchpoint:
- data.byte(kPointerframe) = 0;
- _cmp(data.byte(kInmaparea), 0);
- if (flags.z())
- return /* (gothand) */;
- _cmp(data.byte(kPointerfirstpath), 0);
- if (flags.z())
- return /* (gothand) */;
- getflagunderp();
- _cmp(cl, 2);
- if (flags.c())
- return /* (gothand) */;
- _cmp(cl, 128);
- if (!flags.c())
- return /* (gothand) */;
- data.byte(kPointerframe) = 3;
- _test(cl, 4);
- if (!flags.z())
- return /* (gothand) */;
- data.byte(kPointerframe) = 4;
- _test(cl, 16);
- if (!flags.z())
- return /* (gothand) */;
- data.byte(kPointerframe) = 5;
- _test(cl, 2);
- if (!flags.z())
- return /* (gothand) */;
- data.byte(kPointerframe) = 6;
- _test(cl, 8);
- if (!flags.z())
- return /* (gothand) */;
- data.byte(kPointerframe) = 8;
- return;
-mousehand:
- _cmp(data.byte(kPointerspeed), 0);
- if (flags.z())
- goto rightspeed3;
- _dec(data.byte(kPointerspeed));
- goto finflashmouse;
-rightspeed3:
- data.byte(kPointerspeed) = 5;
- _inc(data.byte(kPointercount));
- _cmp(data.byte(kPointercount), 16);
- if (!flags.z())
- goto finflashmouse;
- data.byte(kPointercount) = 0;
-finflashmouse:
- al = data.byte(kPointercount);
- ah = 0;
- bx = offset_flashmousetab;
- _add(bx, ax);
- al = cs.byte(bx);
- data.byte(kPointerframe) = al;
- return;
-combathand:
- data.byte(kPointerframe) = 0;
- _cmp(data.byte(kReallocation), 14);
- if (!flags.z())
- return /* (notarrow) */;
- _cmp(data.byte(kCommandtype), 211);
- if (!flags.z())
- return /* (notarrow) */;
- data.byte(kPointerframe) = 5;
-}
-
void DreamGenContext::readmouse() {
STACK_CHECK;
ax = data.word(kMousebutton);
@@ -18692,7 +18614,6 @@ void DreamGenContext::__dispatch_call(uint16 addr) {
case addr_dumpzoom: dumpzoom(); break;
case addr_putunderzoom: putunderzoom(); break;
case addr_undertextline: undertextline(); break;
- case addr_animpointer: animpointer(); break;
case addr_setmouse: setmouse(); break;
case addr_readmouse: readmouse(); break;
case addr_mousecall: mousecall(); break;
diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h
index a6a32c22ac..d92ce478d1 100644
--- a/engines/dreamweb/dreamgen.h
+++ b/engines/dreamweb/dreamgen.h
@@ -85,7 +85,6 @@ public:
static const uint16 addr_mousecall = 0xcae8;
static const uint16 addr_readmouse = 0xcae4;
static const uint16 addr_setmouse = 0xcae0;
- static const uint16 addr_animpointer = 0xcadc;
static const uint16 addr_undertextline = 0xcad0;
static const uint16 addr_putunderzoom = 0xcabc;
static const uint16 addr_dumpzoom = 0xcab8;
@@ -683,14 +682,13 @@ public:
static const uint16 offset_gameerror2 = 0x0fb2;
static const uint16 offset_loadlist = 0x0ef0;
static const uint16 offset_gameerror6 = 0x10be;
- static const uint16 offset_flashmousetab = 0x1707;
static const uint16 offset_speechfile = 0x13f1;
static const uint16 offset_atmospherelist = 0x147e;
static const uint16 offset_gameerror4 = 0x1037;
static const uint16 offset_gameerror1 = 0x0f6e;
static const uint16 offset_examlist = 0x09be;
static const uint16 offset_gameinfo = 0x1170;
- static const uint16 offset_decidelist = 0x13c1;
+ static const uint16 offset_opslist = 0x0ec6;
static const uint16 offset_invlist1 = 0x09fc;
static const uint16 offset_money2poke = 0x0d97;
static const uint16 offset_talklist = 0x0a64;
@@ -710,7 +708,7 @@ public:
static const uint16 offset_gameerror3 = 0x1003;
static const uint16 offset_rainlocations = 0x0459;
static const uint16 offset_diarylist = 0x0e9c;
- static const uint16 offset_opslist = 0x0ec6;
+ static const uint16 offset_decidelist = 0x13c1;
static const uint16 offset_symbollist = 0x0e5e;
static const uint16 offset_folderlist = 0x0e34;
static const uint16 offset_facelist = 0x0451;
@@ -1368,7 +1366,7 @@ public:
//void findobname();
//void makename();
void buttonfour();
- void animpointer();
+ void dosometalk();
//void lockmon();
//void dochange();
void getanyaddir();
@@ -1685,6 +1683,7 @@ public:
void textformonk();
void reconstruct();
void soldier1();
+ //void animpointer();
void getundercentre();
void checkforexit();
void loadseg();
@@ -2015,7 +2014,6 @@ public:
void emergencypurge();
void usemenu();
void alleybarksound();
- void dosometalk();
void usecart();
void intromusic();
void quitkey();
diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp
index 94d7a74d11..d1928072cb 100644
--- a/engines/dreamweb/stubs.cpp
+++ b/engines/dreamweb/stubs.cpp
@@ -1508,6 +1508,60 @@ void DreamGenContext::showpointer() {
}
}
+void DreamGenContext::animpointer() {
+
+ if (data.byte(kPointermode) == 2) {
+ data.byte(kPointerframe) = 0;
+ if ((data.byte(kReallocation) == 14) && (data.byte(kCommandtype) == 211))
+ data.byte(kPointerframe) = 5;
+ return;
+ } else if (data.byte(kPointermode) == 3) {
+ if (data.byte(kPointerspeed) != 0) {
+ --data.byte(kPointerspeed);
+ } else {
+ data.byte(kPointerspeed) = 5;
+ ++data.byte(kPointercount);
+ if (data.byte(kPointercount) == 16)
+ data.byte(kPointercount) = 0;
+ }
+ static const uint8 flashMouseTab[] = { 1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2 };
+ data.byte(kPointerframe) = flashMouseTab[data.byte(kPointercount)];
+ return;
+ }
+ if (data.word(kWatchingtime) != 0) {
+ data.byte(kPointerframe) = 11;
+ return;
+ }
+ data.byte(kPointerframe) = 0;
+ if (data.byte(kInmaparea) == 0)
+ return;
+ if (data.byte(kPointerfirstpath) == 0)
+ return;
+ uint8 flag, flagEx;
+ getflagunderp(&flag, &flagEx);
+ if (flag < 2)
+ return;
+ if (flag >= 128)
+ return;
+ if (flag & 4) {
+ data.byte(kPointerframe) = 3;
+ return;
+ }
+ if (flag & 16) {
+ data.byte(kPointerframe) = 4;
+ return;
+ }
+ if (flag & 2) {
+ data.byte(kPointerframe) = 5;
+ return;
+ }
+ if (flag & 8) {
+ data.byte(kPointerframe) = 6;
+ return;
+ }
+ data.byte(kPointerframe) = 8;
+}
+
bool DreamGenContext::isCD() {
// The original sources has two codepaths depending if the game is 'if cd' or not
// This is a hack to guess which version to use with the assumption that if we have a cd version
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index dcd715a01d..0409c3a9cd 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -182,6 +182,7 @@
void dumpblink();
void dumppointer();
void showpointer();
+ void animpointer();
void checkcoords();
void checkcoords(const RectWithCallback *rectWithCallbacks);