From 3956046e50630e711dc705dbb3d8dedcac870ad5 Mon Sep 17 00:00:00 2001 From: Bertrand Augereau Date: Sun, 4 Dec 2011 14:22:13 +0100 Subject: DREAMWEB: 'smokeBloke' ported to C++ --- devtools/tasmrecover/tasm-recover | 1 + engines/dreamweb/dreamgen.cpp | 41 --------------------------------------- engines/dreamweb/dreamgen.h | 1 - engines/dreamweb/people.cpp | 25 ++++++++++++++++++++++-- engines/dreamweb/stubs.h | 1 + 5 files changed, 25 insertions(+), 44 deletions(-) diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover index 3592edb2df..cc8e9441e9 100755 --- a/devtools/tasmrecover/tasm-recover +++ b/devtools/tasmrecover/tasm-recover @@ -426,6 +426,7 @@ generator = cpp(context, "DreamGen", blacklist = [ 'showwatch', 'showword', 'singlekey', + 'smokebloke', 'sortoutmap', 'soundonreels', 'sparky', diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp index 2ae5cc5107..bd861ca4e3 100644 --- a/engines/dreamweb/dreamgen.cpp +++ b/engines/dreamweb/dreamgen.cpp @@ -107,47 +107,6 @@ gotrecep: data.byte(kTalkedtorecep) = 1; } -void DreamGenContext::smokeBloke() { - STACK_CHECK; - _cmp(data.byte(kRockstardead), 0); - if (!flags.z()) - goto notspokento; - al = es.byte(bx+7); - _and(al, 128); - if (flags.z()) - goto notspokento; - push(es); - push(bx); - al = 5; - setLocation(); - bx = pop(); - es = pop(); -notspokento: - checkSpeed(); - if (!flags.z()) - goto gotsmokeb; - _cmp(es.word(bx+3), 100); - if (!flags.z()) - goto notsmokeb1; - randomNumber(); - _cmp(al, 30); - if (flags.c()) - goto notsmokeb2; - es.word(bx+3) = 96; - goto gotsmokeb; -notsmokeb1: - _cmp(es.word(bx+3), 117); - if (!flags.z()) - goto notsmokeb2; - es.word(bx+3) = 96; - goto gotsmokeb; -notsmokeb2: - _inc(es.word(bx+3)); -gotsmokeb: - showGameReel(); - addToPeopleList(); -} - void DreamGenContext::attendant() { STACK_CHECK; showGameReel(); diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h index 8fa0c25b70..f7aa6c6d0a 100644 --- a/engines/dreamweb/dreamgen.h +++ b/engines/dreamweb/dreamgen.h @@ -789,7 +789,6 @@ public: void useLadder(); void realCredits(); void handClap(); - void smokeBloke(); void afterIntroRoom(); void findAllOpen(); void readFromFile(); diff --git a/engines/dreamweb/people.cpp b/engines/dreamweb/people.cpp index 6479d29022..a05d892c65 100644 --- a/engines/dreamweb/people.cpp +++ b/engines/dreamweb/people.cpp @@ -27,7 +27,7 @@ namespace DreamGen { static void (DreamGenContext::*reelCallbacks[57])() = { NULL, NULL, NULL, &DreamGenContext::edenInBath, - NULL, &DreamGenContext::smokeBloke, + NULL, NULL, &DreamGenContext::manAsleep, &DreamGenContext::drunk, &DreamGenContext::receptionist, NULL, NULL, &DreamGenContext::louis, @@ -59,7 +59,7 @@ static void (DreamGenContext::*reelCallbacks[57])() = { static void (DreamGenContext::*reelCallbacksCPP[57])(ReelRoutine &) = { &DreamGenContext::gamer, &DreamGenContext::sparkyDrip, &DreamGenContext::eden, /*&DreamGenContext::edenInBath*/NULL, - &DreamGenContext::sparky, /*&DreamGenContext::smokeBloke*/NULL, + &DreamGenContext::sparky, &DreamGenContext::smokeBloke, /*&DreamGenContext::manAsleep*/NULL, /*&DreamGenContext::drunk*/NULL, /*&DreamGenContext::receptionist*/NULL, &DreamGenContext::maleFan, &DreamGenContext::femaleFan, /*&DreamGenContext::louis*/NULL, @@ -327,5 +327,26 @@ void DreamGenContext::madmansTelly(ReelRoutine &routine) { showGameReel(&routine); } + +void DreamGenContext::smokeBloke(ReelRoutine &routine) { + if (data.byte(kRockstardead) == 0) { + if (routine.b7 & 128) + setLocation(5); + } + if (checkSpeed(&routine)) { + if (routine.reelPointer() == 100) { + if (engine->randomNumber() < 30) + routine.incReelPointer(); + else + routine.setReelPointer(96); + } else if (routine.reelPointer() == 117) + routine.setReelPointer(96); + else + routine.incReelPointer(); + } + showGameReel(&routine); + addToPeopleList(&routine); +} + } /*namespace dreamgen */ diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h index 6414a4e914..7339f937bc 100644 --- a/engines/dreamweb/stubs.h +++ b/engines/dreamweb/stubs.h @@ -397,6 +397,7 @@ void maleFan(ReelRoutine &routine); void rockstar(ReelRoutine &routine); void madmansTelly(ReelRoutine &routine); + void smokeBloke(ReelRoutine &routine); void singleKey(uint8 key, uint16 x, uint16 y); void showKeypad(); void showOuterPad(); -- cgit v1.2.3