diff options
-rwxr-xr-x | devtools/tasmrecover/tasm-recover | 1 | ||||
-rw-r--r-- | engines/dreamweb/dreamgen.cpp | 61 | ||||
-rw-r--r-- | engines/dreamweb/dreamgen.h | 3 | ||||
-rw-r--r-- | engines/dreamweb/stubs.cpp | 20 | ||||
-rw-r--r-- | engines/dreamweb/stubs.h | 2 |
5 files changed, 24 insertions, 63 deletions
diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover index a9fb1539a4..94276642b4 100755 --- a/devtools/tasmrecover/tasm-recover +++ b/devtools/tasmrecover/tasm-recover @@ -187,6 +187,7 @@ generator = cpp(context, "DreamGen", blacklist = [ 'dumpeverything', 'isitworn', 'makeworn', + 'obtoinv', ], skip_output = [ # These functions are processed but not output 'dreamweb', diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp index c28c289b77..3ee8c791ce 100644 --- a/engines/dreamweb/dreamgen.cpp +++ b/engines/dreamweb/dreamgen.cpp @@ -3955,66 +3955,6 @@ findopen2a: goto findopen1a; } -void DreamGenContext::obtoinv() { - STACK_CHECK; - push(bx); - push(es); - push(si); - push(ax); - push(ax); - push(di); - push(bx); - ds = data.word(kIcons1); - _sub(di, 2); - _sub(bx, 1); - al = 10; - ah = 0; - showframe(); - bx = pop(); - di = pop(); - ax = pop(); - _cmp(al, 255); - if (flags.z()) - goto finishfill; - push(bx); - push(di); - push(ax); - ds = data.word(kExtras); - _cmp(ah, 4); - if (flags.z()) - goto isanextra; - ds = data.word(kFreeframes); -isanextra: - cl = al; - _add(al, al); - _add(al, cl); - _inc(al); - ah = 128; - _add(bx, 19); - _add(di, 18); - showframe(); - ax = pop(); - di = pop(); - bx = pop(); - push(bx); - getanyaddir(); - isitworn(); - bx = pop(); - if (!flags.z()) - goto finishfill; - ds = data.word(kIcons1); - _sub(di, 3); - _sub(bx, 2); - al = 7; - ah = 0; - showframe(); -finishfill: - ax = pop(); - si = pop(); - es = pop(); - bx = pop(); -} - void DreamGenContext::examineob() { STACK_CHECK; data.byte(kPointermode) = 0; @@ -17368,7 +17308,6 @@ void DreamGenContext::__dispatch_call(uint16 addr) { case addr_fillopen: fillopen(); break; case addr_findallryan: findallryan(); break; case addr_findallopen: findallopen(); break; - case addr_obtoinv: obtoinv(); break; case addr_examineob: examineob(); break; case addr_makemainscreen: makemainscreen(); break; case addr_getbackfromob: getbackfromob(); break; diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h index f3b502a8f6..68e7b65ac2 100644 --- a/engines/dreamweb/dreamgen.h +++ b/engines/dreamweb/dreamgen.h @@ -494,7 +494,6 @@ public: static const uint16 addr_getbackfromob = 0xc344; static const uint16 addr_makemainscreen = 0xc340; static const uint16 addr_examineob = 0xc33c; - static const uint16 addr_obtoinv = 0xc330; static const uint16 addr_findallopen = 0xc32c; static const uint16 addr_findallryan = 0xc328; static const uint16 addr_fillopen = 0xc324; @@ -1480,7 +1479,7 @@ public: void checkspeed(); //void printchar(); void showkeypad(); - void obtoinv(); + //void obtoinv(); //void getroomdata(); void removeobfrominv(); void usecoveredbox(); diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp index 731396697d..e6c868530d 100644 --- a/engines/dreamweb/stubs.cpp +++ b/engines/dreamweb/stubs.cpp @@ -1796,5 +1796,25 @@ void DreamGenContext::makeworn(DynObject *object) { object->id[1] = 'E'-'A'; } +void DreamGenContext::obtoinv() { + obtoinv(al, ah, di, bx); +} + +void DreamGenContext::obtoinv(uint8 index, uint8 flag, uint16 x, uint16 y) { + Frame *icons1 = (Frame *)segRef(data.word(kIcons1)).ptr(0, 0); + showframe(icons1, x - 2, y - 1, 10, 0); + if (index == 0xff) + return; + + Frame *extras = (Frame *)segRef(data.word(kExtras)).ptr(0, 0); + Frame *frees = (Frame *)segRef(data.word(kFreeframes)).ptr(0, 0); + Frame *frames = (ah == 4) ? extras : frees; + showframe(frames, x + 18, y + 19, 3 * index + 1, 128); + const DynObject *object = (const DynObject *)getanyaddir(index, flag); + bool worn = isitworn(object); + if (worn) + showframe(icons1, x - 3, y - 2, 7, 0); +} + } /*namespace dreamgen */ diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h index 4d22fcc0bf..70ba5f70d5 100644 --- a/engines/dreamweb/stubs.h +++ b/engines/dreamweb/stubs.h @@ -224,4 +224,6 @@ bool isitworn(const DynObject *object); void makeworn(); void makeworn(DynObject *object); + void obtoinv(); + void obtoinv(uint8 index, uint8 flag, uint16 x, uint16 y); |