diff options
-rwxr-xr-x | devtools/tasmrecover/tasm-recover | 1 | ||||
-rw-r--r-- | engines/dreamweb/dreamgen.cpp | 19 | ||||
-rw-r--r-- | engines/dreamweb/dreamgen.h | 3 | ||||
-rw-r--r-- | engines/dreamweb/stubs.cpp | 11 | ||||
-rw-r--r-- | engines/dreamweb/stubs.h | 2 |
5 files changed, 15 insertions, 21 deletions
diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover index 85a1b4b478..b76edfe351 100755 --- a/devtools/tasmrecover/tasm-recover +++ b/devtools/tasmrecover/tasm-recover @@ -165,6 +165,7 @@ generator = cpp(context, "DreamGen", blacklist = [ 'waitframes', 'drawflags', 'addtopeoplelist', + 'getexpos', ], skip_output = [ # These functions are processed but not output 'dreamweb', diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp index 5b1e30fddb..d2a9651267 100644 --- a/engines/dreamweb/dreamgen.cpp +++ b/engines/dreamweb/dreamgen.cpp @@ -6026,24 +6026,6 @@ moretext: goto moretext; } -void DreamGenContext::getexpos() { - STACK_CHECK; - es = data.word(kExtras); - al = 0; - di = (0+2080+30000); -tryanotherex: - _cmp(es.byte(di+2), 255); - if (flags.z()) - goto foundnewex; - _add(di, 16); - _inc(al); - _cmp(al, (114)); - if (!flags.z()) - goto tryanotherex; -foundnewex: - data.byte(kExpos) = al; -} - void DreamGenContext::purgealocation() { STACK_CHECK; push(ax); @@ -17981,7 +17963,6 @@ void DreamGenContext::__dispatch_call(uint16 addr) { case addr_pickupconts: pickupconts(); break; case addr_transfercontoex: transfercontoex(); break; case addr_transfertext: transfertext(); break; - case addr_getexpos: getexpos(); break; case addr_purgealocation: purgealocation(); break; case addr_emergencypurge: emergencypurge(); break; case addr_purgeanitem: purgeanitem(); break; diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h index cc777f4e82..f80c2ebaf2 100644 --- a/engines/dreamweb/dreamgen.h +++ b/engines/dreamweb/dreamgen.h @@ -455,7 +455,6 @@ public: static const uint16 addr_purgeanitem = 0xc414; static const uint16 addr_emergencypurge = 0xc410; static const uint16 addr_purgealocation = 0xc40c; - static const uint16 addr_getexpos = 0xc408; static const uint16 addr_transfertext = 0xc404; static const uint16 addr_transfercontoex = 0xc400; static const uint16 addr_pickupconts = 0xc3fc; @@ -1336,7 +1335,7 @@ public: //void clearwork(); void loadtraveltext(); //void worktoscreen(); - void getexpos(); + //void getexpos(); void fadedos(); //void fillspace(); void selectlocation(); diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp index 3c4c228471..1ffe3295ef 100644 --- a/engines/dreamweb/stubs.cpp +++ b/engines/dreamweb/stubs.cpp @@ -1198,6 +1198,17 @@ void DreamGenContext::deletetaken() { } } +void DreamGenContext::getexpos() { + const DynObject *objects = (const DynObject *)segRef(data.word(kExtras)).ptr(kExdata, sizeof(DynObject)); + for (size_t i = 0; i < kNumexobjects; ++i) { + if (objects[i].b2[0] == 0xff) { + data.byte(kExpos) = i; + return; + } + } + data.byte(kExpos) = kNumexobjects; +} + void DreamGenContext::placesetobject() { placesetobject(al); } diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h index 0be9c793cf..c5a1742a9b 100644 --- a/engines/dreamweb/stubs.h +++ b/engines/dreamweb/stubs.h @@ -197,4 +197,6 @@ void drawflags(); void addtopeoplelist(); void addtopeoplelist(ReelRoutine *routine); + void getexpos(); + |