diff options
-rwxr-xr-x | devtools/tasmrecover/tasm-recover | 2 | ||||
-rw-r--r-- | engines/dreamweb/dreamgen.cpp | 67 | ||||
-rw-r--r-- | engines/dreamweb/dreamgen.h | 2 | ||||
-rw-r--r-- | engines/dreamweb/people.cpp | 23 | ||||
-rw-r--r-- | engines/dreamweb/stubs.h | 1 |
5 files changed, 24 insertions, 71 deletions
diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover index 76cbca9a40..8d5ad953d5 100755 --- a/devtools/tasmrecover/tasm-recover +++ b/devtools/tasmrecover/tasm-recover @@ -149,6 +149,7 @@ generator = cpp(context, "DreamGen", blacklist = [ 'addtopeoplelist', 'addtopresslist', 'adjustlen', + 'advisor', 'afterintroroom', 'aide', 'alleybarksound', @@ -227,6 +228,7 @@ generator = cpp(context, "DreamGen", blacklist = [ 'convertkey', 'convicons', 'convnum', + 'copper', 'copyname', 'createfile', 'createpanel', diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp index 8fc7ca1f5e..b8bdbe6291 100644 --- a/engines/dreamweb/dreamgen.cpp +++ b/engines/dreamweb/dreamgen.cpp @@ -790,73 +790,6 @@ gotnext: fadeScreenUpHalf(); } -void DreamGenContext::advisor() { - STACK_CHECK; - checkSpeed(); - if (!flags.z()) - goto noadvisor; - goto noadvisor; - ax = es.word(bx+3); - _inc(ax); - _cmp(ax, 123); - if (!flags.z()) - goto notendadvis; - ax = 106; - goto gotadvframe; -notendadvis: - _cmp(ax, 108); - if (!flags.z()) - goto gotadvframe; - push(ax); - randomNumber(); - cl = al; - ax = pop(); - _cmp(cl, 3); - if (flags.c()) - goto gotadvframe; - ax = 106; -gotadvframe: - es.word(bx+3) = ax; -noadvisor: - showGameReel(); - addToPeopleList(); -} - -void DreamGenContext::copper() { - STACK_CHECK; - checkSpeed(); - if (!flags.z()) - goto nocopper; - ax = es.word(bx+3); - _inc(ax); - _cmp(ax, 94); - if (!flags.z()) - goto notendcopper; - ax = 64; - goto gotcopframe; -notendcopper: - _cmp(ax, 81); - if (flags.z()) - goto mightwait; - _cmp(ax, 66); - if (!flags.z()) - goto gotcopframe; -mightwait: - push(ax); - randomNumber(); - cl = al; - ax = pop(); - _cmp(cl, 7); - if (flags.c()) - goto gotcopframe; - _dec(ax); -gotcopframe: - es.word(bx+3) = ax; -nocopper: - showGameReel(); - addToPeopleList(); -} - void DreamGenContext::checkForExit() { STACK_CHECK; cl = data.byte(kRyanx); diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h index 39711a4ee9..b7ec416221 100644 --- a/engines/dreamweb/dreamgen.h +++ b/engines/dreamweb/dreamgen.h @@ -606,10 +606,8 @@ public: void dirFile(); void pickupConts(); void lockLightOff(); - void advisor(); void allPalette(); void cantDrop(); - void copper(); void placeFreeObject(); void putUnderZoom(); void findInvPos(); diff --git a/engines/dreamweb/people.cpp b/engines/dreamweb/people.cpp index 403f8f1912..cd1f2d4d2a 100644 --- a/engines/dreamweb/people.cpp +++ b/engines/dreamweb/people.cpp @@ -39,7 +39,7 @@ static void (DreamGenContext::*reelCallbacks[57])() = { NULL, NULL, NULL, NULL, NULL, NULL, - &DreamGenContext::copper, &DreamGenContext::poolGuard, + NULL, &DreamGenContext::poolGuard, NULL, &DreamGenContext::businessMan, NULL, NULL, &DreamGenContext::mugger, &DreamGenContext::helicopter, @@ -71,7 +71,7 @@ static void (DreamGenContext::*reelCallbacksCPP[57])(ReelRoutine &) = { &DreamGenContext::genericPerson /*tattooMan*/, &DreamGenContext::attendant, &DreamGenContext::keeper, &DreamGenContext::candles1, &DreamGenContext::smallCandle, &DreamGenContext::security, - /*&DreamGenContext::copper*/NULL, /*&DreamGenContext::poolGuard*/NULL, + &DreamGenContext::copper, /*&DreamGenContext::poolGuard*/NULL, &DreamGenContext::rockstar, /*&DreamGenContext::businessMan*/NULL, &DreamGenContext::train, &DreamGenContext::genericPerson /*aide*/, /*&DreamGenContext::mugger*/NULL, /*&DreamGenContext::helicopter*/NULL, @@ -569,6 +569,7 @@ void DreamGenContext::foghornSound(ReelRoutine &routine) { } void DreamGenContext::train(ReelRoutine &routine) { + // The original code has logic for this, but it is disabled } void DreamGenContext::louisChair(ReelRoutine &routine) { @@ -669,4 +670,22 @@ void DreamGenContext::monkAndRyan(ReelRoutine &routine) { showGameReel(&routine); } +void DreamGenContext::copper(ReelRoutine &routine) { + if (checkSpeed(routine)) { + uint16 nextReelPointer = routine.reelPointer() + 1; + if (nextReelPointer == 94) { + nextReelPointer = 64; + } else if (nextReelPointer == 81 || nextReelPointer == 66) { + // Might wait + if (engine->randomNumber() >= 7) + nextReelPointer--; + } + + routine.setReelPointer(nextReelPointer); + } + + showGameReel(&routine); + addToPeopleList(&routine); +} + } // End of namespace DreamGen diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h index fe1706c9c5..937dac1f64 100644 --- a/engines/dreamweb/stubs.h +++ b/engines/dreamweb/stubs.h @@ -431,6 +431,7 @@ void priest(ReelRoutine &routine); void priestText(ReelRoutine &routine); void monkAndRyan(ReelRoutine &routine); + void copper(ReelRoutine &routine); void singleKey(uint8 key, uint16 x, uint16 y); void loadSaveBox(); void loadKeypad(); |