aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/avalanche/enhanced2.cpp59
-rw-r--r--engines/avalanche/enhanced2.h53
-rw-r--r--engines/avalanche/gyro2.cpp2
-rw-r--r--engines/avalanche/scrolls2.cpp124
4 files changed, 233 insertions, 5 deletions
diff --git a/engines/avalanche/enhanced2.cpp b/engines/avalanche/enhanced2.cpp
new file mode 100644
index 0000000000..c5b038861d
--- /dev/null
+++ b/engines/avalanche/enhanced2.cpp
@@ -0,0 +1,59 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+/*
+ * This code is based on the original source code of Lord Avalot d'Argent version 1.3.
+ * Copyright (c) 1994-1995 Mike, Mark and Thomas Thurman.
+ */
+
+#include "avalanche/enhanced2.h"
+#include "common/system.h"
+#include "common/textconsole.h"
+
+namespace Avalanche {
+
+ namespace Enhanced {
+
+ bool isenh() {
+ warning("STUB: Enhanced::isenh()");
+ }
+
+ void readkeye() {
+ warning("STUB: Enhanced::readkeye()");
+ }
+
+ bool keypressede() {
+ /*
+ function fancystuff:boolean;
+ inline( $B4/ $11/ { MOV AH,11 }
+ $CD/ $16/ { INT 16 }
+ $B8/ $00/ $00/ { MOV AX, 0000 }
+ $74/ $01/ { JZ 0112 (or wherever- the next byte after $40, anyway) }
+ $40); { INC AX }
+ */
+
+ warning("STUB: Enhanced::keypressede()");
+ }
+
+ } // End of namespace Enhanced
+
+} // End of namespace Avalanche
diff --git a/engines/avalanche/enhanced2.h b/engines/avalanche/enhanced2.h
new file mode 100644
index 0000000000..d696c32a79
--- /dev/null
+++ b/engines/avalanche/enhanced2.h
@@ -0,0 +1,53 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+/*
+ * This code is based on the original source code of Lord Avalot d'Argent version 1.3.
+ * Copyright (c) 1994-1995 Mike, Mark and Thomas Thurman.
+ */
+
+
+
+// Not sure if this unit will be used at all in the end...
+
+#ifndef ENHANCED2_H
+#define ENHANCED2_H
+
+#include "common/system.h"
+
+namespace Avalanche {
+
+ namespace Enhanced {
+
+ byte shiftstate; /*ABSOLUTE $40:$17;*/
+ bool atbios;
+ char inchar, extd;
+
+ void readkeye();
+
+ bool keypressede();
+
+ } // End of namespace Enhanced
+
+} // End of namespace Avalanche
+
+#endif // ENHANCED2_H
diff --git a/engines/avalanche/gyro2.cpp b/engines/avalanche/gyro2.cpp
index 6c77279933..fba155af59 100644
--- a/engines/avalanche/gyro2.cpp
+++ b/engines/avalanche/gyro2.cpp
@@ -324,8 +324,6 @@ namespace Avalanche {
else on();
}
-
-
} // End of namespace Gyro
} // End of namespace Avalanche
diff --git a/engines/avalanche/scrolls2.cpp b/engines/avalanche/scrolls2.cpp
index a7c7a07d5e..cbbd2e187b 100644
--- a/engines/avalanche/scrolls2.cpp
+++ b/engines/avalanche/scrolls2.cpp
@@ -27,10 +27,10 @@
#include "avalanche/scrolls2.h"
#include "avalanche/gyro2.h"
+#include "avalanche/logger2.h"
//#include "lucerna.h"
//#include "trip5.h"
//#include "enhanced.h"
-//#include "logger.h"
//#include "Acci.h"
//#include "basher.h"
//#include "visa.h"
@@ -126,12 +126,130 @@ namespace Avalanche {
x = x / 8;
lz = z.size();
ox = 0;
- // log_scrollline(); Needs Logger to work.
+ Logger::log_scrollline();
+
+ for (xx = 1; xx <= lz; xx ++) {
+ switch (z[xx]) {
+ case '\22': {
+ cfont = roman;
+ Logger::log_roman();
+ }
+ break;
+ case '\6': {
+ cfont = italic;
+ Logger::log_italic();
+ }
+ break;
+ default: {
+ ox += 1;
+ for (yy = 1; yy <= 12; yy ++) itw[yy][ox] = ~ ch[cfont][z[xx]][yy + 1];
+ Logger::log_scrollchar(z[xx]);
+ }
+ }
+ }
+
+ lz = ox;
+ if (offset) {
+ /* offsetting routine */
+ lz += 1;
+ for (yy = 1; yy <= 12; yy ++) {
+ bit = 240;
+ itw[yy][lz] = 255;
+ for (xx = 1; xx <= lz; xx ++) {
+ t = itw[yy][xx];
+ itw[yy][xx] = bit + t / 16;
+ bit = t << 4;
+ }
+ }
+ }
+ yp = x + y * 80 + (1 - Gyro::cp) * Gyro::pagetop;
+ for (yy = 1; yy <= 12; yy ++) {
+ yp += 80;
+ for (bit = 0; bit <= locol; bit ++) {
+ /*port[0x3c4] = 2;
+ port[0x3ce] = 4;
+ port[0x3c5] = 1 << bit;
+ port[0x3cf] = bit;
+ move(itw[yy], mem[0xa000 * yp], lz);
+
+ Some old Pascal-ish. To be removed. */
+
+ warning("STUB: Scrolls::say()");
+ }
+ }
+
+ }
+
+ /* Here are the procedures that Scroll calls */ /* So they must be... */ /*$F+*/
+
+ void normscroll() {
+ warning("STUB: Scrolls::normscroll()");
+ }
+
+ void dialogue() {
+ warning("STUB: Scrolls::dialogue()");
+ }
+
+ void music_scroll();
+
+
+ static void store_(byte what, Gyro::tunetype &played) {
+ memcpy(played, played+1, sizeof(played) - 1);
+ played[30] = what;
+ }
+
+
+
+ static bool they_match(Gyro::tunetype &played) {
+ byte fv, mistakes;
+
+ bool they_match_result;
+ mistakes = 0;
- warning("STUB: Scrolls::say()");
+ for (fv = 1; fv <= sizeof(played); fv ++)
+ if (played[fv] != Gyro::tune[fv]) {
+ mistakes++;
+ }
+ they_match_result = mistakes < 5;
+ return they_match_result;
}
+ void music_scroll() {
+ char r;
+ byte value;
+
+ byte last_one, this_one;
+
+ Gyro::tunetype played;
+
+
+ state(3);
+ Gyro::seescroll = true;
+ Gyro::on();
+ Gyro::newpointer(4);
+ //do {
+ // do {
+ // Gyro::check(); /* was "checkclick;" */
+ // if (keypressede()) break;
+ // } while (!(mpress > 0) || buttona1() || buttonb1());
+ //
+ // Needs Enhanced (conatins keypressede()) to proceed.
+
+
+
+ }
+
+
+
+
+
+
+
+
+
+
+