Welcome to the mad building game of Skyriser, a two-player game that requires two joysticks and fast reflexes. The object is to be the first person to successfully construct a skyscraper to the top of the screen, and although that may not sound too challenging, you and your competitor must watch out for dangerous flying planes and explosions.
At the beginning of the game, each player is given a building, a purple one for player 1 and a white one for player 2. Inside a box located at the center top of the screen, several symbols flash on and off in a random pattern. The actions these symbols represent may be good or bad. The symbols are:
* An up arrow
* A down arrow
* A bomb
* A question mark
To activate a symbol, press the joystick button. If you push your button when the up arrow is displayed, your building will get higher. If you push the button when the arrow is facing down, your building will shrink. If you happen to push the button when the bomb symbol is shown, you will lose your entire building. Pushing your button on a question mark can cause two different actions. If the question mark just flashes, you've avoided any action. But most of the time, it will cause an airplane to zip across the screen. If your building is too high, the plane will hit it, and you'll lose your entire building. There are times when you get lucky, of course, and the plane passes overhead, just missing your building.
The plane can affect only the building of the person who made the mistake of pushing on a question mark. Your opponent's building is not affected.
The first building to reach the top of the screen wins. (It is possible to tie.)
Skyriser includes a difficulty feature. The harder levels offer more rapidly changing symbols. There are three levels to choose from: easy, intermediate and hard. Use your joystick to move the flashing cursor to your selection and push the joystick button. I recommend easy for children, intermediate for the average adult and hard for people with a real competitive spirit.
Frank Martone is 20 years old and has an associate degree in liberal arts from Suffolk Community College in Selden, New York. He plans to obtain a B.A. in advertising.
LISTING 1 BASIC
Blue indicates inverse video
AE 10 REM ****************************
PE 20 REM * SKYRISERS *
YL 30 REM * by *
AW 40 REM * Frank Martone *
FW 50 REM * *
BS 66 REM * COPYRIGHT 1989 *
YQ 70 REM * BY ANALOG COMPUTING *
AL 80 REM ****************************
BG 90 REM
QF 100 GOTO 490
DJ 110 XX=4:TI=0:P1H=21:P2H=21:PIW=0:P2W=
0:TIE=0:BOOM=0:POKE 710,101:POKE 711,1
4
ZF 120 SOUND 1,0,0,0:TI=TI+1:IF TI>TD THE
N GOSUB 430
XG 130 POSITION 6,P1H:? #6;"Z":POSITION 1
3,P2H:? #6;"Z":POKE 77,0:SOUND 0,0,0,0
RI 140 IF XX=3 AND STRIG(0)=0 AND STRIG(1
)=0 THEN BOOM=1:GOSUB 300
BX 150 IF XX=3 AND STRIG(1)=0 THEN GOSUB
370
QI 160 IF XX=3 AND STRIG(0)=0 THEN GOSUB
300
ZG 170 IF STRIG(0)=0 AND XX=1 THEN P1H=P1
H-1:FOR D=15 TO 0 STEP -2:SOUND 0,P1H+
50,10,D:NEXT D
DG 180 IF STRIG(0)=0 AND XX=2 THEN POSITI
ON 6,P1H:? #6;" ":P1H=P1H+1:FOR D=15 T
O 0 STEP -1:SOUND 0,D+90,10,D:NEXT D
EB 190 IF P1H>21 THEN POSITION 6,P1H:? #6
;"J":P1H=P1H-1
MS 200 IF P2H>21 THEN POSITION 13,P2H:? #
6;"J":P2H=P2H-1
EZ 210 IF STRIG(1)=0 AND XX=1 THEN P2H=P2
H-1:FOR D=15 TO 0 STEP -2:SOUND 0,P2H+
50,10,D:NEXT D
QJ 220 IF STRIG(1)<>0 OR XX<>2 THEN 230
YD 225 POSITION 13,P2H:? #6;" ":P2H=P2H+1
:FOR D=15 TO 0 STEP -1:SOUND 0,D+90,10
,D:NEXT D:GOSUB 430
LS 230 IF P1H=3 AND P2H=3 THEN TIE=1:GOTO
1940
LV 240 IF P1H=3 THEN P1W=1:GOTO 1940
NA 250 IF P2H=3 THEN P2W=1:GOTO 1940
EM 260 IF XX=4 AND STRIG(0)=0 THEN GOSUB
750
IM 270 IF XX=4 AND STRIG(1)=0 THEN GOSUB
860
MT 280 GOTO 120
IY 290 REM ****PLAYER 1 BUILDING DESTROYE
D****
UB 300 FOR D=15 TO 0 STEP -1:POKE 708,D+4
0:SOUND 0,D*444,8,D:SOUND 1,100,0,D:NE
XT D:SOUND 1,0,0,0
VH 310 FOR R=P1H TO 21:POSITION 6,R:? #6;
"1":POSITION 6,R:? #6;"6":FOR D=1 TO 5
:SOUND 0,D,0,D:NEXT D
BS 320 POSITION 6,R:? #6;" ":POKE 708,RND
(0)*10+50:IF R<8 THEN POSITION 6,R:? #
6;"!"
HA 330 NEXT R:SOUND 0,0,0,0
MH 340 P1H=21:POKE 708,137:POSITION 6,22:
? #6;"J":IF BOOM=1 THEN GOTO 370
IP 350 BOOM=0:RETURN
JN 360 REM ****PLAYER 2 BUILDING DESTROYE
D****
UP 370 FOR D=15 TO 0 STEP -1:POKE 708,D+4
0:SOUND 0,D*444,8,D:SOUND 1,100,0,D:NE
XT D:SOUND 1,0,0,0
UE 380 FOR R=P2H TO 21:POSITION 13,R:? #6
;"1":POSITION 13,R:? #6;"6":FOR D=1 TO
5:SOUND 0,D,8,D:NEXT D
LE 390 POSITION 13,R:? #6;" ":POKE 708,RN
D(0)*10+50:IF R<8 THEN POSITION 13,R:?
#6;"!"
GV 400 NEXT R:SOUND 0,0,0,0
VR 410 P2H=21:POKE 708,137
VR 420 POSITION 13,22:? #;"j":BOOM=0:RET
URN
QD 430 XX=INT(RND(0)*4)+1:POSITION 10,4:?
#6;" "
BJ 440 IF XX=1 THEN POSITION 10,4:? #6;"%
"
DI 450 IF XX=2 THEN POSITION 10,4:? #6;"&
"
OF 460 IF XX=3 THEN POSITION 10,4:? #6;"+
"
EU 470 IF XX=4 THEN POSITION 10,4:? #6;".
":SOUND 0,100,0,10
JJ 480 FOR R=15 TO 0 STEP -3:SOUND 0,R+70
,0,R:SOUND 1,R+90,0,R:NEXT R:TI=0:RETU
RN
VK 490 GRAPHICS 18:POKE 708,14:POSITION 4
,5:? #6;"READING DATA":GOSUB 1270:GOTO
1820
PT 500 GRAPHICS 17:POKE 559,0
YK 510 POKE 756,CH/256:POKE 708,137:POKE
709,2:POKE 710,101:POKE 711,14
AQ 520 FOR C=0 TO 19:COLOR 2:PLOT C,23:DR
AWTO C,RND(0)*5+12:NEXT C
UF 530 GOSUB 1070
FU 540 FOR I=0 TO 7:POSITION 0,I:? #6;"!!
!!!!!!!!!!!!!!!!!!":NEXT I:POSITION 6,
0:? #6;"skyrisers'
WS 550 GOSUB 950
FZ 560 FOR S=1 TO 29:POSITION RND(0)*19,R
ND(0)*6+1:? #6;"v":NEXT S
MM 570 POSITION 0,22:? #6;"qqqqqqqqqqqqqq
qqqqqq"
LT 580 FOR D=1 TO 18:POSITION RND(O)*19,R
ND(0)*5+16:? #6;"w":NEXT D
OH 590 FOR D=1 TO 30:POSITION RND(0)*19,R
ND(0)*5+16:? #6;"Z":NEXT D
GX 600 FOR R=10 TO 22:POSITION 6,R:? #6;"
U":POSITION 13,R:? #6;"U":NEXT R
FT 610 POSITION 9,3:? #6;"DGH":POSITION 9
,4:? #6;"L M":POSITION 9,5:? #6;"PTX"
VW 620 POSITION 6,22:? #6;"J":POSITION 13
,22:? #6;"j"
QT 630 POSITION 10,4:? #6;".":POSITION 2,
2:? #6;"b"
QW 640 FOR G=17 TO 23:POSITION 2,G:? #6;"
f":NEXT G:POSITION 2,16:? #6;"o"
TT 650 FOR G=19 TO 23:POSITION 3,G:? #6;"
f":NEXT G
NI 660 FOR G=17 TO 23:POSITION 11,G:? #6;
"f";NEXT G:POSITION 11,16:? #6;"n"
ZA 670 FOR G=18 TO 23:POSITION 0,G:? #6;"
f":NEXT G
NW 680 FOR G=18 TO 23:POSITION 17,G:? #6;
"f":NEXT G:POSITION 17,17:? #6;"o"
XH 690 FOR G=21 TO 23:POSITION 18,G:? #6;
"f":NEXT G:POSITION 18,20:? #6;"n"
SU 700 POSITION 15,21:? #6;"a":POSITION 1
5,22:? #6;"C":POKE 559,62
VH 710 GOSUB 1910
PL 720 GOTO 190
GI 730 DATA -1
UQ 740 REM ****PLANES AFTER PLAYER ONE***
*
BV 750 POKE 704,0:POKE 707,255
GE 760 IF PEEK(53770)<30 THEN FOR D=1 TO
4:POSITION 10,4:? #6;".":FOR G=1 TO 6:
NEXT G:POSITION 10,4:?#6;".":NEXT D
NK 765 IF PEEK(53770)<30 THEN RETURN
NZ 770 IF PEEK(53770)<100 THEN GOTO 820
DN 780 FOR R=0 TO 90 STEP 4:POKE 53248,R:
SOUND 0,R,8,10:SOUND 1,100,0,4:NEXT R
SP 790 IF P1H<=9 THEN POKE 704,55:FOR D=1
TO 5:NEXT D:POKE 53248,0:GOSUB 300:RE
TURN
HV 800 FOR R=90 TO 224 STEP 6:POKE 53248,
R:SOUND 0,R,0,10:NEXT R
ZG 810 RETURN
UZ 820 FOR R=0 TO 90 STEP 4:POKE 53251,R:
SOUND 0,R,8,10:SOUND 1,100,0,4:NEXT R
JY 830 IF P1H<=15 THEN POKE 707,55:FOR D=
1 TO 5:NEXT D:POKE 53251,0:GOSUB 300:R
ETURN
VM 840 FOR R=90 TO 224 STEP 6:POKE 53251,
R:SOUND 0,R,0,10:NEXT R:RETURN
AI 850 REM ****PLANES AFTER PLAYER TWO***
*
VQ 860 IF PEEK(53770)<30 THEN FOR D=1 TO
14:POSITION 10,4:? #6;".":FOR G=1 TO 6
:NEXT G:POSITION 10,4:? #6;".":NEXT D
NL 865 IF PEEK(53770)<30 THEN RETURN
NZ 870 IF PEEK(53770)<100 THEN GOTO 910
TC 880 FOR R=255 TO 157 STEP -4:POKE 5324
9,R:SOUND 0,R,8,10:SOUND 1,100,0,4:NEX
T R
UB 890 IF P2H<=15 THEN POKE 706,55:FOR D=
1 TO 5:NEXT D:POKE 53249,0:GOSUB 370:R
ETURN
VE 900 FOR R=157 TO 0 STEP -6:POKE 53249,
R:SOUND 0,R,0,10:NEXT R:SOUND 0,0,0,0:
RETURN
BX 910 FOR R=255 TO 160 STEP -4:POKE 5325
0,R:SOUND 0,R,8,10:SOUND 1,100,0,4:NEX
T R
DG 920 IF P2H<=9 THEN POKE 706,55:POKE 53
250,0:GOSUB 376:RETURN
IS 930 FOR R=160 TO 0 STEP -6:POKE 53250,
R:SOUND 0,R,0,10:NEXT R:RETURN
FM 940 REM ****P/M GRAPHICS*-**
WF 950 RESTORE 1020
CU 960 A=PEEK(106)-24:POKE 54279,A:POKE 5
3277,3:POKE 623,1
EW 970 P6=256*A+1024:K=100:P1=256*A+1280:
J=145:P2=256*A+1536:D=95:P3=256*8+1792
:R=150
HW 980 FOR I=P0+K TO P0+7+K:READ F:POKE I
,F:NEXT I
HS 990 FOR I=P1+J TO P1+7+J:READ F:POKE I
,F:NEKT I
IA 1000 FOR I=P2+D TO P2+7+D:READ F:POKE
I,F:NEXT I
EZ 1010 FOR I=P3+R TO P3+7+R:READ F:POKE
I,F:NEXT I
OK 1020 DATA 0,128,192,254,127,56,16,0
GB 1030 DATA 0,0,1,3,126,252,60,14
MY 1040 DATA 0,1,126,255,126,1,24,0
MC 1050 DATA 0,128,255,126,56,96,0,0
AW 1060 REM ****DLI****
IC 1070 RESTORE 1100
AX 1080 FOR A=1536 TO 1536+28:READ B:POKE
A,B:NEXT A:POKE 512,0:POKE 513,6:DL=P
EEK(560)+256*PEEK(561):POKE 54286,192
YU 1090 POKE DL+28,128:RETURN
AV 1100 DATA 72,138,72,141,10,212,169
FZ 1110 DATA 132
QN 1120 DATA 141,26,208,162,15,141,10,212
,202,208,250,173,200,2,141,26,208,104,
170,164,64
PJ 1130 REM ****GAME OVER****
XL 1140 GRAPHICS 17:POKE 756,224:POKE 711
,14:POKE 710,255:POKE 708,135:POKE 712
,0:POKE 559,0
LO 1150 FOR G=0 TO 22:POSITION 0,G:? #6;"
____________________":NEXT G
DE 1160 POSITION 6,5:? #6;"game over"
CW 1170 IF P1W=1 THEN POSITION 3,11:? #6;
"PLAYER ONE WINS"
VW 1180 IF P2W=1 THEN POSITION 3,11:? #6;
"PLAYER TWO WINS"
LG 1190 IF TIE=1 THEN POSITION 3,11:? #6;
" game is a tie ":FOR D=155 TO 0 STEP
-6.4:SOUND 0,D*20,10,5:NEXT D
JF 1200 SOUND 0,0,0,0:SOUND 1,0,0,0:POKE
559,62
CJ 1210 FOR E=1 TO 20:FOR D=15 TO 0 STEP
-2:SETCOLOR 0,24,D:SOUND 0,D*60,10,1:N
EXT D:NEXT E:POKE 712,0
FY 1220 FOR G=1 TO 5:FOR S=1 TO RND(0)*15
:SOUND 0,S*9,6,10:SOUND 1,S,10,3:NEXT
S:SOUND 0,0,0,0:SOUND 1,0,0,0
FL 1230 POKE 712,G*5:POKE 712,0:NEXT G
QC 1240 GOTO 2050
QS 1250 GOTO 1250
AL 1260 REM ****CHARACTER SET****
DE 1270 CH=(PEEK(106)-8)*256:FOR I=0 TO 7
:POKE CH+I,5:NEXT I
CB 1280 FOR I=0 TO 512:POKE CH+I,PEEK(537
44+I):NEXT I
LM 1290 RESTORE 1330
SU 1300 READ A:IF A<0 THEN RETURN
WX 1310 FOR J=0 TO 7:READ B:POKE CH+A*8+J
,B:NEXT J:GOTO 1300
EI 1320 REM ****CHARACTER DATA****
SJ 1330 DATA 33,126,66,66,66,126,194,194,
194
RH 1340 DATA 2,255,255,255,255,255,255,25
5,255
OP 1350 DATA 5,0,16,56,124,16,16,16,0
DI 1360 DATA 36,127,64,64,64,67,68,68,72
VY 1370 DATA 46,239,239,239,199,199,131,1
71,131
CD 1380 DATA 35,254,134,134,128,128,128,1
30,254
AD 1390 DATA 47,255,255,251,243,227,203,1
39,131
YV 1400 DATA 48,72,68,68,67,64,64,64,127
IQ 1410 DATA 41,8,8,8,24,24,24,24,24
YM 1420 DATA 40,255,1,1,129,97,17,17,9
ZB 1430 DATA 52,0,0,0,0,193,62,0,255
DW 1440 DATA 39,254,130,128,128,128,142,1
34,254
MA 1450 DATA 45,9,9,5,5,5,5,9,9
PQ 1460 DATA 51,254,192,192,192,254,2,2,2
54
VE 1470 DATA 37,254,128,128,128,254,192,1
92,254
CS 1480 DATA 38,131,171,131,171,131,171,1
31,131
HD 1490 DATA 50,252,132,132,132,254,198,1
98,198
RS 1500 DATA 43,66,68,72,88,224,254,194,1
94
IV 1510 DATA 58,255,213,255,213,255,213,2
55,255
QE 1520 DATA 49,255,255,0,255,0,255,0,255
AY 1530 DATA 55,255,147,255,255,147,255,2
55,147
AN 1540 DATA 57,130,130,130,130,254,6,6,1
26
VX 1550 DATA 54,0,0,0,4,0,0,0,0
XR 1560 DATA 42,255,255,255,255,255,231,2
31,231
QV 1570 DATA 6,0,16,16,16,124,56,16,0
GF 1580 DATA 11,0,8,16,56,124,124,56,0
YY 1590 DATA 14,0,56,68,4,8,16,0,16
LZ 1600 DATA 44,72,72,80,80,80,80,72,72
MO 1610 DATA 56,129,129,129,129,147,147,2
11,127
ZQ 1620 DATA 53,255,255,255,255,255,255,2
55,255
YZ 1638 DATA 17,60,126,255,255,255,255,12
6,60
OO 1640 DATA 18,0,8,33,4,0,8,5,88
NU 1650 DATA 19,128,32,66,0,68,16,128,76
NZ 1660 DATA 20,2,32,13,8,66,4,32,0
FZ 1670 DATA 21,102,13,168,0,8,96,2,128
FB 1680 DATA 22,0,0,1,0,0,9,5,0
XS 1690 DATA 23,0,0,0,0,8,64,0,64
EM 1700 DATA 25,0,0,0,5,0,16,0,1
VS 1710 DATA 26,16,128,32,0,0,0,0,0
QQ 1720 DATA 1,0,0,0,0,0,0,0,0
FI 1730 DATA 34,12,24,48,112,112,48,24,12
RY 1740 DATA 16,255,0,255,0,255,0,255,0
AU 1750 DATA 24,129,129,129,129,129,129,1
29,129
ZM 1760 DATA 33,255,255,255,255,199,131,1
31,199
GC 1770 DATA 35,215,215,171,147,171,85,10
9,109
QD 1780 DATA 39,255,0,62,193,0,0,0,0
XB 1790 DATA 56,9,17,17,97,129,1,1,255
EU 1800 DATA -1
IQ 1810 REM ****TITLE SCREEN****
AN 1820 GRAPHICS 18:POKE 559,0:POKE 756,C
H/256:POKE 711,14:POKE 710,255:POKE 70
9,2
XS 1830 FOR R=54248 TO 53252:POKE R,0:NEX
T R
UU 1840 FOR G=4 TO 6:POSITION 0,G:? #6;"!
!!!!!!!!!!!!!!!!!!!":NEXT G
IW 1850 POSITION 6,5:? #6;"skyrisers":POK
E 559,62
KH 1860 FOR T=1 TO 13
EY 1870 FOR D=15 TO 0 STEP -1:SETCOLOR 0,
24,D:SOUND 0,D+60,10,1:NEXT D:SOUND 0,
0,0,0
KU 1880 NEXT T
TP 1890 GOTO 2190
XG 1900 REM ****MOVE PLANES DEMO****
XJ 1910 M=255:POKE 704,255:POKE 705,49:PO
KE 706,0:POKE 707,212
UY 1920 FOR R=0 TO 255 STEP 5:POKE 53248,
R:POKE 53249,M-R:SOUND O,R,0,3:SOUND 1
,R,0,2:NEXT R
LU 1930 FOR R=0 TO 255 STEP 6:POKE 53250,
M-R:POKE 53251,R:NEXT R:GOTO 110
VP 1940 REM ****FIREWORKS!****
GF 1950 QQ=9:KK=3:POKE 708,0
DZ 1960 COLOR 3:FOR C=3 TO 5:POSITION 9,C
:? #6;" ":NEXT C
TO 1970 FOR Q=1 TO 7:FOR D=15 TO 0 STEP -
6:SOUND 0,D,8,D:POKE 712,D+45:NEXT D:N
EXT Q:POKE 712,0
SX 1980 FOR FIRE=1 TO 16:POSITION QQ,KK:?
#6;"23":POSITION QQ, KK+1:? #6;"45"
AR 1990 FOR S=1 TO RND(0)*15:SOUND 0,S*7,
6,10:SOUND 1,5,10,3:NEXT S:SOUND 0,0,0
,0:SOUND 1,0,0,0
HA 2000 POSITION QQ,KK:? #6;"67":POSITION
QQ,KK+1:? #6;"59":FOR D=1 TO 3:NEXT D
TV 2010 POSITION QQ,KK:? #6;" ":POSITION
QQ,KK+1:? #6;" ":POKE 708,0
CV 2020 QQ=INT(RND(0)*2)+9:KK=INT(RND(0)*
3)+1
LO 2030 NEXT FIRE
PA 2040 GOTO 1130
XE 2050 FOR D=1 TO 200:NEXT D:GRAPHICS 17
:POKE 708,0:POKE 710,14:CC=0:POKE 712,
3
KA 2060 POSITION 0,19:? #6;"
"
MV 2870 POKE 708,0:POKE 709,146
QY 2080 POSITION 0,2:? #6;"
"
XV 2090 FOR R=54248 TO 53252:POKE R,0:NEX
T R
KV 2100 POSITION 5,18:? #6;"PLAY AGAIN?";
FOR R=15 TO B STEP -1:SOUND 0,20,10,R:
NEXT R
UP 2110 POSITION 5,13:? #6;"press fire":F
OR D=1 TO 20:NEXT D
WP 2120 POSITION 5,13:? #6;" ":
FOR D=1 TO 15:NEXT D
MU 2130 IF STRIG(0)=0 OR STRIG(1)=0 THEN
GOTO 2190
WB 2140 CC=CC+1:IF CC>45 THEN CC=0:GOTO 2
160
OQ 2150 GOTO 2110
DC 2160 GRAPHICS 18:POKE 712,64:POKE 708,
14
KT 2170 POSITION 1,5:? #6;"OH,COME ON ALR
EADY!"
UP 2180 FOR D=15 TO 8 STEP -3:SOUND 0,D*6
,10,D:NEXT D:FOR G=1 TO 300:NEXT G:GOT
O 1810
WA 2190 GRAPHICS 17:POKE 709,130:POKE 708
,132:POKE 710,14:T=11:POKE 756,224:POK
E 712,130:POKE 711,255
LS 2200 POSITION 0,6:? #6;"______________
______"
DX 2210 POSITION 0,17:? #6;"_____________
_______"
PI 2220 POSITION 1,5:? #6;"select skill l
level":POKE 708,223
WZ 2230 POSITION 6,11:? #6,"EASY"
ZS 2240 POSITION 6,13:? #6;"INTERMEDIATE"
EM 2250 POSITION 6,15:? #6;"HARD"
QR 2260 FOR D=15 TO 0 STEP -1:SOUND 0,50,
10,D:NEXT D
ZS 2270 FOR D=15 TO 0 STEP -2:SOUND 8,20,
10,D:NEXT D:SOUND 0,0,0,0
AG 2280 POSITION 5,T:? #6;">":FOR D=1 TO
10:NEXT D:POSITION 5,T:? #6;" ":FOR D=
1 TO 8:NEXT D
GJ 2290 IF STICK(0)=14 OR STICK(1)=14 THE
N T=T+2
GT 2300 IF STICK(0)=13 OR STICK(1)=13 THE
N T=T-2
EL 2310 IF T>15 THEN T=11
FI 2320 IF T<11 THEN T=15
BL 2330 IF STRIG(0)=0 OR STRIG(1)=0 THEN
2350
SQ 2340 GOTO 2280
XR 2350 IF T=11 THEN TD=8
GY 2360 IF T=13 THEN TD=4.5
VN 2370 IF T=15 THEN TD=3
OU 2380 FOR D=10 TO 0 STEP -1:SOUND 0,35,
10,D:NEXT D:FOR R=O TO 19:PLOT R,0:DRA
WTO R,23:NEXT R
PS 2390 GOTO 500