home *** CD-ROM | disk | FTP | other *** search
/ The Amiga Game Guide / AmigaGameGuide_CD.iso / Amiga / PD-Games / Kikstart / kik.amos / kik.amosSourceCode
AMOS Source Code  |  1977-12-31  |  18KB  |  769 lines

  1. Set Buffer 32
  2. If Prg State=-1 Then Break Off 
  3. If Prg State=-1 Then Amos Lock 
  4. MYOFS=51
  5. SONICMODE=0
  6. LEVELS=20
  7. Screen Open 1,320,256,32,Lowres
  8. Hide 
  9. Flash Off 
  10. Curs Off 
  11. Load "fire.animfont"
  12. Get Sprite Palette 
  13. Ink 0
  14. Bar 0,0 To 320,245
  15. Screen Open 2,320,256,32,Lowres
  16. Flash Off 
  17. Curs Off 
  18. Get Palette 1
  19. Ink 0
  20. Bar 0,0 To 320,256
  21. Screen Open 3,320,256,32,Lowres
  22. Flash Off 
  23. Curs Off 
  24. Get Palette 1
  25. Ink 0
  26. Bar 0,0 To 320,256
  27. Screen Open 0,320,256,2,Lowres
  28. Flash Off 
  29. Curs Off 
  30. Ink 0
  31. Bar 0,0 To 320,256
  32. Dim DAT(1000)
  33. Open In 4,"intro.text"
  34. TL=1
  35. Repeat 
  36.    Input #4,DAT(TL)
  37.    TL=TL+1
  38. Until Eof(4)
  39. Close 4
  40. Screen To Front 0
  41. ZEILE=0
  42. LAEN=0
  43. DAUER=10
  44. Dim BLOCK(16,8)
  45. Dim ZLAEN(8)
  46. Procedure CLEARSCREENS
  47.    Screen 0
  48.    Ink 0
  49.    Bar 0,0 To 320,256
  50.    Screen 1
  51.    Ink 0
  52.    Bar 0,0 To 320,256
  53.    Screen 2
  54.    Ink 0
  55.    Bar 0,0 To 320,256
  56.    Screen 3
  57.    Ink 0
  58.    Bar 0,0 To 320,256
  59. End Proc
  60. Procedure RENDERWAHNSINN
  61.    Shared BLOCK(),ZLAEN(),ZEILE
  62.    CLEARSCREENS
  63.    Screen To Front 0
  64.    For ZE=0 To ZEILE+1
  65.       If ZLAEN(ZE)=0 Then Goto NAECHSTEZEILE
  66.       For SP=1 To ZLAEN(ZE)
  67.          If BLOCK(SP,ZE)=0 Then Goto NAECHSTESZEICHEN
  68.          X=20*SP+(280-(ZLAEN(ZE)*20))/2
  69.          Y=40*(ZE+1)
  70.          Screen 1
  71.          Paste Bob X,Y,BLOCK(SP,ZE)
  72.          Screen 2
  73.          Paste Bob X,Y,BLOCK(SP,ZE)+50
  74.          Screen 3
  75.          Paste Bob X,Y,BLOCK(SP,ZE)+100
  76.          NAECHSTESZEICHEN:
  77.       Next 
  78.       NAECHSTEZEILE:
  79.    Next 
  80. End Proc
  81. Procedure ANM
  82.    Shared DAUER,SKIP
  83.    SKIP=0
  84.    For C=1 To DAUER/3
  85.       For D=1 To 3
  86.          Screen To Front D
  87.          Wait 5
  88.          If Mouse Click Then SKIP=1 : Exit 2
  89.          If Inkey$<>"" Then SKIP=1 : Exit 2
  90.          If Fire(1) Then SKIP=1 : Exit 2
  91.       Next 
  92.    Next 
  93.    Screen 0
  94.    Screen To Front 
  95. End Proc
  96. Track Load Dir$+"funkey.mod",6
  97. Track Loop On 
  98. Track Play 6
  99. For I=1 To TL
  100.    If SKIP=1 Then Exit 
  101.    If DAT(I)=42 Then CLEARSCREENS : ZEILE=0 : LAEN=0 : DAUER=10 : Goto DERNAECHSTEBITTE
  102.    If DAT(I)=43 Then ZLAEN(ZEILE)=LAEN : ZEILE=ZEILE+1 : LAEN=0 : Goto DERNAECHSTEBITTE
  103.    If DAT(I)=44 Then ZLAEN(ZEILE)=LAEN : RENDERWAHNSINN : Wait 2 : ANM : Screen To Front 0 : Goto DERNAECHSTEBITTE
  104.    LAEN=LAEN+1
  105.    BLOCK(LAEN,ZEILE)=DAT(I)
  106.    DAUER=DAUER+1
  107.    DERNAECHSTEBITTE:
  108. Next 
  109. Track Stop 
  110. Erase 6
  111. Erase 1
  112. Screen 0
  113. Screen To Front 
  114. Screen Close 1
  115. Screen Close 2
  116. Screen Close 3
  117. Rem Ende der Introsequenz  
  118. 'PROGRAM  Super Kikstart 
  119. Hide 
  120. Randomize Timer
  121. NODIM=0
  122. FULLNEW:
  123. Sprite Off 
  124. If RESTART=1 Then RESTART=0 : NODIM=1
  125. Screen Open 0,320,256,32,Lowres
  126. Flash Off 
  127. Curs Off 
  128. Load Iff "kikstartplus.iff"
  129. Pen 1
  130. Paper 0
  131. LEVEL=1
  132. Track Load Dir$+"backforfuture.mod",6
  133. Track Loop On 
  134. Track Play 6
  135. Repeat 
  136.    IN$=Inkey$
  137.    If IN$=" " Then HELP
  138.    If IN$="s" Then SHOT
  139.    If IN$="i" Then INFO
  140.    If IN$="L" Then Input "Startlevel:";LEVEL : Ink 0 : Bar 0,0 To 320,8 : Curs Off : Flash Off 
  141.    If IN$="S" Then SONICMODE=1 : MYOFS=$49
  142.    If IN$="q" Then Track Stop : Erase 1 : Erase 3 : Erase 5 : Erase 6 : End 
  143. Until Fire(1)
  144. Track Stop 
  145. Screen Close 0
  146. 'H�heninformation
  147. 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
  148. 'Ereignisfelder
  149. 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
  150. If NODIM=1 Then Goto ND1
  151. Dim HOEHE(50)
  152. Dim SPECIAL(50)
  153. Dim LIMIT(21)
  154. Dim REQUISITE(21) : Rem 0=nix 1=ballons 2=fl�gelr�der 3=1+2 4=gewitter 
  155. Dim OBJECT(4)
  156. Dim VISIBLE(4)
  157. Dim X#(4),Y#(4),MOVE#(4)
  158. LIMIT(1)=40
  159. REQUISITE(1)=0
  160. LIMIT(2)=25
  161. REQUISITE(2)=1
  162. LIMIT(3)=30
  163. REQUISITE(3)=2
  164. LIMIT(4)=40
  165. REQUISITE(4)=0
  166. LIMIT(5)=30
  167. REQUISITE(5)=4
  168. LIMIT(6)=30
  169. REQUISITE(6)=2
  170. LIMIT(7)=40
  171. REQUISITE(7)=2
  172. LIMIT(8)=30
  173. REQUISITE(8)=1
  174. LIMIT(9)=40
  175. REQUISITE(9)=0
  176. LIMIT(10)=30
  177. REQUISITE(10)=1
  178. LIMIT(11)=30
  179. REQUISITE(11)=0
  180. LIMIT(12)=30
  181. REQUISITE(12)=1
  182. LIMIT(13)=30
  183. REQUISITE(13)=2
  184. LIMIT(14)=30
  185. REQUISITE(14)=2
  186. LIMIT(15)=30
  187. REQUISITE(15)=1
  188. LIMIT(16)=30
  189. REQUISITE(16)=1
  190. LIMIT(17)=30
  191. REQUISITE(17)=1
  192. LIMIT(18)=40
  193. REQUISITE(18)=2
  194. LIMIT(19)=30
  195. REQUISITE(19)=0
  196. LIMIT(20)=40
  197. REQUISITE(20)=1
  198. Get Rom Fonts 
  199. Restore 42
  200. For I=1 To 50
  201.    Read HOEHE(I)
  202. Next 
  203. For I=1 To 50
  204.    Read SPECIAL(I)
  205. Next 
  206. Screen Open 1,320,256,8,Lowres
  207. Colour 1,$0
  208. Dim LEVEL(200)
  209. Dim RE(200)
  210. Flash Off 
  211. Curs Off 
  212. Dim S(10)
  213. Ink 0
  214. Bar 0,0 To 319,255
  215. Def Scroll 1,0,150 To 320,215,-1,0 : Rem Def Scroll 
  216. Def Scroll 2,0,150 To 320,215,-2,0
  217. Def Scroll 3,0,150 To 320,215,-3,0
  218. Rem                                   SOUND! 
  219. S$=""
  220. For I=0 To 127
  221.    S$=S$+Chr$(127)
  222. Next 
  223. For I=128 To 255
  224.    S$=S$+Chr$(255)
  225. Next 
  226. Set Wave 2,S$
  227. Wave 2 To %1111
  228. Set Envel 2,0 To 1,63
  229. Set Envel 2,1 To 5,63
  230. For I=2 To 6
  231.    Set Envel 2,I To 0,0
  232. Next 
  233. ND1:
  234. LIVES=5
  235. PUNKTE=0
  236. JUMP=0
  237. LIMIT#=LIMIT(1)
  238. Tempo 15
  239. If NODIM=1 Then Goto ND2
  240. Dim TITLE$(LEVELS)
  241. ND2:
  242. TITLE$(1)="THE VERY FIRST ONE"
  243. TITLE$(2)="RAILWAY STATION I"
  244. TITLE$(3)="OVER THE RIVER"
  245. TITLE$(4)="THE GREAT WALL"
  246. TITLE$(5)="GLOOMY FOREST"
  247. TITLE$(6)="BUILDING SITE"
  248. TITLE$(7)="RAILWAY STATION II"
  249. TITLE$(8)="TOXIC DRAINS"
  250. TITLE$(9)="COAL MINES"
  251. TITLE$(10)="BONUS"
  252. TITLE$(11)="THE AMIGA"
  253. TITLE$(12)="LED DISPLAY"
  254. TITLE$(13)="MAINFRAME"
  255. TITLE$(14)="WIRED CHAOS"
  256. TITLE$(15)="THE PROCESSOR"
  257. TITLE$(16)="LEGOLAND"
  258. TITLE$(17)="JUST MORE LEGO"
  259. TITLE$(18)="A KID BUILT THIS"
  260. TITLE$(19)="GREAT LEGO WALL"
  261. TITLE$(20)="THE FINAL LEVEL... FOR NOW!"
  262. '                   --- Hier beginnt ein neues Level!
  263. NEWLEVEL:
  264. Sprite Off 
  265. If LEVEL>LEVELS Then OUTRO : RESTART=1 : Goto FULLNEW
  266. BALLONS=0
  267. RAD=0
  268. GEWITTER=0
  269. For I=1 To 4 : VISIBLE(I)=0 : Next 
  270. If Prg State=1 Then REQUISITE(LEVEL)=0
  271. If REQUISITE(LEVEL)=0 Then Goto NOOBJECT
  272. If REQUISITE(LEVEL)=4 Then Goto THUNDER
  273. If REQUISITE(LEVEL)<>2 Then BALLONS=1 : Rem Sprites 2,3,4
  274. If REQUISITE(LEVEL)<>1 Then RAD=1
  275. Goto NOOBJECT : 
  276. THUNDER:
  277. GEWITTER=1
  278. NOOBJECT:
  279. Sprite Off 
  280. If JUMP=1 Then Ink 0 : Bar 0,0 To 320,256 : Sprite Off : Wait Vbl 
  281. Open In 1,"level"+Str$(LEVEL)+".lev"
  282. For I=0 To 200
  283.    Input #1,LEVEL(I)
  284.    Input #1,RE(I)
  285. Next 
  286. Close 1
  287. SET=(LEVEL-1)/5+1
  288. Load "kik"+Str$(SET)+".abk"
  289. Make Mask 
  290. Load "sonic.abk",1
  291. Get Sprite Palette 
  292. Colour 0,$0
  293. MASKOFF
  294. Load "kikmuzak.abk"
  295. Music 1
  296. JUMP=0
  297. X=1
  298. Ink 0
  299. Bar 0,0 To 320,256
  300. Ink 1,0
  301. LEV=LEVEL mod 5
  302. If LEV=0 Then LEV=5
  303. Text 70,70,"WORLD"+Str$(SET)+", LEVEL"+Str$(LEV)+":"
  304. Text 70,86,TITLE$(LEVEL)
  305. Repeat 
  306.    For I=1 To 8
  307.       Scroll 1
  308.       Wait Vbl 
  309.    Next 
  310.    Paste Bob 310,150,LEVEL(X)
  311.    X=X+1
  312.    If X>200 Then X=1
  313. Until Fire(1)
  314. Music Off 
  315. 'Ab hier wird das Startbild gerendert! 
  316. Ink 0,0
  317. Bar 0,0 To 320,256
  318. POS=10
  319. For I=POS-20 To POS+20
  320.    X=I*8+80
  321.    J=I
  322.    If J<0 Then J=J+201
  323.    Paste Bob X,150,LEVEL(J)
  324. Next 
  325. BIKES
  326. ' TIME ab 50, SCORE ab 200 
  327. Rem UPTIME[12.34]
  328. Paste Bob 20,20,55 : Rem   Score hat 7 Stellen
  329. Paste Bob 160,20,56
  330. Rem Paste Bob 232,20,57
  331. 'Los gehts 
  332. 'speed zwischen 6 und 1 (?)  
  333. Ink 0,0
  334. Bar 318,0 To 320,255
  335. SPEED#=0.05
  336. REALPOS#=10
  337. OLDPOS#=10
  338. UPSPEED#=0.0
  339. BRAKE=0
  340. JMP=0 : Rem Sounds...
  341. HIJMP=0
  342. PLOPP=0
  343. VOL=32
  344. GO=0
  345. SC=1
  346. H#=48
  347. NEX=1
  348. FLAG=1
  349. ANI=0
  350. MX#=0.15
  351. Rem Bob Update Off : Rem Weg damit ???????     
  352. Sprite 0,X Hard(146),Y Hard(195-H#),51
  353. Get Sprite Palette 
  354. For I=16 To 28 Step 4
  355.    Colour I+1,$FFF
  356.    Colour I+2,$888
  357.    Colour I+3,$600
  358. Next 
  359. Colour 23,$C00
  360. Colour 27,$990
  361. Colour 30,$33F
  362. If SONICMODE=0 Then Goto NOSONICPALETTE : Rem         S O N I C
  363. Colour 17,$FFF
  364. Colour 18,$66F
  365. Colour 19,$112
  366. NOSONICPALETTE:
  367. Sprite Off 
  368. UPSCORE
  369. IMPLOSION[146,195-H#]
  370. Timer=0
  371. Volume 20
  372. Repeat 
  373.    If BALLONS=0 Then Sprite Off 2 : Sprite Off 3 : Sprite Off 4 : Goto NOBALLONS : 
  374.    If Rnd(100)>50 Then INITMOVE=1 Else INITMOVE=-1
  375.    For I=1 To 3
  376.       If BRAKE=1 Then X#(I)=X#(I)-5 : Goto NONEW
  377.       If VISIBLE(I)=0 and Rnd(100)>99.4 Then VISIBLE(I)=1 : MOVE#(I)=INITMOVE : X#(I)=321 : Y#(I)=Rnd(50)+70
  378.       NONEW:
  379.       If VISIBLE(I)=1 Then X#(I)=X#(I)-(SPEED#*10+1) : If X#(I)<-16 Then VISIBLE(I)=0
  380.       Y#(I)=Y#(I)+MOVE#(I) : If Y#(I)>=120 or Y#(I)<=70 Then MOVE#(I)=MOVE#(I)*-1
  381.       If Y#(I)>120 Then Y#(I)=120
  382.       If Y#(I)<70 Then Y#(I)=70
  383.    Next 
  384.    If Sprite Col(0,2 To 4) Then VISIBLE(Col(-1)-1)=0 : PLOPP=60 : PUNKTE=PUNKTE+10 : LIMIT#=LIMIT#+1
  385.    If LIMIT#-Timer/50.0>99 Then LIMIT#=99+Timer
  386.    UPBALLONS
  387.    NOBALLONS:
  388.    If RAD=0 Then Goto NORAD
  389.    If Rnd(100)>50 Then INITMOVE=1 Else INITMOVE=-1
  390.    If BRAKE=1 Then X#(4)=X#(4)-5 : Goto NONEW2
  391.    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
  392.    NONEW2:
  393.    If VISIBLE(4)=1 Then X#(4)=X#(4)-(SPEED#*10+1) : If X#(4)<-20 Then VISIBLE(4)=0
  394.    Y#(4)=Y#(4)+MOVE#(4) : If Y#(4)>=120 or Y#(4)<=70 Then MOVE#(4)=-MOVE#(4)
  395.    If Y#(4)>120 Then Y#(4)=120
  396.    If Y#(4)<70 Then Y#(4)=70
  397.    GAP=GAP+1
  398.    If GAP>5 Then GAP=0 : PHASE=PHASE+1
  399.    If PHASE>2 Then PHASE=0
  400.    If Sprite Col(0,6 To 6) Then VISIBLE(4)=0 : Sprite Off 6 : STERBEN
  401.    If RESTART=1 Then Goto REKICK
  402.    If VISIBLE(4)=1 Then Sprite 6,X Hard(X#(4)),Y Hard(Y#(4)),70+PHASE
  403.    NORAD:
  404.    If LIMIT#-Timer/50.0>99 Then LIMIT#=99+Timer
  405.    If BRAKE<>1 Then Z=LIMIT#*50-Timer
  406.    ZEIT#=Z/50.0
  407.    If ZEIT#<=0 Then ZEIT#=0 : UPTIME[ZEIT#] : BUMM[146,195-H#] : SCHLEIFE
  408.    If RESTART=1 Then Goto REKICK
  409.    If FLAG=1 Then UPTIME[ZEIT#]
  410.    If FLAG=6 Then UPSCORE
  411.    FLAG=FLAG+1 : If FLAG>9 Then FLAG=1
  412.    If FLAG<>1 or BRAKE=1 Then Goto HERE
  413.    If Jright(1) Then SPEED#=SPEED#+0.02
  414.    If Jleft(1) Then SPEED#=SPEED#-0.02
  415.    If SPEED#<0.05 Then SPEED#=0.05
  416.    If SPEED#>MX# Then SPEED#=MX#
  417.    HERE:
  418.    If BRAKE=1 Then SPEED#=SPEED#-0.002
  419.    If SPEED#<0 Then SPEED#=0
  420.    If H#=HOEHE(LEVEL(POS))*8 and SPECIAL(LEVEL(POS))=1 Then STERBEN
  421.    If RESTART=1 Then Goto REKICK
  422.    If BRAKE=1 Then Goto NOJUMP
  423.    If Fire(1) and H#=HOEHE(LEVEL(POS))*8 Then UPSPEED#=25 : JMP=50
  424.    NOJUMP:
  425.    P1=POS-1 : If P1=-1 Then P1=200
  426.    P2=POS+1 : If P2=201 Then P2=0
  427.    If SPECIAL(LEVEL(POS))=3 and POS<10 Then BRAKE=1
  428.    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
  429.    H#=H#+UPSPEED#/20.0
  430.    UPSPEED#=UPSPEED#-0.9
  431.    If H#<=HOEHE(LEVEL(POS))*8 Then UPSPEED=0 : H#=HOEHE(LEVEL(POS))*8 : If HOEHE(LEVEL(P2))>HOEHE(LEVEL(POS)) Then STERBEN
  432.    If RESTART=1 Then Goto REKICK
  433.    YPS=195 : If SONICMODE=1 Then YPS=187
  434.    Sprite 0,X Hard(146),Y Hard(YPS-H#),MYOFS+ANI : Rem <--- Held! 
  435.    Wait Vbl 
  436.    Rem H#=HOEHE(LEVEL(POS)) 
  437.    Bob Clear 
  438.    REALPOS#=REALPOS#+SPEED#
  439.    If SPEED#<0.0005 Then SPEED=0
  440.    If SPEED#=0 Then Goto NOSOUND
  441.    If JMP=0 and HIJMP=0 Then Play 15+SPEED#*50,0 : Rem            <--- SOUND! 
  442.    If PLOPP<>0 Then PLOPP=PLOPP-3 : Play PLOPP,0
  443.    If PLOPP<35 Then PLOPP=0
  444.    If JMP>0 Then JMP=JMP+1 : Play JMP,0
  445.    If JMP>60 Then JMP=0
  446.    If HIJMP>0 Then HIJMP=HIJMP+2 : Play HIJMP,0
  447.    If HIJMP>60 Then HIJMP=0
  448.    NOSOUND:
  449.    If REALPOS#>200 Then REALPOS#=REALPOS#-200
  450.    If OLDPOS#>200 Then REALPOS#=REALPOS#-200
  451.    If SC<7 and REALPOS#-0.2>OLDPOS# Then OLDPOS#=OLDPOS#+0.2 : Scroll 2 : SC=SC+2
  452.    If SC<8 and REALPOS#-0.1>OLDPOS# Then OLDPOS#=OLDPOS#+0.1 : Scroll 1 : SC=SC+1
  453.    Bob Draw 
  454.    DR=POS+20 : If DR>200 Then DR=DR-200
  455.    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
  456.    If POS>=200 Then POS=POS-200 : REALPOS#=REALPOS#-200 : OLDPOS#=OLDPOS#-200
  457.    If SPEED#=0 Then SCORE
  458.    If JUMP=1 Then Sprite Off 
  459.    REKICK:
  460. Until Inkey$="q" or JUMP+RESTART=1
  461. Volume 63
  462. Ink 0
  463. Bar 0,0 To 320,256
  464. If JUMP=1 Then Goto NEWLEVEL
  465. RESTART=1
  466. If RESTART=1 Then Goto FULLNEW
  467. Erase 1
  468. Erase 3
  469. '                                   ENDE DES PROGRAMMS ! 
  470. Procedure IMPLOSION[XPOS,YPOS]
  471.  XX=XPOS
  472.  YY=YPOS
  473.  For I=150 To 0 Step -6
  474.   Bob 2,XX-I,YY-I,54
  475.   Bob 3,XX+I,YY-I,54
  476.   Bob 4,XX+I,YY+I,54
  477.   Bob 5,XX-I,YY+I,54
  478.   Bob 0,XX,YY+I,54
  479.   Bob 1,XX,YY-I,54
  480.   Bob 6,XX+I,YY,54
  481.   Bob 7,XX-I,YY,54
  482.   Wait Vbl 
  483.  Next 
  484.  Bob Off 
  485. End Proc
  486. Procedure BUMM[XPOS,YPOS]
  487.  Sprite Off 0
  488.  Sprite Off 1
  489.  XX=XPOS
  490.  YY=YPOS
  491.  Boom 
  492.  For I=0 To 150 Step 6
  493.   Bob 2,XX-I,YY-I,54
  494.   Bob 3,XX+I,YY-I,54
  495.   Bob 4,XX+I,YY+I,54
  496.   Bob 5,XX-I,YY+I,54
  497.   Bob 0,XX,YY+I,54
  498.   Bob 1,XX,YY-I,54
  499.   Bob 6,XX+I,YY,54
  500.   Bob 7,XX-I,YY,54
  501.   Bob Update On 
  502.   Wait Vbl 
  503.  Next 
  504.  Bob Off 
  505. End Proc
  506. Procedure STERBEN
  507.    Shared H#,RE(),LEVEL(),POS,REALPOS#,OLDPOS#,SPEED#,SC,UPSPEED#,LIVES,ZEIT#,LIMIT#,VISIBLE(),X#(),Y#(),PHASE
  508.    LIVES=LIVES-1 : If LIVES<0 Then LIVES=-1
  509.    BUMM[154,203-H#]
  510.    BIKES
  511.    If LIVES<0 Then SCHLEIFE : NEW=1
  512.    If NEW=1 Then Goto SKIP
  513.    If SC=1 Then Goto NO
  514.    Repeat 
  515.       If SC<8 Then Scroll 1 : Wait Vbl : SC=SC+1
  516.    Until SC>7
  517.    POS=POS+1
  518.    DR=POS+19
  519.    If DR>200 Then DR=DR-200
  520.    Paste Bob 310,150,LEVEL(DR)
  521.    NO:
  522.    Repeat 
  523.       For I=1 To 8
  524.          Scroll 1
  525.          For J=1 To 4
  526.             X#(J)=X#(J)-1
  527.          Next 
  528.          UPBALLONS
  529.          If VISIBLE(4)=1 Then Sprite 6,X Hard(X#(4)),Y Hard(Y#(4)),70+PHASE Else Sprite Off 6
  530.          Wait Vbl 
  531.       Next 
  532.       PHASE=PHASE+1
  533.       If PHASE>2 Then PHASE=0
  534.       If BRAKE<>1 Then Z=LIMIT#*50-Timer
  535.       ZEIT#=Z/50.0
  536.       UPTIME[ZEIT#]
  537.       Wait Vbl 
  538.       If ZEIT#<=0 Then BUMM[146,195-H#] : SCHLEIFE
  539.       DR=POS+20
  540.       If DR>200 Then DR=DR-200
  541.       Paste Bob 310,150,LEVEL(DR)
  542.       POS=POS+1
  543.       If POS=200 Then POS=0
  544.    Until RE(POS)<>0
  545.    H#=8*RE(POS)
  546.    If POS=199 Then POS=0 : H#=32
  547.    REALPOS#=POS
  548.    OLDPOS#=POS
  549.    H#=H#+24
  550.    IMPLOSION[154,203-H#]
  551.    UPSPEED#=0
  552.    SPEED#=0.05
  553.    SC=0
  554.    SKIP:
  555. End Proc
  556. Procedure BIKES
  557.    Ink 0
  558.    Bar 0,225 To 160,250
  559.    Shared LIVES
  560.    If LIVES=0 Then Goto NOLIVES
  561.    For I=0 To LIVES-1
  562.       Paste Bob I*25,225,53
  563.    Next 
  564.    NOLIVES:
  565. End Proc
  566. Procedure UPBALLONS
  567.    Shared X#(),Y#(),VISIBLE()
  568.    For J=1 To 3
  569.       If VISIBLE(J)=1 Then Sprite J+1,X Hard(X#(J)),Y Hard(Y#(J)),69 Else Sprite Off J+1
  570.    Next 
  571. End Proc
  572. Procedure SCORE
  573.    Shared LIVES,PUNKTE,ZEIT#,SET
  574.    Dim SOUND(4)
  575.    SOUND(0)=38
  576.    SOUND(1)=32
  577.    SOUND(2)=49
  578.    SOUND(3)=41
  579.    SOUND(4)=50
  580.    Ink 1,0
  581.    Set Font 1
  582.    Text 64,76,"BONUS FOR TIME LEFT"
  583.    Text 260,84,"X"+Str$(SET)
  584.    Text 64,92,"BIKES LEFT BONUS"
  585.    If LIVES<5 Then Text 64,108,"EXTRA BIKE AWARDED..." Else Text 64,108,"FIVE BIKES LEFT STILL..."
  586.    TLB=ZEIT#*10
  587.    Text 224,76,Str$(TLB)
  588.    BLB=LIVES*25
  589.    Text 224,92,Str$(BLB)
  590.    If LIVES<5 Then LIVES=LIVES+1 : BIKES
  591.    For I=6 To 1 Step -1
  592.       For J#=600 To 300 Step -(I*3)-5
  593.          Play J#/10.0,0
  594.          Wait Vbl 
  595.       Next 
  596.    Next 
  597.    SND=0
  598.    PPP=0
  599.    While TLB>=3
  600.       TLB=TLB-3
  601.       PUNKTE=PUNKTE+3*SET
  602.       Ink 0
  603.       Bar 224,68 To 256,76
  604.       Ink 1,0
  605.       Text 224,76,Str$(TLB)
  606.       PPP=PPP+1 : If PPP>9 Then PPP=0 : Wait Vbl : UPSCORE
  607.       Wait Vbl 
  608.       Play SOUND(SND),1
  609.       SND=SND-1 : If SND<0 Then SND=4
  610.    Wend 
  611.    PUNKTE=PUNKTE+TLB*SET : TLB=0
  612.    Ink 0
  613.    Bar 224,68 To 256,76
  614.    Ink 1,0
  615.    Text 224,76,Str$(0)
  616.    While BLB>=3
  617.       BLB=BLB-3
  618.       PUNKTE=PUNKTE+3*SET
  619.       Ink 0
  620.       Bar 224,84 To 256,92
  621.       Ink 1,0
  622.       Text 224,92,Str$(BLB)
  623.       PPP=PPP+1 : If PPP>9 Then PPP=0 : Wait Vbl : UPSCORE
  624.       Wait Vbl 
  625.       Play SOUND(SND),1
  626.       SND=SND-1 : If SND<0 Then SND=4
  627.    Wend 
  628.    PUNKTE=PUNKTE+BLB*SET : BLB=0
  629.    Ink 0
  630.    Bar 224,84 To 256,92
  631.    Ink 1,0
  632.    Text 224,92,Str$(BLB)
  633.    UPSCORE
  634.    Wait 100
  635.    LEVELNEXT
  636. End Proc
  637. Procedure LEVELNEXT
  638.    Shared LEVEL,JUMP,ZEIT#,LIMIT(),LIMIT#
  639.    LEVEL=LEVEL+1
  640.    JUMP=1
  641.    LIMIT#=LIMIT(LEVEL)+ZEIT#
  642.    If LIMIT#>99 Then LIMIT#=99
  643.    Sprite Off 
  644. End Proc
  645. Procedure SCHLEIFE
  646.    Shared RESTART,LIVES
  647.    UPSCORE
  648.    LIVES=0
  649.    BIKES
  650.    Ink 1,0
  651.    Sprite Off 
  652.    Text 120,100,"GAME OVER"
  653.    Wait 100
  654.    Fade 10
  655.    For I=1 To 4
  656.       For J=80 To 50 Step -2
  657.          Play J-(I*10),1
  658.       Next 
  659.    Next 
  660.    Wait 50
  661.    RESTART=1
  662.    Ink 0
  663.    Bar 0,0 To 320,256
  664. End Proc
  665. Procedure MASKOFF
  666.  For I=58 To 68
  667.   No Mask I
  668.  Next 
  669. End Proc
  670. Procedure UPTIME[TIME#]
  671.  S1=TIME#/10
  672.  TM=TIME#
  673.  S2=TM mod 10
  674.  TMP=100*(TIME#-TM)
  675.  S3=TMP/10
  676.  S4=TMP mod 10
  677.  If S1>0 Then Paste Bob 66,20,58+S1 Else Paste Bob 66,20,68
  678.  If S2>0 Then Paste Bob 74,20,58+S2 Else Paste Bob 74,20,68
  679.  Paste Bob 82,20,58
  680.  If S3>0 Then Paste Bob 90,20,58+S3 Else Paste Bob 90,20,68
  681.  If S4>0 Then Paste Bob 98,20,58+S4 Else Paste Bob 98,20,68
  682. End Proc
  683. Procedure UPSCORE
  684.  Shared PUNKTE,S()
  685. Rem  Ink 0 
  686. Rem  Bar 208,20 To 280,36  
  687.  S(1)=PUNKTE/1000000
  688.  S(2)=PUNKTE/100000-S(1)*10
  689.  S(3)=PUNKTE/10000-S(2)*10-S(1)*100
  690.  S(4)=PUNKTE/1000-S(3)*10-S(2)*100-S(1)*1000
  691.  S(5)=PUNKTE/100-S(4)*10-S(3)*100-S(2)*1000-S(1)*10000
  692.  S(6)=PUNKTE/10-S(5)*10-S(4)*100-S(3)*1000-S(2)*10000-S(1)*100000
  693.  S(7)=PUNKTE-S(6)*10-S(5)*100-S(4)*1000-S(3)*10000-S(2)*100000-S(1)*1000000
  694.  For I=1 To 7
  695.   If S(I)>0 Then Paste Bob 208+8*I,20,58+S(I) Else Paste Bob 208+8*I,20,68
  696.  Next 
  697. End Proc
  698. Procedure OUTRO
  699.    Screen Open 7,320,200,32,Lowres
  700.    Screen Open 6,320,256,32,Lowres
  701.    Screen To Front 6
  702.    Curs Off 
  703.    Flash Off 
  704.    Hide 
  705.    Sprite Off 
  706.    Ink 0,0
  707.    Bar 0,0 To 320,256
  708.    Load "landscape.abk"
  709.    Load "theend.abk"
  710.    Get Sprite Palette 
  711.    Screen 7
  712.    Get Sprite Palette 
  713.    Screen 6
  714.    Def Scroll 4,0,200 To 320,232,-2,0
  715.    Dim DAT(1000)
  716.    Open In 2,"outro.text"
  717.    LE=0
  718.    Repeat 
  719.       Input #2,DAT(LE)
  720.       LE=LE+1
  721.    Until Eof(2)
  722.    Close 2
  723.    Screen Open 5,320,185,32,Lowres
  724.    Flash Off 
  725.    Load Iff "theend1.abk"
  726.    X=0
  727.    Music 1
  728.    Repeat 
  729.       Screen 7
  730.       Ink 0
  731.       Bar 0,0 To 32,32
  732.       CHR=DAT(X)
  733.       X=X+1
  734.       If X>LE Then X=0
  735.       If CHR=99 Then CHR=0
  736.       If CHR<>0 Then Paste Bob 0,0,CHR
  737.       Screen 6
  738.       For I=1 To 16
  739.          Screen Copy 7,I*2-1,0,I*2+1,32 To 6,318,205
  740.          Scroll 4
  741.          Wait Vbl 
  742.       Next 
  743.       Rem Paste Bob 287,200,CHR
  744.    Until Mouse Click or Fire(1)
  745.    Music Off 
  746.    Screen Close 5
  747.    Screen Close 6
  748.    Screen Close 7
  749.    Erase 1
  750.    Erase 3
  751. End Proc
  752. Procedure HELP
  753.  Load Iff "kikhelpplus.iff"
  754.  Repeat 
  755.  Until Inkey$<>"" or Fire(1)
  756.  Load Iff "kikstartplus.iff"
  757. End Proc
  758. Procedure INFO
  759.  Load Iff "kikinfoplus.iff"
  760.  Repeat 
  761.  Until Inkey$<>"" or Fire(1)
  762.  Load Iff "kikstartplus.iff"
  763. End Proc
  764. Procedure SHOT
  765.  Load Iff "kikshotplus.iff"
  766.  Repeat 
  767.  Until Inkey$<>"" or Fire(1)
  768.  Load Iff "kikstartplus.iff"
  769. End Proc