diff options
-rwxr-xr-x | devtools/tasmrecover/tasm-recover | 1 | ||||
-rw-r--r-- | engines/dreamweb/dreamgen.cpp | 53 | ||||
-rw-r--r-- | engines/dreamweb/dreamgen.h | 1 | ||||
-rw-r--r-- | engines/dreamweb/stubs.cpp | 30 | ||||
-rw-r--r-- | engines/dreamweb/stubs.h | 1 |
5 files changed, 31 insertions, 55 deletions
diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover index e7716acb34..8952c3e289 100755 --- a/devtools/tasmrecover/tasm-recover +++ b/devtools/tasmrecover/tasm-recover @@ -707,6 +707,7 @@ generator = cpp(context, "DreamGen", blacklist = [ 'redrawmainscrn', 'reelsonscreen', 'reexfromopen', + 'reminders', 'removeemm', 'removefreeobject', 'removesetobject', diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp index a0ce29d416..dff190a6bf 100644 --- a/engines/dreamweb/dreamgen.cpp +++ b/engines/dreamweb/dreamgen.cpp @@ -26,59 +26,6 @@ namespace DreamGen { -void DreamGenContext::reminders() { - STACK_CHECK; - _cmp(data.byte(kReallocation), 24); - if (!flags.z()) - return /* (notinedenslift) */; - _cmp(data.byte(kMapx), 44); - if (!flags.z()) - return /* (notinedenslift) */; - _cmp(data.byte(kProgresspoints), 0); - if (!flags.z()) - return /* (notfirst) */; - al = 'D'; - ah = 'K'; - cl = 'E'; - ch = 'Y'; - isRyanHolding(); - if (flags.z()) - goto forgotone; - al = 'C'; - ah = 'S'; - cl = 'H'; - ch = 'R'; - findExObject(); - _cmp(al, (114)); - if (flags.z()) - goto forgotone; - ax = es.word(bx+2); - _cmp(al, 4); - if (!flags.z()) - goto forgotone; - _cmp(ah, 255); - if (flags.z()) - goto havegotcard; - cl = 'P'; - ch = 'U'; - dl = 'R'; - dh = 'S'; - _xchg(al, ah); - compare(); - if (!flags.z()) - goto forgotone; -havegotcard: - _inc(data.byte(kProgresspoints)); - return; -forgotone: - al = 50; - bl = 54; - bh = 70; - cx = 48; - dx = 8; - setupTimedUse(); -} - void DreamGenContext::transferMap() { STACK_CHECK; di = data.word(kExframepos); diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h index b13d150ad4..76fa167389 100644 --- a/engines/dreamweb/dreamgen.h +++ b/engines/dreamweb/dreamgen.h @@ -476,7 +476,6 @@ public: void findFirstPath(); void startTalk(); void getAnyAd(); - void reminders(); void getFreeAd(); void dirFile(); void pickupConts(); diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp index 6989a57a93..c755b93dec 100644 --- a/engines/dreamweb/stubs.cpp +++ b/engines/dreamweb/stubs.cpp @@ -3784,7 +3784,7 @@ void DreamGenContext::afterNewRoom() { zoom(); workToScreenM(); walkIntoRoom(); - reminders(); + edensFlatReminders(); atmospheres(); } @@ -4616,4 +4616,32 @@ void DreamGenContext::lookAtPlace() { workToScreenM(); } +void DreamGenContext::edensFlatReminders() { + if (data.byte(kReallocation) != 24 || data.byte(kMapx) != 44) + return; // not in Eden's lift + + if (data.byte(kProgresspoints)) + return; // not the first time in Eden's apartment + + uint16 exObjextIndex = findExObject("CSHR"); + if (!isRyanHolding("DKEY") || exObjextIndex == kNumexobjects) { + DreamBase::setupTimedUse(50, 48, 8, 54, 70); // forgot something + return; + } + + DynObject *object = getExAd(exObjextIndex); + + if (object->mapad[0] != 4) { + DreamBase::setupTimedUse(50, 48, 8, 54, 70); // forgot something + return; + } else if (object->mapad[1] != 255) { + if (!compare(object->mapad[1], object->mapad[0], "PURS")) { + DreamBase::setupTimedUse(50, 48, 8, 54, 70); // forgot something + return; + } + } + + data.byte(kProgresspoints)++; // got card +} + } // End of namespace DreamGen diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h index 1a76a785b8..f50f4d883d 100644 --- a/engines/dreamweb/stubs.h +++ b/engines/dreamweb/stubs.h @@ -377,5 +377,6 @@ void lookAtPlace(); void inToInv(); void outOfInv(); + void edensFlatReminders(); #endif |