aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xdevtools/tasmrecover/tasm-recover1
-rw-r--r--engines/dreamweb/dreamgen.cpp63
-rw-r--r--engines/dreamweb/dreamgen.h5
-rw-r--r--engines/dreamweb/object.cpp38
-rw-r--r--engines/dreamweb/stubs.h1
5 files changed, 42 insertions, 66 deletions
diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover
index 61293409d6..c68483fc77 100755
--- a/devtools/tasmrecover/tasm-recover
+++ b/devtools/tasmrecover/tasm-recover
@@ -480,6 +480,7 @@ generator = cpp(context, "DreamGen", blacklist = [
'helicopter',
'hotelbell',
'hotelcontrol',
+ 'identifyob',
'initialinv',
'initman',
'initrain',
diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp
index 0938efca37..ddc599f7e8 100644
--- a/engines/dreamweb/dreamgen.cpp
+++ b/engines/dreamweb/dreamgen.cpp
@@ -3104,69 +3104,6 @@ void DreamGenContext::clearChanges() {
_stosw(cx, true);
}
-void DreamGenContext::identifyOb() {
- STACK_CHECK;
- _cmp(data.word(kWatchingtime), 0);
- if (!flags.z())
- { blank(); return; };
- ax = data.word(kMousex);
- _sub(ax, data.word(kMapadx));
- _cmp(ax, 22*8);
- if (flags.c())
- goto notover1;
- blank();
- return;
-notover1:
- bx = data.word(kMousey);
- _sub(bx, data.word(kMapady));
- _cmp(bx, 20*8);
- if (flags.c())
- goto notover2;
- blank();
- return;
-notover2:
- data.byte(kInmaparea) = 1;
- ah = bl;
- push(ax);
- findPathOfPoint();
- data.byte(kPointerspath) = dl;
- ax = pop();
- push(ax);
- findFirstPath();
- data.byte(kPointerfirstpath) = al;
- ax = pop();
- checkIfEx();
- if (!flags.z())
- return /* (finishidentify) */;
- checkIfFree();
- if (!flags.z())
- return /* (finishidentify) */;
- checkIfPerson();
- if (!flags.z())
- return /* (finishidentify) */;
- checkIfSet();
- if (!flags.z())
- return /* (finishidentify) */;
- ax = data.word(kMousex);
- _sub(ax, data.word(kMapadx));
- cl = al;
- ax = data.word(kMousey);
- _sub(ax, data.word(kMapady));
- ch = al;
- checkOne();
- _cmp(al, 0);
- if (flags.z())
- goto nothingund;
- _cmp(data.byte(kMandead), 1);
- if (flags.z())
- goto nothingund;
- ah = 3;
- obName();
- return;
-nothingund:
- blank();
-}
-
void DreamGenContext::findPathOfPoint() {
STACK_CHECK;
push(ax);
diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h
index f3cedd890d..5273270ce5 100644
--- a/engines/dreamweb/dreamgen.h
+++ b/engines/dreamweb/dreamgen.h
@@ -475,12 +475,11 @@ public:
#include "stubs.h" // Allow hand-reversed functions to have a signature different than void f()
void fadeDownMon();
- void identifyOb();
void getPersonText();
void clearBuffers();
void getObTextStart();
void checkObjectSize();
- void fillOpen();
+ void showSlots();
void useCashCard();
void moneyPoke();
void doSomeTalk();
@@ -519,7 +518,7 @@ public:
void rollEm();
void lookAtPlace();
void findAllOpen();
- void showSlots();
+ void fillOpen();
void deleteExObject();
void getEitherAd();
void setPickup();
diff --git a/engines/dreamweb/object.cpp b/engines/dreamweb/object.cpp
index 5f326a5a03..64f70ada98 100644
--- a/engines/dreamweb/object.cpp
+++ b/engines/dreamweb/object.cpp
@@ -312,4 +312,42 @@ void DreamGenContext::openOb() {
_openChangeSize = getOpenedSizeCPP() * kItempicsize + kInventx;
}
+void DreamGenContext::identifyOb() {
+ if (data.word(kWatchingtime) != 0 ||
+ data.word(kMousex) - data.word(kMapadx) >= 22 * 8 ||
+ data.word(kMousey) - data.word(kMapady) >= 20 * 8) {
+ blank();
+ return;
+ }
+
+ data.byte(kInmaparea) = 1;
+ ah = bl;
+ push(ax);
+ findPathOfPoint();
+ data.byte(kPointerspath) = dl;
+ ax = pop();
+ push(ax);
+ findFirstPath();
+ data.byte(kPointerfirstpath) = al;
+ ax = pop();
+
+ byte x = al;
+ byte y = ah;
+
+ if (checkIfEx(x, y) || checkIfFree(x, y) ||
+ checkIfPerson(x, y) || checkIfSet(x, y))
+ return; // finishidentify
+
+ x = (data.word(kMousex) - data.word(kMapadx)) & 0xFF;
+ y = (data.word(kMousey) - data.word(kMapady)) & 0xFF;
+ byte flag, flagEx, type, flagX, flagY;
+
+ checkOne(x, y, &flag, &flagEx, &type, &flagX, &flagY);
+
+ if (type != 0 && data.byte(kMandead) != 1)
+ obName(type, 3);
+ else
+ blank();
+}
+
} // End of namespace DreamGen
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index d3f656db45..6140f3d0d4 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -392,5 +392,6 @@
void withWhat();
void notHeldError();
void useGun();
+ void identifyOb();
#endif