diff options
-rwxr-xr-x | devtools/tasmrecover/tasm-recover | 1 | ||||
-rw-r--r-- | engines/dreamweb/dreamgen.cpp | 83 | ||||
-rw-r--r-- | engines/dreamweb/dreamgen.h | 2 | ||||
-rw-r--r-- | engines/dreamweb/keypad.cpp | 81 | ||||
-rw-r--r-- | engines/dreamweb/stubs.cpp | 20 | ||||
-rw-r--r-- | engines/dreamweb/stubs.h | 2 |
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(); |