DREAMWEB: More work on inToInv and outOfInv

This commit is contained in:
Filippos Karapetis 2011-12-19 23:47:06 +02:00
parent bdf14ed598
commit 5a3deea58e

View file

@ -568,21 +568,19 @@ void DreamGenContext::inToInv() {
return; return;
} }
findInvPos(); uint16 subject = getSegment(data.word(kBuffers)).word(findInvPosCPP());
ax = es.word(bx);
if (al != 255) { if ((subject & 0xFF) != 255) {
swapWithInv(); swapWithInv();
return; return;
} }
al = data.byte(kItemframe); subject = (data.byte(kObjecttype) << 8) | data.byte(kItemframe);
ah = data.byte(kObjecttype);
if (ax == data.word(kOldsubject) && data.byte(kCommandtype) != 220) if (subject == data.word(kOldsubject) && data.byte(kCommandtype) != 220)
data.byte(kCommandtype) = 220; data.byte(kCommandtype) = 220;
data.word(kOldsubject) = ax; data.word(kOldsubject) = subject;
commandWithOb(35, data.byte(kObjecttype), data.byte(kItemframe)); commandWithOb(35, data.byte(kObjecttype), data.byte(kItemframe));
if (data.word(kMousebutton) == data.word(kOldbutton) || !(data.word(kMousebutton) & 1)) if (data.word(kMousebutton) == data.word(kOldbutton) || !(data.word(kMousebutton) & 1))
@ -603,10 +601,9 @@ void DreamGenContext::inToInv() {
} }
void DreamGenContext::outOfInv() { void DreamGenContext::outOfInv() {
findInvPos(); uint16 subject = getSegment(data.word(kBuffers)).word(findInvPosCPP());
ax = es.word(bx);
if (al == 255) { if ((subject & 0xFF) == 255) {
blank(); blank();
return; return;
} }
@ -616,11 +613,13 @@ void DreamGenContext::outOfInv() {
return; return;
} }
if (ax == data.word(kOldsubject) && data.byte(kCommandtype) != 221) if (subject == data.word(kOldsubject) && data.byte(kCommandtype) != 221)
data.byte(kCommandtype) = 221; data.byte(kCommandtype) = 221;
data.word(kOldsubject) = ax; data.word(kOldsubject) = subject;
commandWithOb(36, ah, al); byte type = subject >> 8;
byte frame = subject & 0xFF;
commandWithOb(36, type, frame);
if (data.word(kMousebutton) == data.word(kOldbutton)) if (data.word(kMousebutton) == data.word(kOldbutton))
return; // notletgo return; // notletgo
@ -630,10 +629,9 @@ void DreamGenContext::outOfInv() {
delPointer(); delPointer();
data.byte(kPickup) = 1; data.byte(kPickup) = 1;
findInvPos(); subject = getSegment(data.word(kBuffers)).word(findInvPosCPP());
ax = es.word(bx); data.byte(kObjecttype) = subject >> 8;
data.byte(kItemframe) = al; data.byte(kItemframe) = subject & 0xFF;
data.byte(kObjecttype) = ah;
DynObject *object = getExAd(data.byte(kItemframe)); DynObject *object = getExAd(data.byte(kItemframe));
object->mapad[0] = 20; object->mapad[0] = 20;
object->mapad[1] = 255; object->mapad[1] = 255;