diff options
-rwxr-xr-x | devtools/tasmrecover/tasm-recover | 1 | ||||
-rw-r--r-- | engines/dreamweb/dreamgen.cpp | 34 | ||||
-rw-r--r-- | engines/dreamweb/dreamgen.h | 1 | ||||
-rw-r--r-- | engines/dreamweb/keypad.cpp | 48 | ||||
-rw-r--r-- | engines/dreamweb/stubs.h | 1 |
5 files changed, 28 insertions, 57 deletions
diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover index 61d740ae2f..95461fb928 100755 --- a/devtools/tasmrecover/tasm-recover +++ b/devtools/tasmrecover/tasm-recover @@ -354,6 +354,7 @@ generator = cpp(context, "DreamGen", blacklist = [ 'buttonnine', 'buttonnought', 'buttonenter', + 'buttonpress', 'credits', 'entercode', ], skip_output = [ diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp index 44a48e723b..e3ea81e7ab 100644 --- a/engines/dreamweb/dreamgen.cpp +++ b/engines/dreamweb/dreamgen.cpp @@ -9188,40 +9188,6 @@ not10: _inc(data.word(kPresspointer)); } -void DreamGenContext::buttonPress() { - STACK_CHECK; - ch = cl; - _add(ch, 100); - _cmp(data.byte(kCommandtype), ch); - if (flags.z()) - goto alreadyb; - data.byte(kCommandtype) = ch; - al = cl; - _add(al, 4); - push(cx); - commandOnly(); - cx = pop(); -alreadyb: - ax = data.word(kMousebutton); - _cmp(ax, data.word(kOldbutton)); - if (flags.z()) - return /* (notb) */; - _and(ax, 1); - if (!flags.z()) - goto dob; - return; -dob: - data.byte(kPressed) = cl; - _add(cl, 21); - data.byte(kGraphicpress) = cl; - data.byte(kPresscount) = 40; - _cmp(cl, 32); - if (flags.z()) - return /* (nonoise) */; - al = 10; - playChannel1(); -} - void DreamGenContext::showOuterPad() { STACK_CHECK; di = (36+112)-3; diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h index cbf8bf64f2..3f9b8d8de2 100644 --- a/engines/dreamweb/dreamgen.h +++ b/engines/dreamweb/dreamgen.h @@ -1029,7 +1029,6 @@ public: void useControl(); void redrawMainScrn(); void showGroup(); - void buttonPress(); void makeMainScreen(); void useWinch(); void setBotRight(); diff --git a/engines/dreamweb/keypad.cpp b/engines/dreamweb/keypad.cpp index 1f4fa72f38..b05afa1e68 100644 --- a/engines/dreamweb/keypad.cpp +++ b/engines/dreamweb/keypad.cpp @@ -153,58 +153,62 @@ void DreamGenContext::enterCode(uint16 keypadAx, uint16 keypadCx) { } void DreamGenContext::buttonOne() { - cl = 1; - buttonPress(); + buttonPress(1); } void DreamGenContext::buttonTwo() { - cl = 2; - buttonPress(); + buttonPress(2); } void DreamGenContext::buttonThree() { - cl = 3; - buttonPress(); + buttonPress(3); } void DreamGenContext::buttonFour() { - cl = 4; - buttonPress(); + buttonPress(4); } void DreamGenContext::buttonFive() { - cl = 5; - buttonPress(); + buttonPress(5); } void DreamGenContext::buttonSix() { - cl = 6; - buttonPress(); + buttonPress(6); } void DreamGenContext::buttonSeven() { - cl = 7; - buttonPress(); + buttonPress(7); } void DreamGenContext::buttonEight() { - cl = 8; - buttonPress(); + buttonPress(8); } void DreamGenContext::buttonNine() { - cl = 9; - buttonPress(); + buttonPress(9); } void DreamGenContext::buttonNought() { - cl = 10; - buttonPress(); + buttonPress(10); } void DreamGenContext::buttonEnter() { - cl = 11; - buttonPress(); + buttonPress(11); +} + +void DreamGenContext::buttonPress(uint8 buttonId) { + uint8 commandType = 100 + buttonId; + if (data.byte(kCommandtype) != commandType) { + data.byte(kCommandtype) = commandType; + commandOnly(buttonId + 4); + } + if ((data.word(kMousebutton) & 1) && (data.word(kMousebutton) != data.word(kOldbutton))) { + data.byte(kPressed) = buttonId; + data.byte(kGraphicpress) = buttonId + 21; + data.byte(kPresscount) = 40; + if (buttonId != 11) + playChannel1(10); + } } } /*namespace dreamgen */ diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h index 4b9e54c023..a77d2c79ee 100644 --- a/engines/dreamweb/stubs.h +++ b/engines/dreamweb/stubs.h @@ -395,6 +395,7 @@ void buttonNine(); void buttonNought(); void buttonEnter(); + void buttonPress(uint8 buttonId); void enterCode(uint16 keypadAx, uint16 keypadCx); void enterCode(); |