aboutsummaryrefslogtreecommitdiff
path: root/engines/avalanche/gyro.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/avalanche/gyro.cpp')
-rw-r--r--engines/avalanche/gyro.cpp609
1 files changed, 0 insertions, 609 deletions
diff --git a/engines/avalanche/gyro.cpp b/engines/avalanche/gyro.cpp
deleted file mode 100644
index bcdd4c14d6..0000000000
--- a/engines/avalanche/gyro.cpp
+++ /dev/null
@@ -1,609 +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.
- */
-
-/*
- ÛßÜ ÛßÜ ÜßßÜ ßÛß Ûßß Üß ßÛß ÜßÛßÜ ßÛß ÛÜ Û ÜÛßß ßÛß ÛßÜ Ûßß Û
- Ûß ÛÛ Û Û Ü Û Ûßß ßÜ Û Û Û Û Û Û ÛÜÛ ßßßÜ Û ÛÛ Ûßß Û
- ß ß ß ßß ßß ßßß ß ß ß ß ß ßßß ß ßß ßßß ß ß ß ßßß ßßß
-
- GYRO It all revolves around this bit! */
-
-#define __gyro_implementation__
-
-
-#include "gyro.h"
-
-
-#include "pingo.h"
-#include "scrolls.h"
-#include "lucerna.h"
-#include "visa.h"
-#include "acci.h"
-#include "trip5.h"
-#include "dropdown.h"
-#include "basher.h"
-
-namespace Avalanche {
-
-const array < '\1', numobjs, varying_string<15> > things = {
- {
- "Wine", "Money-bag", "Bodkin", "Potion", "Chastity belt",
- "Crossbow bolt", "Crossbow", "Lute", "Pilgrim's badge", "Mushroom", "Key",
- "Bell", "Scroll", "Pen", "Ink", "Clothes", "Habit", "Onion"
- }
-};
-
-const array < '\1', numobjs, char > thingchar = "WMBParCLguKeSnIohn"; /* V=Vinegar */
-
-const array < '\1', numobjs, varying_string<17> > better = {
- {
- "some wine", "your money-bag", "your bodkin", "a potion", "a chastity belt",
- "a crossbow bolt", "a crossbow", "a lute", "a pilgrim's badge", "a mushroom",
- "a key", "a bell", "a scroll", "a pen", "some ink", "your clothes", "a habit",
- "an onion"
- }
-};
-
-const array < '\1', numobjs, char > betterchar = "WMBParCLguKeSnIohn";
-
-void newpointer(byte m) {
- if (m == cmp) return;
- cmp = m;
- {
- ax = 9;
- bx = (word)(mps[m].horzhotspot);
- cx = (word)(mps[m].verthotspot);
- es = seg(mps[m].mask);
- dx = ofs(mps[m].mask);
- }
- intr(0x33, r);
- load_a_mouse(m);
-}
-
-void wait() { /* makes hourglass */
- newpointer(5);
-}
-
-void on() {
- if (set_of_enum(<null>)::of(m_yes, m_virtual, eos).has(visible)) return;
-
- r.ax = 1;
- intr(0x33, r);
- visible = m_yes;
- if (oncandopageswap) {
- r.ax = 29;
- r.bx = cp;
- intr(0x33, r); /* show mouse on current page */
- }
-}
-
-void on_virtual() {
- switch (visible) {
- case m_virtual:
- return;
- break;
- case m_yes:
- off();
- break;
- }
-
- visible = m_virtual;
-}
-
-void off() {
- switch (visible) {
- case m_no:
- case m_virtual :
- return;
- break;
- case m_yes : {
- r.ax = 2;
- intr(0x33, r);
- }
- break;
- }
- visible = m_no;
-}
-
-void off_virtual() {
- byte fv;
-
- if (visible != m_virtual) return;
-
- for (fv = 0; fv <= 1; fv ++) {
- setactivepage(fv);
- wipe_vmc(1 - fv);
- }
- setactivepage(1 - cp);
- visible = m_no;
-}
-
-void xycheck() { /* only updates mx & my, not all other mouse vars */
- r.ax = 3;
- intr(0x33, r); /* getbuttonstatus */
- {
- keystatus = bx;
- mx = cx;
- my = dx;
- }
-}
-
-void hopto(integer x, integer y) { /* Moves mouse pointer to x,y */
- {
- ax = 4;
- cx = x;
- dx = y;
- }
- intr(0x33, r);
-}
-
-void check() {
- {
- ax = 6;
- bx = 0;
- }
- intr(0x33, r); /* getbuttonreleaseinfo */
- {
- mrelease = bx;
- mrx = cx;
- mry = dx;
- }
- {
- ax = 5;
- bx = 0;
- }
- intr(0x33, r); /* getbuttonpressinfo */
- {
- mpress = bx;
- mpx = cx;
- mpy = dx;
- }
- xycheck(); /* just to complete the job. */
-}
-
-void note(word hertz) {
- if (soundfx) sound(hertz);
-}
-
-void blip() {
- byte fv;
-
- for (fv = 1; fv <= 7; fv ++) {
- sound(177 + (fv * 200) % 177);
- delay(1);
- }
- nosound;
-}
-
-string strf(longint x) {
- string q;
-
- string strf_result;
- str(x, q);
- strf_result = q;
- return strf_result;
-}
-
-void shadow(integer x1, integer y1, integer x2, integer y2, byte hc, byte sc) {
- byte fv;
-
- for (fv = 0; fv <= border; fv ++) {
- setfillstyle(1, hc);
- bar(x1 + fv, y1 + fv, x1 + fv, y2 - fv);
- bar(x1 + fv, y1 + fv, x2 - fv, y1 + fv);
-
- setfillstyle(1, sc);
- bar(x2 - fv, y1 + fv, x2 - fv, y2 - fv);
- bar(x1 + fv, y2 - fv, x2 - fv, y2 - fv);
- }
-}
-
-void shbox(integer x1, integer y1, integer x2, integer y2, string t) {
- const integer fc = 7;
-
- off();
- shadow(x1, y1, x2, y2, 15, 8);
- setfillstyle(1, fc);
- bar(x1 + border + 1, y1 + border + 1, x2 - border - 1, y2 - border - 1);
- setcolor(1);
- x1 = (x2 - x1) / 2 + x1;
- y1 = (y2 - y1) / 2 + y1;
- outtextxy(x1, y1, t);
- if (length(t) > 1) {
- fillchar(t[2], length(t) - 1, '\40');
- t[1] = '_';
- outtextxy(x1 - 1, y1 + 1, t);
- }
- on();
-}
-
-void newgame() { /* This sets up the DNA for a completely new game. */
- byte gd, gm;
-
- for (gm = 1; gm <= numtr; gm ++) {
- triptype &with = tr[gm];
- if (with.quick) done();
- } /* Deallocate sprite. Sorry, beta testers! */
-
- tr[1].init(0, true);
- alive = true;
-
- score = 0; /*for gd:=0 to 5 do which[gd]:=1;*/
- fillchar(dna, sizeof(dna), '\0');
- natural();
- normal_edit();
- mousepage(0);
- dna.spare_evening = "answer a questionnaire";
- dna.like2drink = "beer";
-
- {
- dna.pence = 30; /* 2/6 */ dna.rw = stopped;
- dna.wearing = clothes;
- dna.obj[money] = true;
- dna.obj[bodkin] = true;
- dna.obj[bell] = true;
- dna.obj[clothes] = true;
- }
-
- thinks = '\2';
- objectlist();
- ontoolbar = false;
- seescroll = false;
-
- ppos[0][1] = -177; /*tr[1].appear(300,117,right);*/ gd = 0;
- for (gd = 0; gd <= 30; gd ++) for (gm = 0; gm <= 1; gm ++) also[gd][gm] = nil;
- /* fillchar(previous^,sizeof(previous^),#0); { blank out array } */
- him = '\376';
- her = '\376';
- it = '\376';
- last_person = '\376'; /* = Pardon? */
- dna.pass_num = Random(30) + 1;
- after_the_scroll = false;
- dna.user_moves_avvy = false;
- doing_sprite_run = false;
- dna.avvy_in_bed = true;
- enid_filename = "";
-
- for (gd = 0; gd <= 1; gd ++) {
- cp = 1 - cp;
- getback();
- }
-
- enterroom(1, 1);
- new_game_for_trippancy();
- showscore();
-
- standard_bar();
- clock();
- sprite_run();
-}
-
-void click() { /* "Audio keyboard feedback" */
- sound(7177);
- delay(1);
- nosound;
-}
-
-void slowdown() {
- /* repeat until TSkellern>=howlong; TSkellern:=0;*/
- do {
- } while (!(memw[storage_seg * skellern] >= howlong));
- memw[storage_seg * skellern] = 0;
-}
-
-boolean flagset(char x) {
- boolean flagset_result;
- flagset_result = pos(x, flags) > 0;
- return flagset_result;
-}
-
-void force_numlock() {
- if ((locks & num) > 0) locks -= num;
-}
-
-boolean pennycheck(word howmuchby) {
- boolean pennycheck_result;
- dna.pence -= howmuchby;
- if (dna.pence < 0) {
- dixi('Q', 2); /* "you are now denariusless!" */
- pennycheck_result = false;
- gameover();
- } else
- pennycheck_result = true;
- return pennycheck_result;
-}
-
-string getname(char whose) {
- string getname_result;
- if (whose < '\257') getname_result = lads[whose];
- else getname_result = lasses[whose];
- return getname_result;
-}
-
-char getnamechar(char whose) {
- char getnamechar_result;
- if (whose < '\257') getnamechar_result = ladchar[whose - 1];
- else getnamechar_result = lasschar[whose - 1];
- return getnamechar_result;
-}
-
-string get_thing(char which) {
- string get_thing_result;
- switch (which) {
- case wine:
- switch (dna.winestate) {
- case 1:
- case 4:
- get_thing_result = things[which];
- break;
- case 3:
- get_thing_result = "Vinegar";
- break;
- }
- break;
- case onion:
- if (dna.rotten_onion)
- get_thing_result = "rotten onion";
- else get_thing_result = things[which];
- break;
- default:
- get_thing_result = things[which];
- }
- return get_thing_result;
-}
-
-char get_thingchar(char which) {
- char get_thingchar_result;
- switch (which) {
- case wine:
- if (dna.winestate == 3) get_thingchar_result = 'V'; /* Vinegar */
- else get_thingchar_result = thingchar[which - 1];
- break;
- default:
- get_thingchar_result = thingchar[which - 1];
- }
- return get_thingchar_result;
-}
-
-string get_better(char which) {
- string get_better_result;
- if (which > '\226') which -= 149;
- switch (which) {
- case wine:
- switch (dna.winestate) {
- case 0:
- case 1:
- case 4:
- get_better_result = better[which];
- break;
- case 3:
- get_better_result = "some vinegar";
- break;
- }
- break;
- case onion:
- if (dna.rotten_onion)
- get_better_result = "a rotten onion";
- else if (dna.onion_in_vinegar)
- get_better_result = "a pickled onion (in the vinegar)";
- else get_better_result = better[which];
- break;
- default:
- if ((which < numobjs) && (which > '\0'))
- get_better_result = better[which];
- else
- get_better_result = "";
- }
- return get_better_result;
-}
-
-string f5_does()
-/* This procedure determines what f5 does. */
-{
- string f5_does_result;
- switch (dna.room) {
- case r__yours: {
- if (! dna.avvy_is_awake) {
- /* He's asleep, =>= wake up. */
- f5_does_result = string(vb_wake) + "WWake up";
- return f5_does_result;
- }
-
- if (dna.avvy_in_bed) {
- /* In bed. => = get up. */
- f5_does_result = string(vb_stand) + "GGet up";
- return f5_does_result;
- }
-
- }
- break;
-
- case r__insidecardiffcastle: {
- if (dna.standing_on_dais)
- f5_does_result = string(vb_climb) + "CClimb down";
- else
- f5_does_result = string(vb_climb) + "CClimb up";
- return f5_does_result;
- }
- break;
-
- case r__nottspub: {
- if (dna.sitting_in_pub)
- f5_does_result = string(vb_stand) + "SStand up";
- else
- f5_does_result = string(vb_sit) + "SSit down";
- return f5_does_result;
- }
- break;
-
- case r__musicroom:
- if (infield(7)) {
- f5_does_result = string(vb_play) + "PPlay the harp";
- return f5_does_result;
- }
- break;
- }
-
- f5_does_result = pardon; /* If all else fails... */
- return f5_does_result;
-}
-
-void plot_vmc(integer xx, integer yy, byte page_) {
- if (visible != m_virtual) return;
- {
- xx = xx + vmc.ofsx;
- if (xx < 0) xx = 0;
- yy = yy + vmc.ofsy;
- if (yy < 0) yy = 0;
-
- setactivepage(1 - cp);
- getimage(xx, yy, xx + 15, yy + 15, vmc.backpic[page_]);
- putimage(xx, yy, vmc.andpic, andput);
- putimage(xx, yy, vmc.xorpic, xorput);
-
- /* setcolor( 0); outtextxy(xx+8,yy+16,'Û'); outtextxy(xx,yy+16,'Û');
- setcolor(11+page);
- outtextxy(xx+8,yy+16,chr(48+roomtime mod 10));
- outtextxy(xx ,yy+16,chr(48+(roomtime div 10) mod 10));*/
-
- {
- pointtype &with1 = vmc.wherewas[page_];
-
- with1.x = xx;
- with1.y = yy;
- }
- }
-}
-
-void wipe_vmc(byte page_) {
- if (visible != m_virtual) return;
- {
- pointtype &with1 = vmc.wherewas[page_];
- if (with1.x != maxint)
- putimage(with1.x, with1.y, vmc.backpic[page_], 0);
- }
-}
-
-void setup_vmc() {
- byte fv;
-
- {
- getmem(vmc.andpic, mouse_size);
- getmem(vmc.xorpic, mouse_size);
-
- for (fv = 0; fv <= 1; fv ++) {
- getmem(vmc.backpic[fv], mouse_size);
- vmc.wherewas[fv].x = maxint;
- }
- }
-}
-
-void clear_vmc() {
- byte fv;
-
- for (fv = 0; fv <= 1; fv ++) vmc.wherewas[fv].x = maxint;
-}
-
-void setminmaxhorzcurspos(word min, word max) { /* phew */
- {
- ax = 7;
- cx = min;
- dx = max;
- }
- intr(0x33, r);
-}
-
-void setminmaxvertcurspos(word min, word max) {
- {
- ax = 8; /* A guess. In the book, 7 */
- cx = min;
- dx = max;
- }
- intr(0x33, r);
-}
-
-void load_a_mouse(byte which) {
- untyped_file f;
-
- assign(f, "mice.avd");
- reset(f, 1);
- seek(f, mouse_size * 2 * (which - 1) + 134);
-
- {
- blockread(f, vmc.andpic, mouse_size);
- blockread(f, vmc.xorpic, mouse_size);
- close(f);
- {
- mp &with1 = mps[which];
-
- vmc.ofsx = -with1.horzhotspot;
- vmc.ofsy = -with1.verthotspot;
-
- setminmaxhorzcurspos(with1.horzhotspot + 3, 624 + with1.horzhotspot);
- setminmaxvertcurspos(with1.verthotspot, 199);
- }
- }
-}
-
-void background(byte x) {
- setbkcolor(x);
-}
-
-void hang_around_for_a_while() {
- byte fv;
-
- for (fv = 1; fv <= 28; fv ++) slowdown();
-}
-
-boolean mouse_near_text() {
- boolean mouse_near_text_result;
- mouse_near_text_result = (my > 144) && (my < 188);
- return mouse_near_text_result;
-}
-
-/* Super_Off and Super_On are two very useful procedures. Super_Off switches
- the mouse cursor off, WHATEVER it's like. Super_On restores it again
- afterwards. */
-
-void super_off() {
- super_was_off = visible == m_no;
- if (super_was_off) return;
-
- super_was_virtual = visible == m_virtual;
-
- if (visible == m_virtual) off_virtual();
- else off();
-}
-
-void super_on() {
- if ((visible != m_no) || (super_was_off)) return;
-
- if (super_was_virtual) on_virtual();
- else on();
-}
-
-} // End of namespace Avalanche. \ No newline at end of file