home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 476-500 / apd494 / demonsbreach.bak / demonsbreach.amosSourceCode
AMOS Source Code  |  1989-04-03  |  25KB  |  1,001 lines

  1. Set Buffer 20
  2. Proc PRE
  3. Hide On 
  4. 'Load ":l2stuff.abk" 
  5. 'EDBLOKDATA
  6. Flash Off 
  7. Curs Off 
  8. Cls 0
  9. Load ":L3blox.ABK"
  10. Get Icon Palette 
  11. Flash 14,"(f00,1)(d00,1)(b00,1)(900,1)(700,1)(500,1)(300,1)(100,1)(300,1)(500,1)(700,1)(900,1)(b00,1)(d00,1)"
  12. Flash 15,"(110,1)(330,1)(550,1)(770,1)(990,1)(bb0,1)(dd0,1)(ff0,1)(dd0,1)(bb0,1)(990,1)(770,1)(550,1)(330,1)"
  13. Dim FIN(1)
  14. Dim SPL(2)
  15. Dim NAS(3)
  16. Dim NAM(6)
  17. Dim NAM$(6)
  18. Dim BLN(3)
  19. Global FIN(),PHZ,SCR,STP,PRORET,LAD,SPL(),NRG,SPL,ITEMP,NAS(),NCNT,NDPT
  20. Global NAM(),NAM$(),LEVEL,LIVES,INV,PUD,LFIN,SCORE
  21. Global BLN(),XOUT
  22. STP=1
  23. PHZ=1
  24. Double Buffer 
  25. Autoback 0
  26. Bob Update Off 
  27. Synchro Off 
  28. '  
  29. 'Load ":l3stuff.ABK" 
  30. '
  31. 'Proc EDT
  32. 'Proc EDT2 
  33. Do 
  34. Proc TITLE
  35. LEVEL=0
  36. ' spells known:
  37. SPL(0)=1
  38. SPL(1)=0
  39. SPL(2)=0
  40. LIVES=9
  41. SCORE=0
  42. '
  43. Do 
  44. Proc GAMEON
  45. If XOUT=1 Then Inc LEVEL Else Proc LOST : Exit 
  46. If LEVEL>2 Then Proc GWON : Exit 
  47. Loop 
  48. Loop 
  49. Procedure SKROL
  50. If PHZ=0 Then Pop Proc
  51. ST=STP*2
  52. If PHZ=1 Then ST=STP : PHZ=2
  53. If PHZ=3 Then ST=STP : PHZ=0
  54. Screen Copy 0,0,40,336,178 To 0,-ST,40
  55. Bob 0,X Bob(0)-STP,,
  56. If PHZ=0 Then Goto SKP1
  57. If NAS(0)>0 Then Bob 1,X Bob(1)-1,,
  58. If NAS(1)>0 Then Bob 2,X Bob(2)-1,,
  59. If NAS(2)>0 Then Bob 3,X Bob(3)-1,,
  60. If NAS(3)>0 Then Bob 4,X Bob(4)-1,,
  61. If BLN(0) Then Sprite 4,X Sprite(4)-1,,
  62. If BLN(1) Then Sprite 5,X Sprite(5)-1,,
  63. If BLN(2) Then Sprite 6,X Sprite(6)-1,,
  64. If BLN(3) Then Sprite 7,X Sprite(7)-1,,
  65. SKP1:
  66. Add FIN(SCR),ST
  67. BLK=FIN(SCR)/16
  68. For BK=Max(0,BLK-1) To BLK
  69. BKK=0
  70. For T=0 To 1
  71. P=Peek(Start(5)+(BK*2)+T+160)
  72. If P>0 Then BKK=1
  73. Paste Icon 320-FIN(SCR)+(BK*16),50+(T*64),P+1
  74. Next T
  75. If BKK=0 Then LFIN=1 : If PHZ=2 Then PHZ=3
  76. Next BK
  77. End Proc
  78. Procedure EDBLOKDATA
  79. For T=0 To 19
  80. Print "Block...";T+1
  81. Print "CD1:"
  82. Input A : Poke Start(5)+(T*8),A
  83. Input A : Poke Start(5)+(T*8)+1,A
  84. Print "CD2:"
  85. Input A : Poke Start(5)+(T*8)+2,A
  86. Input A : Poke Start(5)+(T*8)+3,A
  87. Print "Ladder:"
  88. Input A : Poke Start(5)+(T*8)+4,A
  89. Input A : Poke Start(5)+(T*8)+5,A
  90. Print "Death:"
  91. Input A : Poke Start(5)+(T*8)+6,A
  92. Input A : Poke Start(5)+(T*8)+7,A
  93. Next T
  94. Print "Done"
  95. End 
  96. End Proc
  97. Procedure DSCR[BK,AP,BP]
  98. For N=0 To 1
  99. If AP=0 and BP=19 Then Cls 0
  100. For X=AP To BP
  101. BX=X+BK
  102. If BX<0 or BX>500
  103. Ink 1 : Bar X*16,50 To X*16+15,178
  104. Else 
  105. For T=0 To 1
  106. P=Peek(Start(5)+(BX*2)+T+160)
  107. Paste Icon X*16,50+(T*64),P+1
  108. Next T
  109. End If 
  110. Next X
  111. Screen Swap : Wait Vbl 
  112. Next N
  113. End Proc
  114. Procedure EDT
  115. Autoback 1
  116. Show On 
  117. XP=0
  118. Clear Key 
  119. IS=0
  120. Proc DSCR[0,0,19]
  121. Do 
  122. I$=Upper$(Inkey$)
  123. Clear Key 
  124. If I$="Z" Then Add XP,-1,-5 To 505 : Proc DSCR[XP,0,19]
  125. If I$="X" Then Add XP,1,-5 To 505 : Proc DSCR[XP,0,19]
  126. If I$="A" Then Add IS,-1,0 To Length(2)-1
  127. If I$="S" Then Add IS,1,0 To Length(2)-1
  128. If Mouse Key<>0
  129. X=XP+(X Screen(X Mouse)/16)
  130. If X>-1 and X<500
  131. If Y Mouse<164
  132. Poke Start(5)+160+(X*2),IS
  133. Else 
  134. Poke Start(5)+160+(X*2)+1,IS
  135. End If 
  136. Proc DSCR[XP,X-XP,X-XP]
  137. End If 
  138. End If 
  139. Wait Vbl 
  140. Loop 
  141. End Proc
  142. Procedure GAMEON
  143. Load "l"+Str$(LEVEL+1)-" "+"stuff.ABK",5
  144. Load ":thewizz.ABK"
  145. Load ":thespells.ABK",1
  146. Load ":nast"+Str$(LEVEL+1)-" "+".ABK",1
  147. Load ":l"+Str$(LEVEL+1)-" "+"blox.ABK"
  148. Proc DSCR[0,0,19]
  149. BK=0
  150. LAD=0
  151. XOUT=0
  152. Bob 0,50,150,1
  153. Channel 0 To Bob 0
  154. A$="E:A1,(A,1);A:IR0=0JB;IJ1=4JC;IJ1=8JD;IJ1=1JH;IJ1=5JI;IJ1=9JJ;P;JA"
  155. A$=A$+";B:IR0=1JA;IJ1=5JM;IJ1=4JM;IJ1=21JM;IJ1=20JM;IJ1=9JN;IJ1=25JN;IJ1=24JN;IJ1=8JN;O:M0,2,1;JB"
  156. A$=A$+";C:A0,($8001,5)($8002,5);F:IR1>0JE;M-2,0,1;IJ1<>4JE;IR0=0JB;JF"
  157. A$=A$+";D:A0,(1,5)(2,5);G:IR2>0JE;M2,0,1;IJ1<>8JE;IR0=0JB;JG"
  158. 'A$=A$+";H:LR5=0;JK" 
  159. 'A$=A$+";I:A1,($8002,1);LR5=-1;JK" 
  160. 'A$=A$+";J:A1,(2,1);LR5=1;JK"
  161. A$=A$+";H:LR6=0;L:LR6=R6+1;M0,-2,1;IR6<13JL;JB"
  162. A$=A$+";I:A1,($8003,1);LR6=0;K:LR6=R6+1;IR1>0JL;M-2,-2,1;IR6<13JK;JB"
  163. A$=A$+";J:A1,(3,1);LR6=0;P:LR6=R6+1;IR2>0JL;M2,-2,1;IR6<13JP;JB"
  164. A$=A$+";M:A1,($8003,1);IR1>0JO;M-2,2,1;JB"
  165. A$=A$+";N:A1,(3,1);IR2>0JO;M2,2,1;JB"
  166. B$="A1,(4,1);G:A1,(A,1);A:P;IJ1=1JB;IJ1=2JC;IJ1=0JA;IJ1>15JA;F:LR9=1;M0,0,999"
  167. B$=B$+";B:A0,(4,5)(5,5);D:M0,-2,1;IR0=0JF;IJ1=1JD;JG"
  168. B$=B$+";C:A0,(4,5)(5,5);E:M0,2,1;IR0=0JF;IJ1=2JE;JG"
  169. Amal 0,A$
  170. Amal On 0
  171. FIN(0)=320
  172. FIN(1)=320
  173. PHZ=0
  174. NRG=0
  175. SPL=0
  176. INV=0
  177. PUD=2
  178. LFIN=0
  179. For T=0 To 3
  180. NAS(T)=0
  181. BLN(T)=0
  182. Next T
  183. NCNT=Deek(Start(5)+500)
  184. NDPT=500
  185. For T=0 To 1
  186. Proc SPLDO
  187. Screen Swap : Wait Vbl 
  188. Next T
  189. For T=0 To 7
  190. Sprite T,0,0,61
  191. Next T
  192. Music 1
  193. Proc AMGET
  194. Make Mask 
  195. Randomize Timer
  196. Do 
  197. Bob Clear 
  198. If Key State(25)
  199. Wait 5
  200. Clear Key 
  201. Wait Key 
  202. Wait 5
  203. End If 
  204. If PUD>0 Then Proc SPLDO : Dec PUD
  205. Synchro 
  206. If LFIN=1 and PHZ=0
  207. If NAS(0)=0 and NAS(1)=0 and NAS(2)=0 and NAS(3)=0
  208. If LEVEL<2
  209. Amal Off 
  210. Channel 0 To Bob 0
  211. Amal 0,"A0,(9,2)(10,2);M0,-200,200"
  212. Amal On 0
  213. For T=0 To 199
  214. Synchro 
  215. Bob Draw 
  216. Screen Swap : Wait Vbl 
  217. Bob Clear 
  218. Next T
  219. Else 
  220. Amal Off 
  221. Channel 0 To Bob 0
  222. Amal 0,"A0,(11,1)(12,1)"
  223. Bob Update On 
  224. Synchro On 
  225. Bob 5,X Bob(0),Y Bob(0),112
  226. Channel 10 To Bob 5
  227. Amal 10,"M247-X,140-Y,100;A1,(110,10)(111,10)"
  228. Load ":wonmus.ABK"
  229. Music 1
  230. Amal On 10
  231. Amal On 0
  232. Wait 100
  233. For T=0 To 3
  234. Bob T+1,247,140,112
  235. Channel T+5 To Bob T+1
  236. Amal T+5,"FR7=0T8;LX=0;LY=Z(255);LA=Z(31)+71;M247-X,140-Y,50;NR7"
  237. Amal On T+5
  238. Wait 10
  239. Next T
  240. Wait 500
  241. Amal Off 
  242. Channel 0 To Bob 0
  243. Amal 0,A$
  244. Amal On 0
  245. Amreg(0,0)=1
  246. Bob Off 5
  247. Bob Off 4
  248. Bob Off 2
  249. Bob Off 1
  250. Bob Off 3
  251. Wait 5
  252. Synchro Off 
  253. Bob Update Off 
  254. While Fire(1)=0
  255. X=Rnd(48)+223
  256. Y=Rnd(30)+110
  257. Screen Copy 0,X,Y,X+1,200 To 0,X,Y+1
  258. Screen Swap 
  259. Screen Copy Physic(0) To Logic(0)
  260. Wend 
  261. End If 
  262. XOUT=1
  263. End If 
  264. End If 
  265. If LAD=0
  266. Proc CD[X Bob(0),Y Bob(0)]
  267. Amreg(0,0)=PRORET
  268. If I Bob(0)<0
  269. Proc CD[X Bob(0)-7,Y Bob(0)-2]
  270. Amreg(0,1)=PRORET
  271. Amreg(0,2)=0
  272. Else 
  273. Proc CD[X Bob(0)+7,Y Bob(0)-2]
  274. Amreg(0,2)=PRORET
  275. Amreg(0,1)=0
  276. End If 
  277. Proc LCD[X Bob(0),Y Bob(0)-2]
  278. If PRORET>0
  279. If Joy(1)=1 or Joy(1)=2
  280. If INV>-1
  281. LAD=1
  282. Amal 0,B$ : Amal On 0
  283. Amreg(0,9)=0
  284. End If 
  285. End If 
  286. End If 
  287. End If 
  288. If LAD=1 and INV>-1
  289. Proc LCD[X Bob(0),Y Bob(0)-2]
  290. Amreg(0,0)=PRORET
  291. If Amreg(0,9)=1
  292. Amal 0,A$
  293. Amal On 0
  294. LAD=0
  295. End If 
  296. End If 
  297. If Fire(1) and INV>-1 Then Proc ZAPP Else If NRG>0 Then Proc ZUP
  298. If SPL>0 Then Dec SPL
  299. If PHZ=0 and X Bob(0)>200 and LFIN=0 Then PHZ=1
  300. If PHZ=2 and X Bob(0)<200 Then PHZ=3
  301. If X Bob(0)<0 Then Bob 0,0,,
  302. If X Bob(0)>319 Then Bob 0,319,,
  303. Proc NASAC
  304. Proc NASTYCD
  305. Proc SPELLCD
  306. If INV=0 Then Proc WIZCD
  307. If INV>0 Then Dec INV
  308. If INV<0
  309. If Amreg(0,9)=1
  310. If LAD=0
  311. Amal 0,A$
  312. Else 
  313. Amal 0,B$
  314. Amreg(0,9)=0
  315. End If 
  316. Proc CD[X Bob(0),Y Bob(0)]
  317. Amreg(0,0)=PRORET
  318. Amal On 0
  319. Bob 0,,,1
  320. INV=50
  321. Dec LIVES
  322. If LIVES<0
  323. XOUT=2
  324. End If 
  325. R=Rnd(2)
  326. SPL(R)=Max(0,SPL(R)-1)
  327. If R=0
  328. SPL(0)=Max(1,SPL(0))
  329. End If 
  330. PUD=2
  331. End If 
  332. End If 
  333. Proc NZAP
  334. Amreg(23)=X Bob(0)
  335. Amreg(24)=Y Bob(0)
  336. Wait Vbl 
  337. Proc SKROL
  338. If XOUT>0
  339. Autoback 2
  340. Bob Update On 
  341. Amal Off 
  342. Bob Off 
  343. Sprite Off 
  344. Wait 5
  345. Cls 0
  346. Bob Update Off 
  347. Autoback 0
  348. Exit 
  349. End If 
  350. Bob Draw 
  351. Screen Swap : Wait Vbl 
  352. SCR=1-SCR
  353. Loop 
  354. End Proc
  355. Procedure CD[X,Y]
  356. PRORET=0
  357. BLK=(FIN(SCR)+X-320)/16
  358. LEV=0
  359. If Y>114 Then LEV=1
  360. If LEV<0 or LEV>1 Then Pop Proc
  361. If BLK<0 or BLK>499 Then Pop Proc
  362. YP=Y-50-(LEV*64)
  363. P=Peek(Start(5)+160+(BLK*2)+LEV)
  364. For T=0 To 1
  365. Y1=Peek(Start(5)+(P*8)+(T*2))
  366. Y2=Peek(Start(5)+(P*8)+(T*2)+1)
  367. If Y1>0 or Y2>0
  368. If YP>Y1 and YP<Y2
  369. PRORET=1 : Exit 
  370. Exit 
  371. End If 
  372. End If 
  373. Next T
  374. End Proc
  375. Procedure LCD[X,Y]
  376. PRORET=0
  377. BLK=(FIN(SCR)+X-320)/16
  378. LEV=0
  379. If Y>114 Then LEV=1
  380. If LEV<0 or LEV>1 Then Pop Proc
  381. If BLK<0 or BLK>499 Then Pop Proc
  382. YP=Y-50-(LEV*64)
  383. P=Peek(Start(5)+160+(BLK*2)+LEV)
  384. Y1=Peek(Start(5)+(P*8)+4)
  385. Y2=Peek(Start(5)+(P*8)+5)
  386. If Y1>0 or Y2>0
  387. If YP>Y1 and YP<Y2
  388. PRORET=1
  389. End If 
  390. End If 
  391. End Proc
  392. Procedure ZAPP
  393. If NRG=0 Then ITEMP=I Bob(0)
  394. Inc NRG
  395. I=7
  396. If NRG>30 Then I=9
  397. If NRG>60 Then I=11
  398. If ITEMP<0 Then I=Hrev(I)
  399. Bob 0,,,I+SCR
  400. End Proc
  401. Procedure ZUP
  402. N=0
  403. If NRG>30 Then N=1
  404. If NRG>60 Then N=2
  405. SN=SPL(N)+(N*3)
  406. NRG=0
  407. Bob 0,,,ITEMP
  408. If SPL(N)=0 Then Pop Proc
  409. If SPL>0 Then Pop Proc
  410. FF=0
  411. If ITEMP<0 Then FF=1000
  412. Restore 1000+SN+FF
  413. Read DAMN
  414. Read SPL
  415. Read A,B,C
  416. Colour 17,A
  417. Colour 18,B
  418. Colour 19,C
  419. Colour 21,A
  420. Colour 22,B
  421. Colour 23,C
  422. For T=0 To 2
  423. Read A$
  424. If A$<>""
  425. For N=0 To 3
  426. If X Sprite(N)<30
  427. NS=N
  428. Sprite NS,X Hard(X Bob(0)),Y Hard(Y Bob(0))-10,70
  429. Channel NS+1 To Sprite NS
  430. Amal NS+1,A$
  431. Amal On NS+1
  432. Amreg(NS+1,9)=DAMN
  433. Exit 
  434. End If 
  435. Next N
  436. End If 
  437. Next T
  438. 1001 Data 1,25,$FFF,$FF0,$990,"LA=32;M100,0,25;LX=0","",""
  439. 2001 Data 1,25,$FFF,$FF0,$990,"LA=32;M-100,0,25;LX=0","",""
  440. 1002 Data 1,20,$FF0,$F80,$F00,"A0,(33,1)(34,1);M160,0,25;LX=0","",""
  441. 2002 Data 1,20,$FF0,$F80,$F00,"A0,(35,1)(36,1);M-160,0,25;LX=0","",""
  442. 1003 Data 1,10,$FFF,$88F,$F,"A0,(37,1)(38,1);M250,0,25;LX=0","",""
  443. 2003 Data 1,10,$FFF,$88F,$F,"A0,(37,1)(38,1);M-250,0,25;LX=0","",""
  444. 1004 Data 2,42,$8F8,$F0,$80,"LA=39;M-300,0,40;LX=0","LA=40;M300,0,40;LX=0",""
  445. 2004 Data 2,42,$8F8,$F0,$80,"LA=39;M-300,0,40;LX=0","LA=40;M300,0,40;LX=0",""
  446. 1005 Data 3,80,$FF0,$F80,$F00
  447. Data "A0,(42,2)(41,2);M30,30,20;M30,-30,20;M30,30,20;M30,-30,20;LX=0"
  448. Data "A0,(42,2)(41,2);M30,-30,20;M-30,-30,20;M30,-30,20;M-30,-30,20;LX=0"
  449. Data "A0,(42,2)(41,2);M-30,30,20;M-30,-30,20;M-30,30,20;M-30,-30,20;LX=0"
  450. 2005 Data 3,80,$FF0,$F80,$F00
  451. Data "A0,(42,2)(41,2);M30,30,20;M30,-30,20;M30,30,20;M30,-30,20;LX=0"
  452. Data "A0,(42,2)(41,2);M30,-30,20;M-30,-30,20;M30,-30,20;M-30,-30,20;LX=0"
  453. Data "A0,(42,2)(41,2);M-30,30,20;M-30,-30,20;M-30,30,20;M-30,-30,20;LX=0"
  454. 1006 Data 3,30,$F8F,$F0F,$808
  455. Data "LA=43;M50,-30,10;LA=44;M120,0,10;LA=45;M150,150,30;LX=0"
  456. Data "LA=43;M50,-30,10;LA=44;M40,0,10;LA=45;M150,150,30;LX=0"
  457. Data "LA=43;M50,-30,10;LA=44;M80,0,10;LA=45;M150,150,30;LX=0"
  458. 2006 Data 3,30,$F8F,$F0F,$808
  459. Data "LA=46;M-50,-30,10;LA=47;M-120,0,10;LA=48;M-150,150,30;LX=0"
  460. Data "LA=46;M-50,-30,10;LA=47;M-40,0,10;LA=48;M-150,150,30;LX=0"
  461. Data "LA=46;M-50,-30,10;LA=47;M-80,0,10;LA=48;M-150,150,30;LX=0"
  462. 1007 Data 3,50,$FF0,$F80,$F00,"A0,(49,3)(50,3);M300,0,100,LX=0","",""
  463. 2007 Data 3,50,$FF0,$F80,$F00,"A0,(51,3)(52,3);M-300,0,100,LX=0","",""
  464. 1008 Data 5,50,$8F8,$F0,$80,"LA=53;M300,0,200,LX=0","",""
  465. 2008 Data 5,50,$8F8,$F0,$80,"LA=54;M-300,0,200,LX=0","",""
  466. 1009 Data 4,30,$FFF,$88F,$F
  467. Data "LA=56;M80,-50,20;LA=55;M80,0,20;LA=57;M80,50,20;LX=0"
  468. Data "LA=55;M240,0,60;LX=0"
  469. Data "LA=57;M80,50,20;LA=55;M80,0,20;LA=56;M80,-50,20;LX=0"
  470. 2009 Data 4,30,$FFF,$88F,$F
  471. Data "LA=59;M-80,-50,20;LA=58;M-80,0,20;LA=60;M-80,50,20;LX=0"
  472. Data "LA=58;M-240,0,60;LX=0"
  473. Data "LA=60;M-80,50,20;LA=58;M-80,0,20;LA=59;M-80,-50,20;LX=0"
  474. End Proc
  475. Procedure SPLDO
  476. For T=0 To 2
  477. If SPL(T)=0
  478. Paste Bob(T+1)*16,180,22
  479. Else 
  480. Paste Bob(T+1)*16,180,22+SPL(T)+(T*3)
  481. End If 
  482. Next T
  483. Pen 1 : Paper 0
  484. Locate 15,23
  485. Print "Lives:";LIVES;"  "
  486. Pen 7 : Paper 0
  487. Locate 25,23
  488. Print "Score:";SCORE;"  "
  489. End Proc
  490. Procedure EDT2
  491. Show On 
  492. '500 - 3999 :attackwaves 
  493. 'Deeked;        Delay,     type,     X,     Y    
  494. 'Delay is currently in Pixels(2 pts for a full scroll) 
  495. Bob 0,100,20,1
  496. DPT=500
  497. FIN(0)=320
  498. FIN(1)=320
  499. PHZ=0
  500. Proc DSCR[0,0,19]
  501. DEL=0
  502. NTP=1
  503. Do 
  504. I$=Upper$(Inkey$)
  505. Clear Key 
  506. If I$="A" Then Inc NTP : Pen 1 : Paper 0 : Screen Swap : Locate 0,0 : Print NTP;"  " : Screen Swap : Locate 0,0 : Print NTP;"  "
  507. If I$="D" Then Dec NTP : Pen 1 : Paper 0 : Screen Swap : Locate 0,0 : Print NTP;"  " : Screen Swap : Locate 0,0 : Print NTP;"  "
  508. If PHZ=0 and(I$="S") Then PHZ=1
  509. If PHZ=2 and(I$<>"S") Then PHZ=3
  510. If PHZ=1 Then Inc DEL
  511. If PHZ=2 Then DEL=DEL+2
  512. Proc SKROL
  513. If PHZ=0 and Mouse Click<>0
  514. Bell 1
  515. XP=X Screen(X Mouse)
  516. YP=Y Screen(Y Mouse)
  517. Doke Start(5)+DPT,DEL
  518. DEL=0
  519. Doke Start(5)+DPT+2,NTP
  520. Doke Start(5)+DPT+4,XP
  521. Doke Start(5)+DPT+6,YP
  522. DPT=DPT+8
  523. Ink 1
  524. Draw XP+5,YP To XP-5,YP
  525. Draw XP,YP+5 To XP,YP-5
  526. 'Locate Max(0,Min(39,X Text(XP)-1)),Y Text(YP)-1 
  527. 'Pen 1 : Paper 0 
  528. 'Print NTP 
  529. Screen Swap 
  530. Screen Copy Physic(0) To Logic(0)
  531. End If 
  532. If DPT>3500 Then Print "Warning,Low Memory" : Bell 
  533. If DPT>3999 Then End 
  534. SCR=1-SCR
  535. Screen Swap 
  536. Wait Vbl 
  537. Loop 
  538. End Proc
  539. Procedure NASAC
  540. If NDPT>3996 Then Pop Proc
  541. If PHZ=1 Then Dec NCNT
  542. If PHZ=2 Then NCNT=NCNT-2
  543. If NCNT<1
  544. NT=Deek(Start(5)+NDPT+2)
  545. NX=Deek(Start(5)+NDPT+4)
  546. NY=Deek(Start(5)+NDPT+6)
  547. '
  548. If NT>0
  549. Proc MKNME[NX,NY,NT]
  550. End If 
  551. '
  552. NDPT=NDPT+8
  553. NCNT=NCNT+Deek(Start(5)+NDPT)
  554. End If 
  555. End Proc
  556. Procedure MKNME[X,Y,N]
  557. 'On Error Goto ERR 
  558. For T=0 To 3
  559. If NAS(T)=0
  560. Bob T+1,X,Y,NAM(N-1)
  561. Channel T+5 To Bob T+1
  562. Amal T+5,NAM$(N-1)
  563. Amal On T+5
  564. NAS(T)=N
  565. BLN(T)=0
  566. Exit 
  567. End If 
  568. Next T
  569. Pop Proc
  570. ERR:
  571. Locate 0,0
  572. Print "Error"
  573. Print "type ";N
  574. Print "BOB";T+1
  575. Print "at ";X;",";Y
  576. Print "image ";NAM(N-1)
  577. End 
  578. Resume Next 
  579. End Proc
  580. Procedure AMGET
  581. Restore 3000+LEVEL
  582. For T=0 To 6
  583. Read NAM(T)
  584. A$=""
  585. For S=0 To 7
  586. Read B$
  587. A$=A$+B$
  588. Next S
  589. NAM$(T)=A$
  590. Next T
  591. '
  592. ' R0=ground
  593. ' R1 & 2 = ladders 
  594. ' R9 = hpts
  595. ' R8 = bullpath  
  596. '
  597. 3000 Data 71,"LR9=0;A1,(72,2)(73,2)(74,2);M0,0,6;A0,(75,5)(76,5)","","","","","","",""
  598. Data 88,"A1,(88,2)(87,3)(86,3)(85,3)(84,3)(83,3);M0,0,20;LR9=1;A:IR0=0JB;IX>RXJC;IX<RXJD;IR9<1JM;P;JA"
  599. Data ";B:A1,(A,1);E:M0,1,1;IR0=1JA;JB"
  600. Data ";C:A0,(80,2)(81,2)(82,2)(81,2);F:M-1,0,1;IR9<1JM;IR1=1JH;IR0=0JB;IZ(63)=1JA;JF"
  601. Data ";D:A0,(77,2)(78,2)(79,2)(78,2);G:M1,0,1;IR9<1JM;IR1=1JH;IR0=0JB;IZ(63)=0JA;JG"
  602. Data ";H:IRY-Y>10JI;IRY-Y<-10JJ;JA"
  603. Data ";I:A0,(89,2)(90,2);K:M0,1,1;IR9<1JM;IR2=0JA;JK"
  604. Data ";J:A0,(89,2)(90,2);L:M0,-1,1;IR9<1JM;IR2=0JA;JL"
  605. Data ";M:A1,(83,2)(84,2)(85,2)(86,2)(87,2)(88,2);M0,0,20;LX=-50"
  606. Data 91,"LR9=3;A:IR0=0JB;IX>RXJC;IX<RXJD;IR9<1JM;P;JA"
  607. Data ";B:A1,(A,1);E:M0,1,1;IR0=1JA;JB"
  608. Data ";C:A0,(91,2)(92,2)(91,2)(93,2);F:M-1,0,2;IR9<1JM;IR1=1JH;IR0=0JB;IZ(63)=1JA;JF"
  609. Data ";D:A0,(94,2)(95,2)(94,2)(96,2);G:M1,0,2;IR9<1JM;IR1=1JH;IR0=0JB;IZ(63)=0JA;JG"
  610. Data ";H:IRY-Y>10JI;IRY-Y<-10JJ;JA"
  611. Data ";I:A0,(99,2)(100,2);K:M0,1,2;IR9<1JM;IR2=0JA;JK"
  612. Data ";J:A0,(99,2)(100,2);L:M0,-1,2;IR9<1JM;IR2=0JA;JL"
  613. Data ";M:A1,(99,2)(97,2)(98,2);M0,0,6;LX=-50"
  614. Data 88,"A1,(88,2)(87,2)(86,2)(84,2)(84,2)(83,2);M0,0,20;LR9=1"
  615. Data ";A:A1,(101,2)(102,2)(103,2);M0,0,4;LR8=3;M0,0,6;A1,(104,2)(105,2)(106,2)(83,2);M0,0,20;IR9>0JA"
  616. Data ";A1,(83,2)(84,2)(85,2)(86,2)(87,2)(88,2);M0,0,20;LX=-50","","","","",""
  617. Data 107,"LR9=1;A:A1,(113,1);M0,0,5;IR0=0JB;IX>RXJC;IX<RXJD;IR9<1JM;JA"
  618. Data ";B:A1,(A,1);E:M0,1,1;IR0=1JA;JB"
  619. Data ";C:A0,(107,1)(108,1)(109,1)(108,1);F:M-2,0,1;IR9<1JM;IR0=0JB;IZ(63)=1JA;JF"
  620. Data ";D:A0,(110,1)(111,1)(112,1)(111,1);G:M2,0,1;IR9<1JM;IR0=0JB;IZ(63)=1JA;JG"
  621. Data ";M:A1,(113,2)(114,2)(115,2);M0,0,10;LX=-50","","",""
  622. Data 116,"LR9=1;LR5=0;A:IR9<1JF;M-1,0,1;IZ(63)=1JB;LR5=R5+1;IR5<200JA"
  623. Data "LR5=0;LA=117;D:IR9<1JF;M1,0,1;IZ(63)=1JC;LR5=R5+1;IR5<200JD;LR5=0;LA=116;JA"
  624. Data ";B:A0,(118,1)(119,1);M-10,0,10;LR8=1;A1,(116,1);JA"
  625. Data ";C:A0,(120,1)(121,1);M10,0,10;LR8=2;A1,(117,1);JD"
  626. Data ";F:M0,-20,10;M0,-10,10;M0,-5,10;M0,5,10;M0,10,10;M0,20,10;M0,100,25;LX=-50","","",""
  627. Data 122,"LR9=20;A:A1,(122,1);M0,0,50;A0,(123,1)(124,1);M0,0,10;LR8=4;IR9>0JA"
  628. Data ";A1,(125,2)(126,2)(127,2)(128,2)(129,2)(130,2);M0,0,20;M0,200,200;LX=-50","","","","","",""
  629. '
  630. '
  631. '
  632. 3001 Data 71,"LR9=2;A:A1,(71,2)(72,2)(73,2)(71,2);M0,0,6;LR8=5;M0,0,50;IR9<1JC;IRX>XJB;JA"
  633. Data "B:A1,(74,2)(75,2)(76,2)(74,2);M0,0,6;LR8=6;M0,0,50;IR9<1JC;IRX<XJA;JB;C:A1,(17,1);M0,0,5;LX=-50","","","","","",""
  634. Data 91,"A1,(91,2)(92,3)(93,3);M0,0,20;LR9=2;A:IR0=0JB;IX>RXJC;IX<RXJD;IR9<1JM;P;JA"
  635. Data ";B:A1,(A,1);E:M0,1,1;IR0=1JA;JB"
  636. Data ";C:A0,(77,2)(78,2)(77,2)(79,2);F:M-1,0,1;IR9<1JM;IR1=1JH;IR0=0JB;IZ(63)=2JX;IZ(63)=1JA;JF"
  637. Data ";D:A0,(80,2)(81,2)(80,2)(82,2);G:M1,0,1;IR9<1JM;IR1=1JH;IR0=0JB;IZ(63)=2JY;IZ(63)=0JA;JG"
  638. Data ";H:IRY-Y>10JI;IRY-Y<-10JJ;JA"
  639. Data ";I:A0,(86,2)(85,2);K:M0,1,1;IR9<1JM;IR2=0JA;JK;X:LR8=7;A1,(83,1);M0,0,25;JA"
  640. Data ";J:A0,(86,2)(85,2);L:M0,-1,1;IR9<1JM;IR2=0JA;JL;Y:LR8=8;A1,(84,1);M0,0,25;JA"
  641. Data ";M:A1,(17,1);M0,0,5;LX=-50"
  642. Data 87,"LR9=1;A:IR0=0JB;IX>RXJC;IX<RXJD;IR9<1JM;P;JA"
  643. Data ";B:A1,(A,1);E:M0,1,1;IR0=1JA;JB"
  644. Data ";N:A0,(87,2)(88,2);O:M-1,0,1;IR9<1JM;JO"
  645. Data ";C:A0,(87,2)(88,2);F:M-1,0,1;IR9<1JM;IR0=0JB;IX=RXJH;LR4=X+1;IR4=RXJH;IZ(31)=1JA;JF"
  646. Data ";D:A0,(87,2)(88,2);G:M1,0,1;IR9<1JM;IR0=0JB;IX=RXJH;LR4=X+1;IR4=RXJH;IZ(31)=0JA;JG"
  647. Data ";H:A1,(89,3)(90,3);M0,0,6;LR8=9;M0,0,50;JN"
  648. Data ";M:M0,-20,10;M0,-10,10;M0,-5,10;M0,5,10;M0,10,10;M0,20,10;M0,100,25;LX=-50",""
  649. Data 94,"LR9=1;A0,(94,2)(95,2);A:IR0=0JB;IR9<1JM;P;JC"
  650. Data ";B:E:M0,1,1;IR0=1JA;JB"
  651. Data ";C:F:M-2,0,1;IR9<1JM;IR0=0JB;JF"
  652. Data ";M:LX=-50","","","",""
  653. Data 96,"LR9=4;A:A1,(96,1);M0,0,25;A1,(97,2)(96,1);LR8=10;M0,0,25;IR9>0JA;M0,200,25;LX=-50","","","","","","",""
  654. Data 107,"A1,(107,2)(106,3)(105,3)(101,3)(100,3);M0,0,20;LR9=1"
  655. Data "A:IX>RXJC;IX<RXJD;IR9<1JM;P;JA"
  656. Data ";C:A1,(98,1);F:M-2,0,1;IR9<1JM;IZ(63)=1JH;JF"
  657. Data ";D:A1,(99,1);G:M2,0,1;IR9<1JM;IZ(63)=0JH;JG"
  658. Data ";M:A1,(100,3)(101,3)(105,3)(106,3)(107,3);M0,0,20;LX=-50"
  659. Data ";H:A1,(100,3)(101,3)(102,3)(103,3)(104,6)(103,3)(102,3)(101,3)(100,3);LR6=R9;LR9=0;M0,0,15;LX=RX+Z(63)-32;LY=RY;M0,0,35;LR9=R6;JA"
  660. Data "",""
  661. Data 108,"LR9=30;A:A1,(108,1);M0,0,5;A0,(109,1)(110,1);M0,0,10;LR8=11;A0,(111,1)(112,1);M0,-100,50;MRX-X,100,50;IR9>0JA"
  662. Data ";A1,(113,10)(114,10)(115,10);LR5=0;B:M-2,0,1;M2,0,1;LR5=R5+1;IR5<16JB;LX=-50"
  663. Data "","","","","",""
  664. '
  665. '
  666. '
  667. 3002 Data 71,"LR9=1;A:A0,(71,2)(72,2);M-100,RY-Y-16,80;IR9<1JM;M-100,0,80;IR9<1JM;A0,(73,2)(74,2);M100,RY-Y-5,80;IR9<1JN;M100,0,80;IR9<1JN;JA"
  668. Data ";M:A1,(A,1);M-200,200,50;LX=-50"
  669. Data ";N:A1,(A,1);M200,200,50;LX=-50","","","","",""
  670. Data 78,"A1,(78,2)(77,3)(76,1);M0,0,12;A0,(75,2)(76,2);LR9=3;IRX>XJA","","","","",""
  671. Data ";B:M-2,0,1;IR9>0JB;A1,(76,2)(77,2)(78,2);M0,0,6;LX=-50"
  672. Data ";A:M2,0,1;IX>318JM;IR9>0JA;M:A1,(76,2)(77,2)(78,2);M0,0,6;LX=-50"
  673. Data 79,"LR9=4;A:IR0=0JB;IX>RXJC;IX<RXJD;IR9<1JM;P;JA"
  674. Data ";B:A1,(A,1);E:M0,1,1;IR0=1JA;JB"
  675. Data ";C:A0,(79,2)(80,2)(79,2)(81,2);F:M-1,0,1;IR9<1JM;IR0=0JB;IZ(63)=2JI;IZ(63)=1JA;JF"
  676. Data ";D:A0,(82,2)(83,2)(82,2)(84,2);G:M1,0,1;IR9<1JM;IR0=0JB;IZ(63)=2JJ;IZ(63)=0JA;JG"
  677. Data ";M:A1,(97,2)(96,2)(95,2);M0,0,10;LX=-50",""
  678. Data ";I:A1,(86,1);M-30,0,6;JA"
  679. Data ";J:A1,(85,1);M30,0,6;JA"
  680. Data 87,"LR9=1;A0,(87,1)(89,1)(88,1)(90,1);A:IR0=0JB;M-1,0,1;IR9<1JM;IZ(31)=1JC;JA"
  681. Data ";B:M0,1,1;IR0>0JA;JB;C:LR8=Z(7)+1;JA","","","",""
  682. Data ";M:A1,(97,2)(96,2)(95,2);M0,0,10;LX=-50",""
  683. Data 91,"M0,-50,25;A1,(91,2)(92,2)(93,2);M0,0,6;LR9=20;A0,(93,4)(94,4)"
  684. Data ";A:IR9<1JM;M4,0,1;IZ(63)=1JC;IZ(63)=2JD;IX=RXJC;IX<300JA"
  685. Data ";B:IR9<1JM;M-4,0,1;IZ(63)=1JE;IZ(63)=2JF;IX=RXJE;IX>20JB;JA"
  686. Data "C:M0,50,50;LR8=11;M0,-50,50;JA;D:LR8=12;JA"
  687. Data "E:M0,50,50;LR8=11;M0,-50,50;JB;F:LR8=12;JB"
  688. Data ";M:M0,-20,10;M0,-10,10;M0,-5,10;M0,5,10;M0,10,10;M0,20,10;M0,100,25;LX=-50","",""
  689. Data 95,"A1,(95,2)(96,3)(97,3)(98,3);M0,0,15;LR9=1;A:IR0=0JB;IX>RXJC;IX<RXJD;IR9<1JM;P;JA"
  690. Data ";B:A1,(A,1);E:M0,1,1;IR0=1JA;JB"
  691. Data ";C:A0,(99,2)(100,2);F:M-2,0,1;IR9<1JM;IR0=0JB;IZ(63)=1JA;JF"
  692. Data ";D:A0,(101,2)(102,2);G:M2,0,1;IR9<1JM;IR0=0JB;IZ(63)=0JA;JG"
  693. Data ";M:A1,(98,2)(97,2)(96,2)(95,2);M0,0,20;LX=-50","","",""
  694. Data 103,"LR9=2;LR5=0;A:LR5=R5+1;IR5>4JM;IR9<1JM;IRX>XJC;JB"
  695. Data ";B:A0,(103,1)(104,1);M-50,RY-Y-33,50;LR8=1;JA"
  696. Data ";C:A0,(105,1)(106,1);M50,RY-Y-33,50;LR8=2;JA"
  697. Data ";M:A1,(107,1)(108,1)(109,1);M0,0,3;LX=-50","","","",""
  698. End Proc
  699. Procedure NASTYCD
  700. For T=0 To 3
  701. If NAS(T)>0
  702. PRORET=0
  703. LADRET=0
  704. LADRET2=0
  705. X=X Bob(T+1)
  706. Y=Y Bob(T+1)
  707. BLK=(FIN(SCR)+X-320)/16
  708. LEV=0
  709. If Y>114 : LEV=1 : End If 
  710. If LEV<0 or LEV>1 : Goto DUN : End If 
  711. If BLK<0 or BLK>499 : Goto DUN : End If 
  712. YP=Y-50-(LEV*64)
  713. P=Peek(Start(5)+160+(BLK*2)+LEV)
  714. For U=0 To 1
  715. Y1=Peek(Start(5)+(P*8)+(U*2))
  716. Y2=Peek(Start(5)+(P*8)+(U*2)+1)
  717. If Y1>0 or Y2>0
  718. If YP>Y1 and YP<Y2
  719. PRORET=1
  720. Exit 
  721. End If 
  722. End If 
  723. Next U
  724. Y1=Peek(Start(5)+(P*8)+4)
  725. Y2=Peek(Start(5)+(P*8)+5)
  726. If Y1>0 or Y2>0
  727. If YP-2>Y1 and YP-2<Y2
  728. LADRET=1
  729. End If 
  730. If YP-4>Y1 and YP-4<Y2
  731. LADRET2=1
  732. End If 
  733. End If 
  734. DUN:
  735. Amreg(T+5,0)=PRORET
  736. Amreg(T+5,2)=LADRET
  737. Amreg(T+5,1)=Max(LADRET,LADRET2)
  738. If X Bob(T+1)<-5 or Y Bob(T+1)>200
  739. Amal Off T+5
  740. Bob Off T+1
  741. NAS(T)=0
  742. End If 
  743. End If 
  744. Next T
  745. End Proc
  746. Procedure SPELLCD
  747. For T=0 To 3
  748. If Bobsprite Col(T+1,0 To 3)
  749. If Amreg(T+5,9)>0
  750. For CN=0 To 3
  751. If Col(CN)
  752. NHP=Amreg(T+5,9)
  753. BHP=Amreg(CN+1,9)
  754. NHP=NHP-Amreg(CN+1,9)
  755. BHP=BHP-Amreg(T+5,9)
  756. Amreg(CN+1,9)=BHP
  757. Amreg(T+5,9)=NHP
  758. If BHP<1
  759. Sprite CN,0,0,
  760. Amal Off CN+1
  761. End If 
  762. If Amreg(T+5,9)<1
  763. SCORE=SCORE+100
  764. PUD=2
  765. End If 
  766. End If 
  767. If Amreg(T+5,9)<1
  768. If Rnd(24)=9
  769. NAS(T)=999
  770. Amal T+5,"LA=21;LR5=0;A:M0,-1,2;M0,1,2;LR5=R5+1;IR5<50JA;LX=-50"
  771. Amal On T+5
  772. End If 
  773. End If 
  774. Next CN
  775. End If 
  776. End If 
  777. Next T
  778. End Proc
  779. Procedure WIZCD
  780. For T=0 To 3
  781. If Bobsprite Col(0,4 To 7)
  782. Amal 0,"A1,(13,5)(14,5)(15,5)(16,5)(17,5)(18,5)(19,5)(20,5);M0,0,40;LR9=1"
  783. Amreg(0,9)=0
  784. Amal On 0
  785. INV=-1
  786. End If 
  787. Next T
  788. If Y Bob(0)>200
  789. Amal 0,"A1,(13,5)(14,5)(15,5)(16,5)(17,5)(18,5)(19,5)(20,5);M0,0,40;LR9=1"
  790. Amreg(0,9)=0
  791. Amal On 0
  792. INV=-1
  793. Bob 0,,80,
  794. End If 
  795. B=Bob Col(0,1 To 4)
  796. If B
  797. For T=0 To 3
  798. If Col(T+1)
  799. If NAS(T)=999
  800. SCORE=SCORE+250
  801. PUD=2
  802. NAS(T)=0
  803. 'Bob Off T+1 
  804. Bob T+1,-50,,
  805. S=Rnd(2)
  806. 'SPL(S)=Min(3,SPL(S)+1)
  807. If SPL(S)<2 : Inc SPL(S) : End If 
  808. PUD=2
  809. Else 
  810. BHT:
  811. If Amreg(T+5,9)>0
  812. Amal 0,"A1,(13,5)(14,5)(15,5)(16,5)(17,5)(18,5)(19,5)(20,5);M0,0,40;LR9=1"
  813. Amreg(0,9)=0
  814. Amal On 0
  815. INV=-1
  816. End If 
  817. End If 
  818. End If 
  819. Next T
  820. End If 
  821. End Proc
  822. Procedure NZAP
  823. For T=0 To 3
  824. If NAS(T)>0
  825. If Amreg(T+5,8)>0
  826. A=Amreg(T+5,8)
  827. Restore 5000+A
  828. Read MOV$,VCR,IMG,C1,C2,C3
  829. If T<2
  830. Colour 25,C1
  831. Colour 26,C2
  832. Colour 27,C3
  833. Else 
  834. Colour 29,C1
  835. Colour 30,C2
  836. Colour 31,C3
  837. End If 
  838. Sprite T+4,X Hard(X Bob(T+1)),Y Hard(Y Bob(T+1))-VCR,IMG
  839. Channel T+9 To Sprite T+4
  840. Amal T+9,MOV$
  841. Amal On T+9
  842. BLN(T)=1
  843. Amreg(T+5,8)=0
  844. End If 
  845. End If 
  846. Next T
  847. Pop Proc
  848. 5001 Data "M-200,200,100;LX=0",0,32,$FF0,$F80,$F00
  849. 5002 Data "M200,200,100;LX=0",0,32,$FF0,$F80,$F00
  850. 5003 Data "LR5=0-Z(31);IRX>XS(0,X)JB;LA=62;MR5,-10,5;MR5,-5,5;MR5,5,5;MR5,100,50;B:LR5=Z(31);LA=61;MR5,-10,5;MR5,-5,5;MR5,5,5;MR5,100,50;LX=0"
  851. Data 22,62,$FFF,$BBB,$444
  852. 5004 Data "M-320,0,70;LX=0",10,39,$8F8,$F0,$80
  853. 5005 Data "LR5=Z(63)-31;M-300,R5,50;LX=0",18,65,$FFF,$840,$F00
  854. 5006 Data "LR5=Z(63)-31;M300,R5,50;LX=0",18,64,$FFF,$840,$F00
  855. 5007 Data "A0,(66,1)(67,1)(68,1)(69,1);M-100,0,40;LX=0",18,66,$FFF,$888,$840
  856. 5008 Data "A0,(66,1)(67,1)(68,1)(69,1);M100,0,40;LX=0",18,66,$FFF,$888,$840
  857. 5009 Data "M0,200,50;LX=0",4,70,$F0,$80,$40
  858. 5010 Data "M-300,0,50;LX=0",8,63,$FFF,$888,$444
  859. 5011 Data "LR4=RX-XS(0,X);LR5=RY-YS(0,Y);LR5=R5-6;MR4,R5,30;M0-R4,0-R5,30;LX=0",30,70,$FF0,$F80,$880
  860. 5012 Data "A0,(49,1)(50,1)(51,1)(52,1);LR5=RX-XS(0,X);MR5,100,50;LX=0",18,49,$FF0,$F80,$F00
  861. End Proc
  862. Procedure GWON
  863. Autoback 2
  864. Cls 0
  865. Paste Bob 152,50,13
  866. Locate 0,2
  867. Pen 5 : Paper 0
  868. Centre "Well Done"
  869. Locate 0,4
  870. Centre "Your score: "+Str$(SCORE)
  871. Pen 7
  872. Locate 0,7
  873. Print "You have succeeded in destroying"
  874. Print "the portal of chaos. The world is"
  875. Print "now free of daemons."
  876. Print 
  877. Print "Recoginzing your great skill, the"
  878. Print "council of elders promotes you to"
  879. Print "the rank of Archchancellor, U.U."
  880. Clear Key 
  881. Wait Key 
  882. Cls 0
  883. Autoback 0
  884. End Proc
  885. Procedure TITLE
  886. Load ":titlebobs.ABK"
  887. Load ":heralding.ABK"
  888. Autoback 2
  889. Bob Update On 
  890. Synchro On 
  891. Cls 0
  892. Bob 0,-58,50,1
  893. Channel 0 To Bob 0
  894. Amal 0,"M184,0,100;A1,(1,20)(2,20)(3,20)(4,20)(5,20)"
  895. Amal On 0
  896. Wait 300
  897. Bob 1,160,75,6
  898. Channel 1 To Bob 1
  899. Amal 1,"LR0=0;A:P;IR0<1JA;LR0=0;A0,(6,5)(7,5)(6,5)(8,5)(9,5);MR1,R2,25;LX=160;LY=75;A1,(6,1);JA"
  900. Amal On 1
  901. Wait 10
  902. For T=0 To 5
  903. Amreg(1,1)=(T*35)-105+16
  904. Amreg(1,2)=-45
  905. Amreg(1,0)=1
  906. Wait 25
  907. Paste Bob 55+(T*35),10,T+10
  908. Wait 5
  909. Next T
  910. For T=0 To 5
  911. Amreg(1,1)=(T*35)-105+16
  912. Amreg(1,2)=65
  913. Amreg(1,0)=1
  914. Wait 25
  915. Paste Bob 55+(T*35),100,T+16
  916. Wait 5
  917. Next T
  918. Bob Off 1
  919. Wait 5
  920. Pen 7 : Paper 0
  921. Locate 0,22
  922. Centre "By Mark Potter"
  923. '
  924. Music 1
  925. While Fire(1)=0
  926. Wend 
  927. '
  928. Bob Off 
  929. Wait 5
  930. Cls 0
  931. Bob Update Off 
  932. Autoback 0
  933. Synchro Off 
  934. Load ":trundle.ABK"
  935. End Proc
  936. Procedure LOST
  937. Music Off 
  938. Autoback 2
  939. Cls 0
  940. Paste Bob 152,50,13
  941. Locate 0,2
  942. Pen 5 : Paper 0
  943. Centre "Game Over"
  944. Locate 0,4
  945. Centre "Your score: "+Str$(SCORE)
  946. Wait 10
  947. Autoback 0
  948. While Fire(1)=0
  949. X=Rnd(15)+152
  950. Y=Rnd(30)+50
  951. Screen Copy 0,X,Y,X+1,200 To 0,X,Y+1
  952. Screen Swap 
  953. Screen Copy Physic(0) To Logic(0)
  954. Wend 
  955. Cls 0
  956. Screen Swap 
  957. Cls 0
  958. End Proc
  959. Procedure PRE
  960. Screen Open 0,640,200,2,Hires
  961. Palette $0,$F0
  962. Locate 0,0
  963. Centre "Pre-Game Instruction Sequence"
  964. Print 
  965. Centre "By Mark Potter"
  966. Print 
  967. Print 
  968. Print "Press a Key..."
  969. Print 
  970. Do 
  971. If Inkey$<>"" Then Read A$ : Print A$ : Clear Key : If A$="END" Then Exit 
  972. Loop 
  973. Default 
  974. Pop Proc
  975. Data "Hello and welcome"
  976. Data "to Demon's Breach.",""
  977. Data "Version 1.2, 30/6/93"
  978. Data ""
  979. Data "Somewhere,someone's been tampering with reality again..."
  980. Data ""
  981. Data "Experiments by the evil sorcerer Zecron have opened up a hole into"
  982. Data "the Demon Dimensions. It's up to you to put a stop to it. Unfortunately,"
  983. Data "the portal can only be closed from the Other Side ..."
  984. Data ""
  985. Data "Credits..."
  986. Data ""
  987. Data "Written using AMOS,by Mandarin software"
  988. Data ""
  989. Data "All music by Luke Miller"
  990. Data ""
  991. Data "Thanks to C.M.Potter (my mother) for the ghosts on level 3"
  992. Data "","controls:",""
  993. Data "Use the joystick as usual."
  994. Data "Press P to pause game, any key restarts"
  995. Data "Hold down fire to build up the level of spell"
  996. Data "(at the start, you only know a level one spell,so don't bother)."
  997. Data "Collect chests for extra spells."
  998. Data "That's all, have fun...",""
  999. Data "P.S. No prize for guessing what this game is based on!"
  1000. Data "END"
  1001. End Proc