aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBertrand Augereau2011-12-02 13:18:00 +0100
committerBertrand Augereau2011-12-02 14:30:39 +0100
commit7211a790b2aa00c453ba99afe9ba6ca14ab0bf66 (patch)
treeddf803e054653efda6c33116549b5c1302c9dae1
parent3ac815a2368e2ea8f5b6e66e77e67e4047dc3a2d (diff)
downloadscummvm-rg350-7211a790b2aa00c453ba99afe9ba6ca14ab0bf66.tar.gz
scummvm-rg350-7211a790b2aa00c453ba99afe9ba6ca14ab0bf66.tar.bz2
scummvm-rg350-7211a790b2aa00c453ba99afe9ba6ca14ab0bf66.zip
DREAMWEB: 'enterCode' ported to C++
-rwxr-xr-xdevtools/tasmrecover/tasm-recover1
-rw-r--r--engines/dreamweb/dreamgen.cpp83
-rw-r--r--engines/dreamweb/dreamgen.h2
-rw-r--r--engines/dreamweb/keypad.cpp81
-rw-r--r--engines/dreamweb/stubs.cpp20
-rw-r--r--engines/dreamweb/stubs.h2
6 files changed, 84 insertions, 105 deletions
diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover
index 0eb0a3ec40..cb643833ec 100755
--- a/devtools/tasmrecover/tasm-recover
+++ b/devtools/tasmrecover/tasm-recover
@@ -344,6 +344,7 @@ generator = cpp(context, "DreamGen", blacklist = [
'singlekey',
'showkeypad',
'credits',
+ 'entercode',
], skip_output = [
# These functions are processed but not output
'dreamweb',
diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp
index e6cc6834ef..28e45bb7bc 100644
--- a/engines/dreamweb/dreamgen.cpp
+++ b/engines/dreamweb/dreamgen.cpp
@@ -9142,89 +9142,6 @@ nowinch:
putBackObStuff();
}
-void DreamGenContext::enterCode() {
- STACK_CHECK;
- data.word(kKeypadax) = ax;
- data.word(kKeypadcx) = cx;
- getRidOfReels();
- loadKeypad();
- createPanel();
- showIcon();
- showOuterPad();
- showKeypad();
- readMouse();
- showPointer();
- workToScreen();
- delPointer();
- data.word(kPresspointer) = 0;
- data.byte(kGetback) = 0;
-keypadloop:
- _cmp(data.byte(kQuitrequested), 0);
- if (!flags.z())
- goto numberright;
- delPointer();
- readMouse();
- showKeypad();
- showPointer();
- vSync();
- _cmp(data.byte(kPresscount), 0);
- if (flags.z())
- goto nopresses;
- _dec(data.byte(kPresscount));
- goto afterpress;
-nopresses:
- data.byte(kPressed) = 255;
- data.byte(kGraphicpress) = 255;
- vSync();
-afterpress:
- dumpPointer();
- dumpKeypad();
- dumpTextLine();
- bx = offset_keypadlist;
- checkCoords();
- _cmp(data.byte(kGetback), 1);
- if (flags.z())
- goto numberright;
- _cmp(data.byte(kLightcount), 1);
- if (!flags.z())
- goto notendkey;
- _cmp(data.byte(kLockstatus), 0);
- if (flags.z())
- goto numberright;
- goto keypadloop;
-notendkey:
- _cmp(data.byte(kPresscount), 40);
- if (!flags.z())
- goto keypadloop;
- addToPressList();
- _cmp(data.byte(kPressed), 11);
- if (!flags.z())
- goto keypadloop;
- ax = data.word(kKeypadax);
- cx = data.word(kKeypadcx);
- isItRight();
- if (!flags.z())
- goto incorrect;
- data.byte(kLockstatus) = 0;
- al = 11;
- playChannel1();
- data.byte(kLightcount) = 120;
- data.word(kPresspointer) = 0;
- goto keypadloop;
-incorrect:
- al = 11;
- playChannel1();
- data.byte(kLightcount) = 120;
- data.word(kPresspointer) = 0;
- goto keypadloop;
-numberright:
- data.byte(kManisoffscreen) = 0;
- getRidOfTemp();
- restoreReels();
- redrawMainScrn();
- workToScreenM();
-}
-
void DreamGenContext::loadKeypad() {
STACK_CHECK;
dx = 1948;
diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h
index e8c7ea92c3..5a49942e9a 100644
--- a/engines/dreamweb/dreamgen.h
+++ b/engines/dreamweb/dreamgen.h
@@ -77,7 +77,6 @@ public:
static const uint16 offset_decidelist = 0x13c1;
static const uint16 offset_symbollist = 0x0e5e;
static const uint16 offset_operand1 = 0x0b7e;
- static const uint16 offset_keypadlist = 0x0d9a;
static const uint16 kStartvars = 0;
static const uint16 kProgresspoints = 1;
static const uint16 kWatchon = 2;
@@ -705,7 +704,6 @@ public:
void useElevator2();
void buttonOne();
void keyboardRead();
- void enterCode();
void getOpenedSize();
void doShake();
void resetKeyboard();
diff --git a/engines/dreamweb/keypad.cpp b/engines/dreamweb/keypad.cpp
index c17fd10f61..f55d8f911d 100644
--- a/engines/dreamweb/keypad.cpp
+++ b/engines/dreamweb/keypad.cpp
@@ -71,5 +71,86 @@ void DreamGenContext::showKeypad() {
}
}
+void DreamGenContext::enterCode() {
+ enterCode(ax, cx);
+}
+
+void DreamGenContext::enterCode(uint16 keypadAx, uint16 keypadCx) {
+ RectWithCallback keypadList[] = {
+ { kKeypadx+9,kKeypadx+30,kKeypady+9,kKeypady+22,&DreamGenContext::buttonOne },
+ { kKeypadx+31,kKeypadx+52,kKeypady+9,kKeypady+22,&DreamGenContext::buttonTwo },
+ { kKeypadx+53,kKeypadx+74,kKeypady+9,kKeypady+22,&DreamGenContext::buttonThree },
+ { kKeypadx+9,kKeypadx+30,kKeypady+23,kKeypady+40,&DreamGenContext::buttonFour },
+ { kKeypadx+31,kKeypadx+52,kKeypady+23,kKeypady+40,&DreamGenContext::buttonFive },
+ { kKeypadx+53,kKeypadx+74,kKeypady+23,kKeypady+40,&DreamGenContext::buttonSix },
+ { kKeypadx+9,kKeypadx+30,kKeypady+41,kKeypady+58,&DreamGenContext::buttonSeven },
+ { kKeypadx+31,kKeypadx+52,kKeypady+41,kKeypady+58,&DreamGenContext::buttonEight },
+ { kKeypadx+53,kKeypadx+74,kKeypady+41,kKeypady+58,&DreamGenContext::buttonNine },
+ { kKeypadx+9,kKeypadx+30,kKeypady+59,kKeypady+73,&DreamGenContext::buttonNought },
+ { kKeypadx+31,kKeypadx+74,kKeypady+59,kKeypady+73,&DreamGenContext::buttonEnter },
+ { kKeypadx+72,kKeypadx+86,kKeypady+80,kKeypady+94,&DreamGenContext::quitKey },
+ { 0,320,0,200,&DreamGenContext::blank },
+ { 0xFFFF,0,0,0,0 }
+ };
+
+ data.word(kKeypadax) = keypadAx;
+ data.word(kKeypadcx) = keypadCx;
+ getRidOfReels();
+ loadKeypad();
+ createPanel();
+ showIcon();
+ showOuterPad();
+ showKeypad();
+ readMouse();
+ showPointer();
+ workToScreen();
+ delPointer();
+ data.word(kPresspointer) = 0;
+ data.byte(kGetback) = 0;
+ while (true) {
+ delPointer();
+ readMouse();
+ showKeypad();
+ showPointer();
+ vSync();
+ if (data.byte(kPresscount) == 0) {
+ data.byte(kPressed) = 255;
+ data.byte(kGraphicpress) = 255;
+ vSync();
+ } else
+ --data.byte(kPresscount);
+
+ dumpPointer();
+ dumpKeypad();
+ dumpTextLine();
+ checkCoords(keypadList);
+ if (quitRequested() || (data.byte(kGetback) == 1))
+ break;
+ if (data.byte(kLightcount) == 1) {
+ if (data.byte(kLockstatus) == 0)
+ break;
+ } else {
+ if (data.byte(kPresscount) == 40) {
+ addToPressList();
+ if (data.byte(kPressed) == 11) {
+ ax = data.word(kKeypadax);
+ cx = data.word(kKeypadcx);
+ isItRight();
+ if (flags.z())
+ data.byte(kLockstatus) = 0;
+ playChannel1(11);
+ data.byte(kLightcount) = 120;
+ data.word(kPresspointer) = 0;
+ }
+ }
+ }
+ }
+ data.byte(kManisoffscreen) = 0;
+ getRidOfTemp();
+ restoreReels();
+ redrawMainScrn();
+ workToScreenM();
+}
+
} /*namespace dreamgen */
diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp
index 2352f9f1ce..65d600e77b 100644
--- a/engines/dreamweb/stubs.cpp
+++ b/engines/dreamweb/stubs.cpp
@@ -1444,26 +1444,6 @@ void DreamGenContext::checkCoords() {
checkCoords(destList);
break;
}
- case offset_keypadlist: {
- RectWithCallback keypadList[] = {
- { kKeypadx+9,kKeypadx+30,kKeypady+9,kKeypady+22,&DreamGenContext::buttonOne },
- { kKeypadx+31,kKeypadx+52,kKeypady+9,kKeypady+22,&DreamGenContext::buttonTwo },
- { kKeypadx+53,kKeypadx+74,kKeypady+9,kKeypady+22,&DreamGenContext::buttonThree },
- { kKeypadx+9,kKeypadx+30,kKeypady+23,kKeypady+40,&DreamGenContext::buttonFour },
- { kKeypadx+31,kKeypadx+52,kKeypady+23,kKeypady+40,&DreamGenContext::buttonFive },
- { kKeypadx+53,kKeypadx+74,kKeypady+23,kKeypady+40,&DreamGenContext::buttonSix },
- { kKeypadx+9,kKeypadx+30,kKeypady+41,kKeypady+58,&DreamGenContext::buttonSeven },
- { kKeypadx+31,kKeypadx+52,kKeypady+41,kKeypady+58,&DreamGenContext::buttonEight },
- { kKeypadx+53,kKeypadx+74,kKeypady+41,kKeypady+58,&DreamGenContext::buttonNine },
- { kKeypadx+9,kKeypadx+30,kKeypady+59,kKeypady+73,&DreamGenContext::buttonNought },
- { kKeypadx+31,kKeypadx+74,kKeypady+59,kKeypady+73,&DreamGenContext::buttonEnter },
- { kKeypadx+72,kKeypadx+86,kKeypady+80,kKeypady+94,&DreamGenContext::quitKey },
- { 0,320,0,200,&DreamGenContext::blank },
- { 0xFFFF,0,0,0,0 }
- };
- checkCoords(keypadList);
- break;
- }
case offset_menulist: {
RectWithCallback menuList[] = {
{ kMenux+54,kMenux+68,kMenuy+72,kMenuy+88,&DreamGenContext::quitKey },
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index 1fca50d08a..5ac9a97c28 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -384,4 +384,6 @@
void sparky(ReelRoutine &routine);
void singleKey(uint8 key, uint16 x, uint16 y);
void showKeypad();
+ void enterCode(uint16 keypadAx, uint16 keypadCx);
+ void enterCode();