aboutsummaryrefslogtreecommitdiff
path: root/engines/avalanche/chunkxff.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/avalanche/chunkxff.cpp')
-rw-r--r--engines/avalanche/chunkxff.cpp291
1 files changed, 0 insertions, 291 deletions
diff --git a/engines/avalanche/chunkxff.cpp b/engines/avalanche/chunkxff.cpp
deleted file mode 100644
index 777e224cbd..0000000000
--- a/engines/avalanche/chunkxff.cpp
+++ /dev/null
@@ -1,291 +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 "Tommys.h"*/
-/*#include "Crt.h"*/
-
-namespace Avalanche {
-
-enum flavourtype {ch_ega, ch_bgi, last_flavourtype};
-
-struct chunkblocktype {
- flavourtype flavour;
- integer x, y;
- integer xl, yl;
- longint size;
- boolean natural;
-
- boolean memorise; /* Hold it in memory? */
-};
-
-const array<1, 44, char> chunkheader =
- string("Chunk-type AVD file, for an Avvy game.") + '\32' + '\261' + '\x30' + '\x1' + '\x75' + '\261';
-
-const integer arraysize = 12000;
-
-array<1, 30, longint> offsets;
-byte num_chunks, this_chunk;
-integer gd, gm;
-untyped_file f;
-array<0, arraysize, byte> aa;
-
-void finder() {
- char r;
- integer x, y;
- setfillstyle(0, 0);
- setcolor(14);
- x = 320;
- y = 100;
- setwritemode(xorput);
- do {
- bar(0, 0, 200, 10);
- outtextxy(0, 0, strf(x) + ',' + strf(y));
- line(x - 20, y, x + 20, y);
- line(x, y - 20, x, y + 20);
- do {
- } while (!keypressed());
- line(x - 20, y, x + 20, y);
- line(x, y - 20, x, y + 20);
- switch (readkey()) {
- case '\15':
- return;
- break;
- case '8':
- y -= 10;
- break;
- case '4':
- x -= 10;
- break;
- case '6':
- x += 10;
- break;
- case '2':
- y += 10;
- break;
- case '\0':
- switch (readkey()) {
- case cup:
- y -= 1;
- break;
- case cdown:
- y += 1;
- break;
- case cleft:
- x -= 1;
- break;
- case cright:
- x += 1;
- break;
- }
- break;
- }
- } while (!false);
-}
-
-void load() {
- byte a1 /*absolute $A400:800*/;
- byte bit;
- untyped_file f;
-
- assign(f, "place13.avd");
- reset(f, 1);
- seek(f, 177);
- for (bit = 0; bit <= 3; bit ++) {
- port[0x3c4] = 2;
- port[0x3ce] = 4;
- port[0x3c5] = 1 << bit;
- port[0x3cf] = bit;
- blockread(f, a1, 12080);
- }
-
- close(f);
- bit = getpixel(0, 0);
- setvisualpage(1);
- setactivepage(1);
- finder();
- setvisualpage(0);
- setactivepage(0);
-}
-
-void loadtemp() {
- byte a0 /*absolute $A000:800*/;
- byte bit;
- untyped_file f;
-
- assign(f, "chunkbi3.avd");
- reset(f, 1);
- seek(f, 177);
- for (bit = 0; bit <= 3; bit ++) {
- port[0x3c4] = 2;
- port[0x3ce] = 4;
- port[0x3c5] = 1 << bit;
- port[0x3cf] = bit;
- blockread(f, a0, 12080);
- }
- close(f);
-
- bit = getpixel(0, 0);
-
- finder();
-}
-
-void open_chunk() {
- assign(f, "chunk13.avd");
- rewrite(f, 1);
- blockwrite(f, chunkheader, sizeof(chunkheader));
- blockwrite(f, num_chunks, 1);
- blockwrite(f, offsets, num_chunks * 4);
-
- this_chunk = 0;
-}
-
-void close_chunk() {
- seek(f, 45);
- blockwrite(f, offsets, num_chunks * 4); /* make sure they're right! */
- close(f);
-}
-
-void mgrab(integer x1, integer y1, integer x2, integer y2, word size) {
- integer yy;
- word aapos;
- byte length, bit;
- if (size > arraysize) {
- restorecrtmode();
- output << "*** SORRY! *** Increase the arraysize constant to be greater" << NL;
- output << " than " << size << '.' << NL;
- exit(0);
- }
-
- aapos = 0;
-
- length = x2 - x1;
-
- for (bit = 0; bit <= 3; bit ++) {
- port[0x3c4] = 2;
- port[0x3ce] = 4;
- port[0x3c5] = 1 << bit;
- port[0x3cf] = bit;
- for (yy = y1; yy <= y2; yy ++) {
- move(mem[0xa400 * yy * 80 + x1], aa[aapos], length);
- aapos += length;
- }
- }
- bit = getpixel(0, 0);
-
-}
-
-void grab(integer x1, integer y1, integer x2, integer y2, integer realx, integer realy, flavourtype flav,
- boolean mem, boolean nat)
-/* yes, I *do* know how to spell "really"! */
-{
- word s;
- pointer p;
- chunkblocktype ch;
- /* rectangle(x1,y1,x2,y2); exit;*/
- this_chunk += 1;
- offsets[this_chunk] = filepos(f);
-
-
- s = imagesize(x1, y1, x2, y2);
- getmem(p, s);
- getimage(x1, y1, x2, y2, p);
-
- {
- ch.flavour = flav;
- ch.x = realx;
- ch.y = realy;
-
- ch.xl = x2 - x1;
- ch.yl = y2 - y1;
- ch.size = s;
- ch.memorise = mem;
- ch.natural = nat;
- }
-
- setvisualpage(1);
- setactivepage(1);
- input >> NL;
- putimage(ch.x, ch.y, p, 0);
-
- if (flav == ch_ega) {
- freemem(p, s);
- s = 4 * (((x2 / 8) - (x1 / 8)) + 2) * (y2 - y1 + 1);
- {
- ch.size = s;
- ch.x = ch.x / 8;
- ch.xl = (ch.xl / 8) + 2;
- mgrab(ch.x, ch.y, ch.x + ch.xl, ch.y + ch.yl, s);
- }
- } else
- /* For BGI pictures. */
- {
- ch.x = ch.x / 8;
- ch.xl = (ch.xl + 7) / 8;
- ch.size = imagesize(ch.x * 8, ch.y, (ch.x + ch.xl) * 8, ch.y + ch.yl);
- }
-
- input >> NL;
- setvisualpage(0);
- setactivepage(0);
-
- blockwrite(f, ch, sizeof(ch));
-
- switch (flav) {
- case ch_ega :
- if (! nat) blockwrite(f, aa, s);
- break;
- case ch_bgi : {
- if (! nat) blockwrite(f, p, s);
- freemem(p, s);
- }
- break;
- }
- /* rectangle(x1,y1,x2,y2);*/
-}
-
-int main(int argc, const char *argv[]) {
- pio_initialize(argc, argv);
- gd = 3;
- gm = 0;
- initgraph(gd, gm, "c:\\bp\\bgi");
- load();
- loadtemp();
- setwritemode(xorput);
-
- num_chunks = 3;
-
- open_chunk();
-
- grab(323, 84, 393, 123, 266, 72, ch_ega, false, false); /*1 Door half-open. */
- grab(251, 84, 321, 123, 266, 72, ch_ega, false, false); /*2 Door open. */
- grab(251, 84, 321, 123, 266, 72, ch_bgi, true , true); /*3 Door shut. */
- close_chunk();
- return EXIT_SUCCESS;
-}
-
-} // End of namespace Avalanche. \ No newline at end of file