aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xdevtools/tasmrecover/tasm-recover1
-rw-r--r--engines/dreamweb/dreamgen.cpp34
-rw-r--r--engines/dreamweb/dreamgen.h1
-rw-r--r--engines/dreamweb/keypad.cpp48
-rw-r--r--engines/dreamweb/stubs.h1
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();