home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Amiga Game Guide
/
AmigaGameGuide_CD.iso
/
Amiga
/
PD-Games
/
Kikstart
/
kik.amos
/
kik.amosSourceCode
Wrap
AMOS Source Code
|
1977-12-31
|
18KB
|
769 lines
Set Buffer 32
If Prg State=-1 Then Break Off
If Prg State=-1 Then Amos Lock
MYOFS=51
SONICMODE=0
LEVELS=20
Screen Open 1,320,256,32,Lowres
Hide
Flash Off
Curs Off
Load "fire.animfont"
Get Sprite Palette
Ink 0
Bar 0,0 To 320,245
Screen Open 2,320,256,32,Lowres
Flash Off
Curs Off
Get Palette 1
Ink 0
Bar 0,0 To 320,256
Screen Open 3,320,256,32,Lowres
Flash Off
Curs Off
Get Palette 1
Ink 0
Bar 0,0 To 320,256
Screen Open 0,320,256,2,Lowres
Flash Off
Curs Off
Ink 0
Bar 0,0 To 320,256
Dim DAT(1000)
Open In 4,"intro.text"
TL=1
Repeat
Input #4,DAT(TL)
TL=TL+1
Until Eof(4)
Close 4
Screen To Front 0
ZEILE=0
LAEN=0
DAUER=10
Dim BLOCK(16,8)
Dim ZLAEN(8)
Procedure CLEARSCREENS
Screen 0
Ink 0
Bar 0,0 To 320,256
Screen 1
Ink 0
Bar 0,0 To 320,256
Screen 2
Ink 0
Bar 0,0 To 320,256
Screen 3
Ink 0
Bar 0,0 To 320,256
End Proc
Procedure RENDERWAHNSINN
Shared BLOCK(),ZLAEN(),ZEILE
CLEARSCREENS
Screen To Front 0
For ZE=0 To ZEILE+1
If ZLAEN(ZE)=0 Then Goto NAECHSTEZEILE
For SP=1 To ZLAEN(ZE)
If BLOCK(SP,ZE)=0 Then Goto NAECHSTESZEICHEN
X=20*SP+(280-(ZLAEN(ZE)*20))/2
Y=40*(ZE+1)
Screen 1
Paste Bob X,Y,BLOCK(SP,ZE)
Screen 2
Paste Bob X,Y,BLOCK(SP,ZE)+50
Screen 3
Paste Bob X,Y,BLOCK(SP,ZE)+100
NAECHSTESZEICHEN:
Next
NAECHSTEZEILE:
Next
End Proc
Procedure ANM
Shared DAUER,SKIP
SKIP=0
For C=1 To DAUER/3
For D=1 To 3
Screen To Front D
Wait 5
If Mouse Click Then SKIP=1 : Exit 2
If Inkey$<>"" Then SKIP=1 : Exit 2
If Fire(1) Then SKIP=1 : Exit 2
Next
Next
Screen 0
Screen To Front
End Proc
Track Load Dir$+"funkey.mod",6
Track Loop On
Track Play 6
For I=1 To TL
If SKIP=1 Then Exit
If DAT(I)=42 Then CLEARSCREENS : ZEILE=0 : LAEN=0 : DAUER=10 : Goto DERNAECHSTEBITTE
If DAT(I)=43 Then ZLAEN(ZEILE)=LAEN : ZEILE=ZEILE+1 : LAEN=0 : Goto DERNAECHSTEBITTE
If DAT(I)=44 Then ZLAEN(ZEILE)=LAEN : RENDERWAHNSINN : Wait 2 : ANM : Screen To Front 0 : Goto DERNAECHSTEBITTE
LAEN=LAEN+1
BLOCK(LAEN,ZEILE)=DAT(I)
DAUER=DAUER+1
DERNAECHSTEBITTE:
Next
Track Stop
Erase 6
Erase 1
Screen 0
Screen To Front
Screen Close 1
Screen Close 2
Screen Close 3
Rem Ende der Introsequenz
'PROGRAM Super Kikstart
Hide
Randomize Timer
NODIM=0
FULLNEW:
Sprite Off
If RESTART=1 Then RESTART=0 : NODIM=1
Screen Open 0,320,256,32,Lowres
Flash Off
Curs Off
Load Iff "kikstartplus.iff"
Pen 1
Paper 0
LEVEL=1
Track Load Dir$+"backforfuture.mod",6
Track Loop On
Track Play 6
Repeat
IN$=Inkey$
If IN$=" " Then HELP
If IN$="s" Then SHOT
If IN$="i" Then INFO
If IN$="L" Then Input "Startlevel:";LEVEL : Ink 0 : Bar 0,0 To 320,8 : Curs Off : Flash Off
If IN$="S" Then SONICMODE=1 : MYOFS=$49
If IN$="q" Then Track Stop : Erase 1 : Erase 3 : Erase 5 : Erase 6 : End
Until Fire(1)
Track Stop
Screen Close 0
'H�heninformation
42 Data 8,7,6,5,4,3,4,5,6,7,8,6,7,6,4,5,5,6,8,8,6,5,7,7,7,3,3,3,2,2,2,2,2,2,4,2,7,7,7,7,3,3,3,7,7,7,2,7,7,7
'Ereignisfelder
Data 0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,3,0,1,0,2,1,0,1,0,0,0,0,1,1,1,1,1,1,0,2,2,2
If NODIM=1 Then Goto ND1
Dim HOEHE(50)
Dim SPECIAL(50)
Dim LIMIT(21)
Dim REQUISITE(21) : Rem 0=nix 1=ballons 2=fl�gelr�der 3=1+2 4=gewitter
Dim OBJECT(4)
Dim VISIBLE(4)
Dim X#(4),Y#(4),MOVE#(4)
LIMIT(1)=40
REQUISITE(1)=0
LIMIT(2)=25
REQUISITE(2)=1
LIMIT(3)=30
REQUISITE(3)=2
LIMIT(4)=40
REQUISITE(4)=0
LIMIT(5)=30
REQUISITE(5)=4
LIMIT(6)=30
REQUISITE(6)=2
LIMIT(7)=40
REQUISITE(7)=2
LIMIT(8)=30
REQUISITE(8)=1
LIMIT(9)=40
REQUISITE(9)=0
LIMIT(10)=30
REQUISITE(10)=1
LIMIT(11)=30
REQUISITE(11)=0
LIMIT(12)=30
REQUISITE(12)=1
LIMIT(13)=30
REQUISITE(13)=2
LIMIT(14)=30
REQUISITE(14)=2
LIMIT(15)=30
REQUISITE(15)=1
LIMIT(16)=30
REQUISITE(16)=1
LIMIT(17)=30
REQUISITE(17)=1
LIMIT(18)=40
REQUISITE(18)=2
LIMIT(19)=30
REQUISITE(19)=0
LIMIT(20)=40
REQUISITE(20)=1
Get Rom Fonts
Restore 42
For I=1 To 50
Read HOEHE(I)
Next
For I=1 To 50
Read SPECIAL(I)
Next
Screen Open 1,320,256,8,Lowres
Colour 1,$0
Dim LEVEL(200)
Dim RE(200)
Flash Off
Curs Off
Dim S(10)
Ink 0
Bar 0,0 To 319,255
Def Scroll 1,0,150 To 320,215,-1,0 : Rem Def Scroll
Def Scroll 2,0,150 To 320,215,-2,0
Def Scroll 3,0,150 To 320,215,-3,0
Rem SOUND!
S$=""
For I=0 To 127
S$=S$+Chr$(127)
Next
For I=128 To 255
S$=S$+Chr$(255)
Next
Set Wave 2,S$
Wave 2 To %1111
Set Envel 2,0 To 1,63
Set Envel 2,1 To 5,63
For I=2 To 6
Set Envel 2,I To 0,0
Next
ND1:
LIVES=5
PUNKTE=0
JUMP=0
LIMIT#=LIMIT(1)
Tempo 15
If NODIM=1 Then Goto ND2
Dim TITLE$(LEVELS)
ND2:
TITLE$(1)="THE VERY FIRST ONE"
TITLE$(2)="RAILWAY STATION I"
TITLE$(3)="OVER THE RIVER"
TITLE$(4)="THE GREAT WALL"
TITLE$(5)="GLOOMY FOREST"
TITLE$(6)="BUILDING SITE"
TITLE$(7)="RAILWAY STATION II"
TITLE$(8)="TOXIC DRAINS"
TITLE$(9)="COAL MINES"
TITLE$(10)="BONUS"
TITLE$(11)="THE AMIGA"
TITLE$(12)="LED DISPLAY"
TITLE$(13)="MAINFRAME"
TITLE$(14)="WIRED CHAOS"
TITLE$(15)="THE PROCESSOR"
TITLE$(16)="LEGOLAND"
TITLE$(17)="JUST MORE LEGO"
TITLE$(18)="A KID BUILT THIS"
TITLE$(19)="GREAT LEGO WALL"
TITLE$(20)="THE FINAL LEVEL... FOR NOW!"
' --- Hier beginnt ein neues Level!
NEWLEVEL:
Sprite Off
If LEVEL>LEVELS Then OUTRO : RESTART=1 : Goto FULLNEW
BALLONS=0
RAD=0
GEWITTER=0
For I=1 To 4 : VISIBLE(I)=0 : Next
If Prg State=1 Then REQUISITE(LEVEL)=0
If REQUISITE(LEVEL)=0 Then Goto NOOBJECT
If REQUISITE(LEVEL)=4 Then Goto THUNDER
If REQUISITE(LEVEL)<>2 Then BALLONS=1 : Rem Sprites 2,3,4
If REQUISITE(LEVEL)<>1 Then RAD=1
Goto NOOBJECT :
THUNDER:
GEWITTER=1
NOOBJECT:
Sprite Off
If JUMP=1 Then Ink 0 : Bar 0,0 To 320,256 : Sprite Off : Wait Vbl
Open In 1,"level"+Str$(LEVEL)+".lev"
For I=0 To 200
Input #1,LEVEL(I)
Input #1,RE(I)
Next
Close 1
SET=(LEVEL-1)/5+1
Load "kik"+Str$(SET)+".abk"
Make Mask
Load "sonic.abk",1
Get Sprite Palette
Colour 0,$0
MASKOFF
Load "kikmuzak.abk"
Music 1
JUMP=0
X=1
Ink 0
Bar 0,0 To 320,256
Ink 1,0
LEV=LEVEL mod 5
If LEV=0 Then LEV=5
Text 70,70,"WORLD"+Str$(SET)+", LEVEL"+Str$(LEV)+":"
Text 70,86,TITLE$(LEVEL)
Repeat
For I=1 To 8
Scroll 1
Wait Vbl
Next
Paste Bob 310,150,LEVEL(X)
X=X+1
If X>200 Then X=1
Until Fire(1)
Music Off
'Ab hier wird das Startbild gerendert!
Ink 0,0
Bar 0,0 To 320,256
POS=10
For I=POS-20 To POS+20
X=I*8+80
J=I
If J<0 Then J=J+201
Paste Bob X,150,LEVEL(J)
Next
BIKES
' TIME ab 50, SCORE ab 200
Rem UPTIME[12.34]
Paste Bob 20,20,55 : Rem Score hat 7 Stellen
Paste Bob 160,20,56
Rem Paste Bob 232,20,57
'Los gehts
'speed zwischen 6 und 1 (?)
Ink 0,0
Bar 318,0 To 320,255
SPEED#=0.05
REALPOS#=10
OLDPOS#=10
UPSPEED#=0.0
BRAKE=0
JMP=0 : Rem Sounds...
HIJMP=0
PLOPP=0
VOL=32
GO=0
SC=1
H#=48
NEX=1
FLAG=1
ANI=0
MX#=0.15
Rem Bob Update Off : Rem Weg damit ???????
Sprite 0,X Hard(146),Y Hard(195-H#),51
Get Sprite Palette
For I=16 To 28 Step 4
Colour I+1,$FFF
Colour I+2,$888
Colour I+3,$600
Next
Colour 23,$C00
Colour 27,$990
Colour 30,$33F
If SONICMODE=0 Then Goto NOSONICPALETTE : Rem S O N I C
Colour 17,$FFF
Colour 18,$66F
Colour 19,$112
NOSONICPALETTE:
Sprite Off
UPSCORE
IMPLOSION[146,195-H#]
Timer=0
Volume 20
Repeat
If BALLONS=0 Then Sprite Off 2 : Sprite Off 3 : Sprite Off 4 : Goto NOBALLONS :
If Rnd(100)>50 Then INITMOVE=1 Else INITMOVE=-1
For I=1 To 3
If BRAKE=1 Then X#(I)=X#(I)-5 : Goto NONEW
If VISIBLE(I)=0 and Rnd(100)>99.4 Then VISIBLE(I)=1 : MOVE#(I)=INITMOVE : X#(I)=321 : Y#(I)=Rnd(50)+70
NONEW:
If VISIBLE(I)=1 Then X#(I)=X#(I)-(SPEED#*10+1) : If X#(I)<-16 Then VISIBLE(I)=0
Y#(I)=Y#(I)+MOVE#(I) : If Y#(I)>=120 or Y#(I)<=70 Then MOVE#(I)=MOVE#(I)*-1
If Y#(I)>120 Then Y#(I)=120
If Y#(I)<70 Then Y#(I)=70
Next
If Sprite Col(0,2 To 4) Then VISIBLE(Col(-1)-1)=0 : PLOPP=60 : PUNKTE=PUNKTE+10 : LIMIT#=LIMIT#+1
If LIMIT#-Timer/50.0>99 Then LIMIT#=99+Timer
UPBALLONS
NOBALLONS:
If RAD=0 Then Goto NORAD
If Rnd(100)>50 Then INITMOVE=1 Else INITMOVE=-1
If BRAKE=1 Then X#(4)=X#(4)-5 : Goto NONEW2
If VISIBLE(4)=0 and Rnd(100)>99.4 Then VISIBLE(4)=1 : MOVE#(4)=INITMOVE : X#(4)=321 : Y#(4)=Rnd(50)+70 : PHASE=0 : GAP=0
NONEW2:
If VISIBLE(4)=1 Then X#(4)=X#(4)-(SPEED#*10+1) : If X#(4)<-20 Then VISIBLE(4)=0
Y#(4)=Y#(4)+MOVE#(4) : If Y#(4)>=120 or Y#(4)<=70 Then MOVE#(4)=-MOVE#(4)
If Y#(4)>120 Then Y#(4)=120
If Y#(4)<70 Then Y#(4)=70
GAP=GAP+1
If GAP>5 Then GAP=0 : PHASE=PHASE+1
If PHASE>2 Then PHASE=0
If Sprite Col(0,6 To 6) Then VISIBLE(4)=0 : Sprite Off 6 : STERBEN
If RESTART=1 Then Goto REKICK
If VISIBLE(4)=1 Then Sprite 6,X Hard(X#(4)),Y Hard(Y#(4)),70+PHASE
NORAD:
If LIMIT#-Timer/50.0>99 Then LIMIT#=99+Timer
If BRAKE<>1 Then Z=LIMIT#*50-Timer
ZEIT#=Z/50.0
If ZEIT#<=0 Then ZEIT#=0 : UPTIME[ZEIT#] : BUMM[146,195-H#] : SCHLEIFE
If RESTART=1 Then Goto REKICK
If FLAG=1 Then UPTIME[ZEIT#]
If FLAG=6 Then UPSCORE
FLAG=FLAG+1 : If FLAG>9 Then FLAG=1
If FLAG<>1 or BRAKE=1 Then Goto HERE
If Jright(1) Then SPEED#=SPEED#+0.02
If Jleft(1) Then SPEED#=SPEED#-0.02
If SPEED#<0.05 Then SPEED#=0.05
If SPEED#>MX# Then SPEED#=MX#
HERE:
If BRAKE=1 Then SPEED#=SPEED#-0.002
If SPEED#<0 Then SPEED#=0
If H#=HOEHE(LEVEL(POS))*8 and SPECIAL(LEVEL(POS))=1 Then STERBEN
If RESTART=1 Then Goto REKICK
If BRAKE=1 Then Goto NOJUMP
If Fire(1) and H#=HOEHE(LEVEL(POS))*8 Then UPSPEED#=25 : JMP=50
NOJUMP:
P1=POS-1 : If P1=-1 Then P1=200
P2=POS+1 : If P2=201 Then P2=0
If SPECIAL(LEVEL(POS))=3 and POS<10 Then BRAKE=1
If SPECIAL(LEVEL(POS))=2 and SPECIAL(LEVEL(P1))=2 and SPECIAL(LEVEL(P2))=2 and H#=HOEHE(LEVEL(POS))*8 Then UPSPEED#=48 : HIJMP=35
H#=H#+UPSPEED#/20.0
UPSPEED#=UPSPEED#-0.9
If H#<=HOEHE(LEVEL(POS))*8 Then UPSPEED=0 : H#=HOEHE(LEVEL(POS))*8 : If HOEHE(LEVEL(P2))>HOEHE(LEVEL(POS)) Then STERBEN
If RESTART=1 Then Goto REKICK
YPS=195 : If SONICMODE=1 Then YPS=187
Sprite 0,X Hard(146),Y Hard(YPS-H#),MYOFS+ANI : Rem <--- Held!
Wait Vbl
Rem H#=HOEHE(LEVEL(POS))
Bob Clear
REALPOS#=REALPOS#+SPEED#
If SPEED#<0.0005 Then SPEED=0
If SPEED#=0 Then Goto NOSOUND
If JMP=0 and HIJMP=0 Then Play 15+SPEED#*50,0 : Rem <--- SOUND!
If PLOPP<>0 Then PLOPP=PLOPP-3 : Play PLOPP,0
If PLOPP<35 Then PLOPP=0
If JMP>0 Then JMP=JMP+1 : Play JMP,0
If JMP>60 Then JMP=0
If HIJMP>0 Then HIJMP=HIJMP+2 : Play HIJMP,0
If HIJMP>60 Then HIJMP=0
NOSOUND:
If REALPOS#>200 Then REALPOS#=REALPOS#-200
If OLDPOS#>200 Then REALPOS#=REALPOS#-200
If SC<7 and REALPOS#-0.2>OLDPOS# Then OLDPOS#=OLDPOS#+0.2 : Scroll 2 : SC=SC+2
If SC<8 and REALPOS#-0.1>OLDPOS# Then OLDPOS#=OLDPOS#+0.1 : Scroll 1 : SC=SC+1
Bob Draw
DR=POS+20 : If DR>200 Then DR=DR-200
If SC>7 Then SC=0 : POS=POS+1 : Paste Bob 310,150,LEVEL(DR) : PUNKTE=PUNKTE+1 : If ANI=1 Then ANI=0 Else ANI=1
If POS>=200 Then POS=POS-200 : REALPOS#=REALPOS#-200 : OLDPOS#=OLDPOS#-200
If SPEED#=0 Then SCORE
If JUMP=1 Then Sprite Off
REKICK:
Until Inkey$="q" or JUMP+RESTART=1
Volume 63
Ink 0
Bar 0,0 To 320,256
If JUMP=1 Then Goto NEWLEVEL
RESTART=1
If RESTART=1 Then Goto FULLNEW
Erase 1
Erase 3
' ENDE DES PROGRAMMS !
Procedure IMPLOSION[XPOS,YPOS]
XX=XPOS
YY=YPOS
For I=150 To 0 Step -6
Bob 2,XX-I,YY-I,54
Bob 3,XX+I,YY-I,54
Bob 4,XX+I,YY+I,54
Bob 5,XX-I,YY+I,54
Bob 0,XX,YY+I,54
Bob 1,XX,YY-I,54
Bob 6,XX+I,YY,54
Bob 7,XX-I,YY,54
Wait Vbl
Next
Bob Off
End Proc
Procedure BUMM[XPOS,YPOS]
Sprite Off 0
Sprite Off 1
XX=XPOS
YY=YPOS
Boom
For I=0 To 150 Step 6
Bob 2,XX-I,YY-I,54
Bob 3,XX+I,YY-I,54
Bob 4,XX+I,YY+I,54
Bob 5,XX-I,YY+I,54
Bob 0,XX,YY+I,54
Bob 1,XX,YY-I,54
Bob 6,XX+I,YY,54
Bob 7,XX-I,YY,54
Bob Update On
Wait Vbl
Next
Bob Off
End Proc
Procedure STERBEN
Shared H#,RE(),LEVEL(),POS,REALPOS#,OLDPOS#,SPEED#,SC,UPSPEED#,LIVES,ZEIT#,LIMIT#,VISIBLE(),X#(),Y#(),PHASE
LIVES=LIVES-1 : If LIVES<0 Then LIVES=-1
BUMM[154,203-H#]
BIKES
If LIVES<0 Then SCHLEIFE : NEW=1
If NEW=1 Then Goto SKIP
If SC=1 Then Goto NO
Repeat
If SC<8 Then Scroll 1 : Wait Vbl : SC=SC+1
Until SC>7
POS=POS+1
DR=POS+19
If DR>200 Then DR=DR-200
Paste Bob 310,150,LEVEL(DR)
NO:
Repeat
For I=1 To 8
Scroll 1
For J=1 To 4
X#(J)=X#(J)-1
Next
UPBALLONS
If VISIBLE(4)=1 Then Sprite 6,X Hard(X#(4)),Y Hard(Y#(4)),70+PHASE Else Sprite Off 6
Wait Vbl
Next
PHASE=PHASE+1
If PHASE>2 Then PHASE=0
If BRAKE<>1 Then Z=LIMIT#*50-Timer
ZEIT#=Z/50.0
UPTIME[ZEIT#]
Wait Vbl
If ZEIT#<=0 Then BUMM[146,195-H#] : SCHLEIFE
DR=POS+20
If DR>200 Then DR=DR-200
Paste Bob 310,150,LEVEL(DR)
POS=POS+1
If POS=200 Then POS=0
Until RE(POS)<>0
H#=8*RE(POS)
If POS=199 Then POS=0 : H#=32
REALPOS#=POS
OLDPOS#=POS
H#=H#+24
IMPLOSION[154,203-H#]
UPSPEED#=0
SPEED#=0.05
SC=0
SKIP:
End Proc
Procedure BIKES
Ink 0
Bar 0,225 To 160,250
Shared LIVES
If LIVES=0 Then Goto NOLIVES
For I=0 To LIVES-1
Paste Bob I*25,225,53
Next
NOLIVES:
End Proc
Procedure UPBALLONS
Shared X#(),Y#(),VISIBLE()
For J=1 To 3
If VISIBLE(J)=1 Then Sprite J+1,X Hard(X#(J)),Y Hard(Y#(J)),69 Else Sprite Off J+1
Next
End Proc
Procedure SCORE
Shared LIVES,PUNKTE,ZEIT#,SET
Dim SOUND(4)
SOUND(0)=38
SOUND(1)=32
SOUND(2)=49
SOUND(3)=41
SOUND(4)=50
Ink 1,0
Set Font 1
Text 64,76,"BONUS FOR TIME LEFT"
Text 260,84,"X"+Str$(SET)
Text 64,92,"BIKES LEFT BONUS"
If LIVES<5 Then Text 64,108,"EXTRA BIKE AWARDED..." Else Text 64,108,"FIVE BIKES LEFT STILL..."
TLB=ZEIT#*10
Text 224,76,Str$(TLB)
BLB=LIVES*25
Text 224,92,Str$(BLB)
If LIVES<5 Then LIVES=LIVES+1 : BIKES
For I=6 To 1 Step -1
For J#=600 To 300 Step -(I*3)-5
Play J#/10.0,0
Wait Vbl
Next
Next
SND=0
PPP=0
While TLB>=3
TLB=TLB-3
PUNKTE=PUNKTE+3*SET
Ink 0
Bar 224,68 To 256,76
Ink 1,0
Text 224,76,Str$(TLB)
PPP=PPP+1 : If PPP>9 Then PPP=0 : Wait Vbl : UPSCORE
Wait Vbl
Play SOUND(SND),1
SND=SND-1 : If SND<0 Then SND=4
Wend
PUNKTE=PUNKTE+TLB*SET : TLB=0
Ink 0
Bar 224,68 To 256,76
Ink 1,0
Text 224,76,Str$(0)
While BLB>=3
BLB=BLB-3
PUNKTE=PUNKTE+3*SET
Ink 0
Bar 224,84 To 256,92
Ink 1,0
Text 224,92,Str$(BLB)
PPP=PPP+1 : If PPP>9 Then PPP=0 : Wait Vbl : UPSCORE
Wait Vbl
Play SOUND(SND),1
SND=SND-1 : If SND<0 Then SND=4
Wend
PUNKTE=PUNKTE+BLB*SET : BLB=0
Ink 0
Bar 224,84 To 256,92
Ink 1,0
Text 224,92,Str$(BLB)
UPSCORE
Wait 100
LEVELNEXT
End Proc
Procedure LEVELNEXT
Shared LEVEL,JUMP,ZEIT#,LIMIT(),LIMIT#
LEVEL=LEVEL+1
JUMP=1
LIMIT#=LIMIT(LEVEL)+ZEIT#
If LIMIT#>99 Then LIMIT#=99
Sprite Off
End Proc
Procedure SCHLEIFE
Shared RESTART,LIVES
UPSCORE
LIVES=0
BIKES
Ink 1,0
Sprite Off
Text 120,100,"GAME OVER"
Wait 100
Fade 10
For I=1 To 4
For J=80 To 50 Step -2
Play J-(I*10),1
Next
Next
Wait 50
RESTART=1
Ink 0
Bar 0,0 To 320,256
End Proc
Procedure MASKOFF
For I=58 To 68
No Mask I
Next
End Proc
Procedure UPTIME[TIME#]
S1=TIME#/10
TM=TIME#
S2=TM mod 10
TMP=100*(TIME#-TM)
S3=TMP/10
S4=TMP mod 10
If S1>0 Then Paste Bob 66,20,58+S1 Else Paste Bob 66,20,68
If S2>0 Then Paste Bob 74,20,58+S2 Else Paste Bob 74,20,68
Paste Bob 82,20,58
If S3>0 Then Paste Bob 90,20,58+S3 Else Paste Bob 90,20,68
If S4>0 Then Paste Bob 98,20,58+S4 Else Paste Bob 98,20,68
End Proc
Procedure UPSCORE
Shared PUNKTE,S()
Rem Ink 0
Rem Bar 208,20 To 280,36
S(1)=PUNKTE/1000000
S(2)=PUNKTE/100000-S(1)*10
S(3)=PUNKTE/10000-S(2)*10-S(1)*100
S(4)=PUNKTE/1000-S(3)*10-S(2)*100-S(1)*1000
S(5)=PUNKTE/100-S(4)*10-S(3)*100-S(2)*1000-S(1)*10000
S(6)=PUNKTE/10-S(5)*10-S(4)*100-S(3)*1000-S(2)*10000-S(1)*100000
S(7)=PUNKTE-S(6)*10-S(5)*100-S(4)*1000-S(3)*10000-S(2)*100000-S(1)*1000000
For I=1 To 7
If S(I)>0 Then Paste Bob 208+8*I,20,58+S(I) Else Paste Bob 208+8*I,20,68
Next
End Proc
Procedure OUTRO
Screen Open 7,320,200,32,Lowres
Screen Open 6,320,256,32,Lowres
Screen To Front 6
Curs Off
Flash Off
Hide
Sprite Off
Ink 0,0
Bar 0,0 To 320,256
Load "landscape.abk"
Load "theend.abk"
Get Sprite Palette
Screen 7
Get Sprite Palette
Screen 6
Def Scroll 4,0,200 To 320,232,-2,0
Dim DAT(1000)
Open In 2,"outro.text"
LE=0
Repeat
Input #2,DAT(LE)
LE=LE+1
Until Eof(2)
Close 2
Screen Open 5,320,185,32,Lowres
Flash Off
Load Iff "theend1.abk"
X=0
Music 1
Repeat
Screen 7
Ink 0
Bar 0,0 To 32,32
CHR=DAT(X)
X=X+1
If X>LE Then X=0
If CHR=99 Then CHR=0
If CHR<>0 Then Paste Bob 0,0,CHR
Screen 6
For I=1 To 16
Screen Copy 7,I*2-1,0,I*2+1,32 To 6,318,205
Scroll 4
Wait Vbl
Next
Rem Paste Bob 287,200,CHR
Until Mouse Click or Fire(1)
Music Off
Screen Close 5
Screen Close 6
Screen Close 7
Erase 1
Erase 3
End Proc
Procedure HELP
Load Iff "kikhelpplus.iff"
Repeat
Until Inkey$<>"" or Fire(1)
Load Iff "kikstartplus.iff"
End Proc
Procedure INFO
Load Iff "kikinfoplus.iff"
Repeat
Until Inkey$<>"" or Fire(1)
Load Iff "kikstartplus.iff"
End Proc
Procedure SHOT
Load Iff "kikshotplus.iff"
Repeat
Until Inkey$<>"" or Fire(1)
Load Iff "kikstartplus.iff"
End Proc