1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
/*
* 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"*/
integer gd,gm;
word s; pointer p;
file<byte> f;
byte bit;
void load() /* Load2, actually */
{
byte a0; /*absolute $A000:800;*/
byte a1; /*absolute $A000:17184;*/
byte bit;
untyped_file f; varying_string<2> xx;
boolean was_virtual;
assign(f,"v:ttmenu.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);
}
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);
}
int main(int argc, const char* argv[])
{
pio_initialize(argc, argv);
gd=3; gm=1; initgraph(gd,gm,"");
load();
finder();
s=imagesize(342,21,407,119);
getmem(p,s);
getimage(342,21,407,119,p);
putimage(342,21,p,4);
input >> NL;
putimage(264,120,p,0);
input >> NL;
freemem(p,s);
s=imagesize(264,12,329,217);
getmem(p,s);
getimage(264,21,329,218,p);
putimage(264,21,p,4);
putimage(0,0,p,0);
freemem(p,s);
input >> NL;
s=imagesize(180,103,188,135);
getmem(p,s);
getimage(180,103,188,135,p);
putimage(0,200,p,0);
input >> NL;
assign(f,"v:menu.avd");
rewrite(f);
for( bit=0; bit <= 3; bit ++)
{
port[0x3c4]=2; port[0x3ce]=4; port[0x3c5]=1 << bit; port[0x3cf]=bit;
for( gd=0; gd <= 196; gd ++)
for( gm=0; gm <= 8; gm ++)
{
f << mem[0xa000*gd*80+gm];
mem[0xa000*gd*80+gm]=~ mem[0xa000*gd*80+gm];
}
for( gd=200; gd <= 232; gd ++)
{
f << mem[0xa000*gd*80];
mem[0xa000*gd*80]=~ mem[0xa000*gd*80];
}
}
close(f);
return EXIT_SUCCESS;
}
|