DREAMWEB: 'monkandryan' ported to C++

This commit is contained in:
Filippos Karapetis 2011-12-08 00:41:10 +02:00
parent 61c2331af3
commit 1f4414fc54
5 changed files with 25 additions and 32 deletions

View File

@ -438,9 +438,10 @@ generator = cpp(context, "DreamGen", blacklist = [
'maptopanel',
'mode640x480',
'modifychar',
'monkandryan',
'monks2text',
'monmessage',
'monprint',
'monks2text',
'moretalk',
'mousecall',
'movemap',

View File

@ -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();

View File

@ -710,7 +710,6 @@ public:
void execCommand();
void updateSymbolBot();
void findPuzText();
void monkAndRyan();
void swapWithInv();
void useControl();
void adjustRight();

View File

@ -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

View File

@ -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();