diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover index 5457591969f..c258de6cd26 100755 --- a/devtools/tasmrecover/tasm-recover +++ b/devtools/tasmrecover/tasm-recover @@ -438,9 +438,10 @@ generator = cpp(context, "DreamGen", blacklist = [ 'maptopanel', 'mode640x480', 'modifychar', + 'monkandryan', + 'monks2text', 'monmessage', 'monprint', - 'monks2text', 'moretalk', 'mousecall', 'movemap', diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp index 45972f58457..356b8530298 100644 --- a/engines/dreamweb/dreamgen.cpp +++ b/engines/dreamweb/dreamgen.cpp @@ -634,34 +634,6 @@ intromonk2fin: showGameReel(); } -void DreamGenContext::monkAndRyan() { - STACK_CHECK; - checkSpeed(); - if (!flags.z()) - goto notmonkryan; - ax = es.word(bx+3); - _inc(ax); - _cmp(ax, 83); - if (!flags.z()) - goto gotmonkryan; - _inc(data.byte(kIntrocount)); - push(es); - push(bx); - textForMonk(); - bx = pop(); - es = pop(); - ax = 77; - _cmp(data.byte(kIntrocount), 57); - if (!flags.z()) - goto gotmonkryan; - data.byte(kGetback) = 1; - return; -gotmonkryan: - es.word(bx+3) = ax; -notmonkryan: - showGameReel(); -} - void DreamGenContext::endGameSeq() { STACK_CHECK; checkSpeed(); diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h index f8ae7ebbc06..714ce3af2ed 100644 --- a/engines/dreamweb/dreamgen.h +++ b/engines/dreamweb/dreamgen.h @@ -710,7 +710,6 @@ public: void execCommand(); void updateSymbolBot(); void findPuzText(); - void monkAndRyan(); void swapWithInv(); void useControl(); void adjustRight(); diff --git a/engines/dreamweb/people.cpp b/engines/dreamweb/people.cpp index d53786c3697..403f8f19121 100644 --- a/engines/dreamweb/people.cpp +++ b/engines/dreamweb/people.cpp @@ -48,7 +48,7 @@ static void (DreamGenContext::*reelCallbacks[57])() = { NULL, NULL, &DreamGenContext::introMonks1, NULL, &DreamGenContext::introMonks2, NULL, - &DreamGenContext::monkAndRyan, &DreamGenContext::endGameSeq, + NULL, &DreamGenContext::endGameSeq, NULL, NULL, NULL, NULL, NULL, NULL, @@ -80,7 +80,7 @@ static void (DreamGenContext::*reelCallbacksCPP[57])(ReelRoutine &) = { &DreamGenContext::gates, &DreamGenContext::introMagic3, /*&DreamGenContext::intromonks1*/NULL, &DreamGenContext::candles, /*&DreamGenContext::intromonks2*/NULL, &DreamGenContext::handClap, - /*&DreamGenContext::monkAndRyan*/NULL, /*&DreamGenContext::endGameSeq*/NULL, + &DreamGenContext::monkAndRyan, /*&DreamGenContext::endGameSeq*/NULL, &DreamGenContext::priest, &DreamGenContext::madman, &DreamGenContext::madmansTelly, &DreamGenContext::alleyBarkSound, &DreamGenContext::foghornSound, &DreamGenContext::carParkDrip, @@ -649,4 +649,24 @@ void DreamGenContext::priestText(ReelRoutine &routine) { setupTimedUse(); } +void DreamGenContext::monkAndRyan(ReelRoutine &routine) { + if (checkSpeed(routine)) { + uint16 nextReelPointer = routine.reelPointer() + 1; + if (nextReelPointer == 83) { + data.byte(kIntrocount)++; + textForMonk(); + nextReelPointer = 77; + + if (data.byte(kIntrocount) == 57) { + data.byte(kGetback) = 1; + return; + } + } + + routine.setReelPointer(nextReelPointer); + } + + showGameReel(&routine); +} + } // End of namespace DreamGen diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h index 8c426162e03..97486152c70 100644 --- a/engines/dreamweb/stubs.h +++ b/engines/dreamweb/stubs.h @@ -454,6 +454,7 @@ void bossMan(ReelRoutine &routine); void priest(ReelRoutine &routine); void priestText(ReelRoutine &routine); + void monkAndRyan(ReelRoutine &routine); void singleKey(uint8 key, uint16 x, uint16 y); void loadSaveBox(); void loadKeypad();