aboutsummaryrefslogtreecommitdiff
path: root/engines/avalanche/avmenu.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/avalanche/avmenu.cpp')
-rw-r--r--engines/avalanche/avmenu.cpp348
1 files changed, 0 insertions, 348 deletions
diff --git a/engines/avalanche/avmenu.cpp b/engines/avalanche/avmenu.cpp
deleted file mode 100644
index 9e956f9b23..0000000000
--- a/engines/avalanche/avmenu.cpp
+++ /dev/null
@@ -1,348 +0,0 @@
-/* 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 "graph.h"
-/*#include "Crt.h"*/
-/*#include "Tommys.h"*/
-
-namespace Avalanche {
-
-typedef matrix < '\0', '\377', 0, 15, byte > fonttype;
-
-fonttype font;
-word storage_seg, storage_ofs;
-byte result;
-string registrant;
-
-void icons() {
- untyped_file f;
- word gd, gm;
- byte bit;
- byte v;
-
- assign(f, "menu.avd");
- reset(f, 1);
-
- for (bit = 0; bit <= 3; bit ++) {
- port[0x3c4] = 2;
- port[0x3ce] = 4;
- port[0x3c5] = 1 << bit;
- port[0x3cf] = bit;
- for (gd = 70; gd <= 266; gd ++)
- blockread(f, mem[0xa000 * gd * 80 + 6], 9);
-
- for (gd = 0; gd <= 32; gd ++) {
- blockread(f, v, 1);
- for (gm = 0; gm <= 5; gm ++)
- mem[0xa000 * 73 + ((70 + gd + gm * 33) * 80)] = v; /* 79 */
- }
-
- }
- close(f);
-
- bit = getpixel(0, 0);
-
- setfillstyle(1, 7);
- for (gd = 0; gd <= 5; gd ++) bar(114, 73 + gd * 33, 583, 99 + gd * 33);
- setfillstyle(1, 15);
- for (gd = 0; gd <= 5; gd ++) bar(114, 70 + gd * 33, 583, 72 + gd * 33);
- setfillstyle(1, 8);
- for (gd = 0; gd <= 5; gd ++) bar(114, 100 + gd * 33, 583, 102 + gd * 33);
-
-}
-
-void load_regi_info();
-
-
-static char decode1(char c) {
- byte b;
-
- char decode1_result;
- b = ord(c) - 32;
- decode1_result = chr(((b & 0xf) << 3) + ((cardinal)(b & 0x70) >> 4));
- return decode1_result;
-}
-
-
-
-static char decode2(char c) {
- char decode2_result;
- decode2_result = chr(((ord(c) & 0xf) << 2) + 0x43);
- return decode2_result;
-}
-
-
-
-static boolean checker(string proper, string check) {
- byte fv;
- boolean ok;
-
- boolean checker_result;
- ok = true;
- for (fv = 1; fv <= length(proper); fv ++)
- if ((ord(proper[fv]) & 0xf) != ((cardinal)(ord(check[fv]) - 0x43) >> 2))
- ok = false;
-
- checker_result = ok;
- return checker_result;
-}
-
-void load_regi_info() {
- text t;
- byte fv;
- string x;
- byte namelen, numlen;
- string namechk, numchk;
- string reginum;
-
-
- /*$I-*/
- assign(t, "register.dat");
- reset(t);
- /*$I+*/
-
- if (ioresult != 0) {
- registrant = "(Unregistered evaluation copy.)";
- return;
- }
-
- for (fv = 1; fv <= 53; fv ++) t >> NL;
- t >> x >> NL;
- close(t);
-
- namelen = 107 - ord(x[1]);
- numlen = 107 - ord(x[2]);
-
- registrant = copy(x, 3, namelen);
- reginum = copy(x, 4 + namelen, numlen);
- namechk = copy(x, 4 + namelen + numlen, namelen);
- numchk = copy(x, 4 + namelen + numlen + namelen, numlen);
-
- for (fv = 1; fv <= namelen; fv ++) registrant[fv] = decode1(registrant[fv]);
- for (fv = 1; fv <= numlen; fv ++) reginum[fv] = decode1(reginum[fv]);
-
- if ((! checker(registrant, namechk)) || (! checker(reginum, numchk)))
- registrant = "\?\"!\? ((.)";
- else
- registrant = registrant + " (" + reginum + ").";
-
-}
-
-void flesh_colours() {
- ; /* assembler;
-asm
- mov ax,$1012;
- mov bx,21; { 21 = light pink (why?) */
- /* mov cx,1;
- mov dx,seg @flesh;
- mov es,dx;
- mov dx,offset @flesh;
- int $10;
-
- mov dx,seg @darkflesh;
- mov es,dx;
- mov dx,offset @darkflesh;
- mov bx,5; { 5 = dark pink. */
- /*int $10;
-
- jmp @TheEnd;
-
- @flesh:
- db 56,35,35;
-
- @darkflesh:
- db 43,22,22;
-
- @TheEnd: */
-}
-
-void setup() {
- integer gd, gm;
- file<fonttype> ff;
-
- if (paramstr(1) != "jsb") exit(255);
- checkbreak = false;
- val(paramstr(2), storage_seg, gd);
- val(paramstr(3), storage_ofs, gd);
-
- assign(ff, "avalot.fnt");
- reset(ff);
- ff >> font;
- close(ff);
-
- gd = 3;
- gm = 1;
- initgraph(gd, gm, "");
- setvisualpage(1);
-
- icons();
-}
-
-void big(word x, word y, string z, boolean notted);
-static word start, image;
-
-
-static void generate(byte from, boolean &notted) {
- byte fv;
-
- image = 0;
- for (fv = 0; fv <= 7; fv ++)
- image += (from & (1 << fv)) << fv;
-
- image += image << 1;
- image = hi(image) + lo(image) * 256;
- if (notted) image = ~ image;
-}
-
-void big(word x, word y, string z, boolean notted) {
- byte fv, ff;
- byte bit;
-
- start = x + y * 80;
-
- for (fv = 1; fv <= length(z); fv ++) {
- for (ff = 1; ff <= 12; ff ++) {
- generate(font[z[fv]][ff + 1], notted);
- for (bit = 0; bit <= 2; bit ++) {
- port[0x3c4] = 2;
- port[0x3ce] = 4;
- port[0x3c5] = 1 << bit;
- port[0x3cf] = bit;
- memw[0xa000 * start + ff * 160] = image;
- memw[0xa000 * start + 80 + ff * 160] = image;
- }
- }
- start += 2;
- }
- bit = getpixel(0, 0);
-}
-
-void centre(integer y, string z) {
- big(40 - (length(z)), y, z, false);
-}
-
-void option(byte which, string what) {
- big(16, 41 + which * 33, string((char)(which + 48)) + ')', true);
- big(24, 41 + which * 33, what, true);
-}
-
-void invert(integer x1, integer y1, integer x2, integer y2) {
- word s;
- pointer p;
-
- s = imagesize(x1, y1, x2, y2);
- getmem(p, s);
- getimage(x1, y1, x2, y2, p);
- putimage(x1, y1, p, 4);
- sound(y1);
- delay(30);
- sound(600 - y2);
- delay(20);
- nosound;
- delay(200);
- putimage(x1, y1, p, 0);
- delay(250);
-}
-
-void wait() {
- word x;
- char r;
- boolean pressed;
-
- x = 0;
- pressed = false;
- do {
- setfillstyle(6, 15);
- bar(x , 330, x - 1, 337);
- setfillstyle(1, 0);
- bar(x - 2, 330, x - 3, 337);
- delay(40);
- x += 1;
-
- if (keypressed()) {
- r = readkey();
- if (r == '\0') {
- r = readkey(); /* and...? */
- } else {
- /* Not an extended keystroke. */
- if (set::of(range('1', '6'), cspace, cescape, creturn, eos).has(r)) pressed = true;
- }
- }
-
- } while (!((x == 640) || pressed));
-
- if ((r == cspace) || (r == creturn)) r = '1';
- if (r == cescape) r = '6';
- if (pressed) {
- result = ord(r) - 48;
- invert(48, 37 + result * 33, 114, 69 + result * 33);
- } else result = 177;
-}
-
-void show_up() {
- setvisualpage(0);
-}
-
-void loadmenu() {
- untyped_file f;
- byte bit;
-
- assign(f, "mainmenu.avd");
- reset(f, 1);
- for (bit = 0; bit <= 3; bit ++) {
- port[0x3c4] = 2;
- port[0x3ce] = 4;
- port[0x3c5] = 1 << bit;
- port[0x3cf] = bit;
- blockread(f, mem[0xa000 * 0], 59 * 80);
- }
- close(f);
- bit = getpixel(0, 0);
-}
-
-int main(int argc, const char *argv[]) {
- pio_initialize(argc, argv);
- setup();
- loadmenu();
- load_regi_info();
- option(1, "Play the game.");
- option(2, "Read the background.");
- option(3, "Preview... perhaps...");
- option(4, "View the documentation.");
- option(5, "Registration info.");
- option(6, "Exit back to DOS.");
- centre(275, registrant);
- centre(303, "Make your choice, or wait for the demo.");
-
- show_up();
- wait();
- mem[storage_seg * storage_ofs] = result;
- closegraph();
- return EXIT_SUCCESS;
-}
-
-} // End of namespace Avalanche. \ No newline at end of file