home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 376-400 / apd385 / mazeman.amos / mazeman.amosSourceCode < prev    next >
AMOS Source Code  |  1992-04-12  |  18KB  |  545 lines

  1. Screen Open 0,320,8,2,Lowres
  2. Curs Off : Clw : Hide : No Icon Mask : No Mask 
  3. Dim SQ(4) : SQ(0)=1 : SQ(1)=2 : SQ(2)=4 : SQ(3)=8 : SQ(4)=16
  4. Dim LIVES(1),SCORE(1),LEVEL(1),EATEN(1)
  5. For F=2 To 7 : Channel F To Sprite F : Next F
  6. Update Off : Synchro Off 
  7. '
  8. INIT:
  9. Flash Off : Sprite Off : Sprite Update 
  10. Unpack 6 To 0 : Screen Display 0,160,42,,
  11. Pen 3 : PLYERS=0
  12. Repeat 
  13.    Wait 5
  14.    If Joy(1)=2 Then Add PLYERS,1,0 To 2
  15.    If Joy(1)=1 Then Add PLYERS,-1,0 To 2
  16.    Paper -(PLYERS=0) : Print At(9,18);" 1 PLAYER  "
  17.    Paper -(PLYERS=1) : Print At(9,20);" 2 PLAYERS "
  18.    Paper -(PLYERS=2) : Print At(9,22);" QUIT GAME "
  19. Until(Joy(1) and 16)=16
  20. If PLYERS=2 Then End 
  21. Palette 0,0,0,0,0,0,0,0,0 : Ink 0 : Clw 
  22. For P=0 To PLYERS
  23.    LIVES(P)=2 : SCORE(P)=0 : LEVEL(P)=1
  24.    Gosub NXTLEVEL
  25. Next P
  26. P=0 : LIVE$=Chr$(169)+Chr$(169)+Chr$(169)+Chr$(169)
  27. Clear Key 
  28. '
  29. MAIN_LOOP:
  30. Do 
  31.    Amal Off : Sprite Off 
  32.    Gosub INITAMAL
  33.    Flash Off : Fade 1 : Wait 14 : Sprite Update 
  34.    Gosub SETUPSCREEN
  35.    Fade 1 To -1 : Wait 14
  36.    Gosub REDY
  37.    Amal On 
  38.    Synchro : Wait Vbl : Sprite Update 
  39.    BONUS=41 : SLOW=0 : T=0
  40.    While EATEN(P)
  41.       If Inkey$=Chr$(27) Then Goto INIT
  42.       If(Joy(1) and 16)
  43.          Print At(14*P,31);" PAUSED ";
  44.          While(Joy(1) and 16) : Wend 
  45.          While(Joy(1) and 16)=0
  46.             If Key State(20) and Key State(19) and Key State(18) and Key State(54) and Key State(32)
  47.                EATEN(P)=0
  48.             End If 
  49.          Wend 
  50.          While(Joy(1) and 16) : Wend 
  51.          Print At(14*P,31);"        ";At(14*P,31);SCORE(P);
  52.       End If 
  53.       LOC=Amreg(3)
  54.       Amreg(7,9)=Peek(MAZE+LOC+1000)
  55.       Amreg(2,9)=Peek(MAZE+Amreg(2,1)*4+Amreg(2,0)/8+1000) or SLOW
  56.       Amreg(3,9)=Peek(MAZE+Amreg(3,1)*4+Amreg(3,0)/8+1000) or SLOW
  57.       Amreg(4,9)=Peek(MAZE+Amreg(4,1)*4+Amreg(4,0)/8+1000) or SLOW
  58.       Amreg(5,9)=Peek(MAZE+Amreg(5,1)*4+Amreg(5,0)/8+1000) or SLOW
  59.       Synchro : Sprite Update : Wait Vbl 
  60.       If Amreg(2)
  61.          A=Peek(MAZE+LOC)
  62.          If A=22
  63.             Add SCORE(P),10
  64.             Bar Amreg(0),Amreg(1) To Amreg(0)+7,Amreg(1)+7
  65.             Print At(14*P,31);SCORE(P);
  66.             Sam Play 4,5,8000
  67.             Dec EATEN(P)
  68.             Poke MAZE+LOC,24
  69.          End If 
  70.          If A=23
  71.             If T
  72.                Colour 23,$F7 : Colour 27,$F7
  73.             End If 
  74.             Flash Off : Colour 21,$38 : Colour 22,$3B : Colour 25,$38 : Colour 26,$3B
  75.             Amreg(4)=640 : Add SCORE(P),50
  76.             Bar Amreg(0),Amreg(1) To Amreg(0)+7,Amreg(1)+7
  77.             Print At(14*P,31);SCORE(P);
  78.             Sam Play 8,5,5000
  79.             Dec EATEN(P)
  80.             Poke MAZE+LOC,24
  81.             SLOW=(SLOW and 128)
  82.          End If 
  83.       End If 
  84.       If T Then Dec T : If T=0 Then SLOW=0 : Colour 23,$FFF : Colour 27,$FFF
  85.       If Amreg(8)
  86.          Sam Play 8,5,5000
  87.          Add SCORE(P),SQ(Amreg(8))*100 : Print At(14*P,31);SCORE(P);
  88.          Amreg(8)=0
  89.          If Amreg(6,8)=50 and SLOW=0 and Amreg(4)=0
  90.             Colour 23,$F7 : Colour 27,$F7
  91.             T=500 : SLOW=128
  92.             Sam Play 4,2 : Wait 2 : Sam Play 8,2 : Wait 22
  93.          End If 
  94.          If Amreg(6,8)=51 and SLOW=0 and Amreg(4)=0
  95.             Colour 23,0 : Colour 27,0
  96.             T=500 : SLOW=255
  97.             Sam Play 4,2 : Wait 2 : Sam Play 8,2 : Wait 22
  98.          End If 
  99.          If Amreg(6,8)=52 and Amreg(4)=0 and Rnd(3)=0
  100.             Colour 21,$38 : Colour 22,$3B : Colour 25,$38 : Colour 26,$3B
  101.             Amreg(4)=640 : Sam Play 4,2 : Wait 2 : Sam Play 8,2 : Wait 22
  102.          End If 
  103.          If Amreg(6,8)=53 and LIVES(P)<4
  104.             Sam Play 4,2 : Wait 12 : Sam Play 8,2 : Wait 12
  105.             Inc LIVES(P)
  106.             Pen 4 : Print At(8+P*14,31);Left$(LIVE$,LIVES(P)); : Pen 5
  107.          End If 
  108.       End If 
  109.       If Amreg(6)
  110.          Get Sprite Palette 
  111.          Amal Off 2 : Amal Off 3 : Amal Off 4 : Amal Off 5
  112.          Amal 7,"Anim 1,(1,4)(7,4)(6,4)(32,4)(33,4)(34,4)(35,4)(36,4)(37,4)(38,4)(39,4)(45,4);"
  113.          Amal On 7
  114.          For F=0 To 59
  115.             Wait Vbl : Synchro : Sprite Update 
  116.             If(F mod 10)=0
  117.                If F<40
  118.                   Sam Play 3,3,8000-F*50
  119.                Else 
  120.                   Sam Play 3,4,9000
  121.                End If 
  122.             End If 
  123.          Next F
  124.          Dec LIVES(P)
  125.          If LIVES(P)=-1
  126.             Sprite Off : Sprite Update : Wait Vbl 
  127.             Colour 22,$F00 : Colour 26,$F00
  128.             For F=0 To 3 : Sprite F+2,240+F*16,24+(F>1)*-300,46+F
  129.                Amal F+2,"M 0,"+Str$(150+(F>1)*300)+",75;"
  130.             Next F
  131.             Amal On 
  132.             Update On : Synchro On 
  133.             Wait 250
  134.             Update Off : Synchro Off 
  135.             If LIVES(0)=-1 and(LIVES(1)=-1 or PLYERS=0)
  136.                Goto INIT
  137.             End If 
  138.          End If 
  139.          Sprite Off : Gosub INITAMAL
  140.          If LIVES(1-P)>-1 and PLYERS=1
  141.             P=1-P
  142.             Fade 1 : Wait 15 : Sprite Update 
  143.             Gosub SETUPSCREEN
  144.             Fade 1 To -1 : Wait 15
  145.          End If 
  146.          Gosub REDY
  147.          Amal On 
  148.          Amreg(7)=0 : BONUS=41 : SLOW=0 : T=0 : Flash Off 
  149.       End If 
  150.       If Amreg(4)=64
  151.          Flash 21,"(36F,4)(038,4)" : Flash 25,"(36F,4)(038,4)"
  152.          Flash 22,"(36F,4)(038,4)" : Flash 26,"(36F,4)(038,4)"
  153.       End If 
  154.       If Amreg(4)=1 or BONUS=45
  155.          Flash Off : Get Sprite Palette 
  156.          BONUS=41 : Amreg(7)=0 : Amreg(4)=1 : Amreg(5)=0
  157.       End If 
  158.       If Amreg(7)
  159.          Sprite Amreg(7),,,BONUS : Sprite Update 
  160.          Add SCORE(P),SQ(BONUS-40)*100
  161.          Print At(14*P,31);SCORE(P);
  162.          Sam Play 12,2,8000 : Wait 24 : BONUS=BONUS+1 : Amreg(7)=0
  163.       End If 
  164.       '
  165.    Wend 
  166.    Flash Off : Flash 2,"(FFF,16)(777,16)"
  167.    Gosub NXTLEVEL
  168. Loop 
  169. '
  170. NXTLEVEL:
  171. F$="MAZE"+Str$(LEVEL(P))-" "+".abk"
  172. If Not Exist(F$) Then LEVEL(P)=1 : F$="MAZE1.abk"
  173. Erase(7+P) : Load F$,(7+P)
  174. If Peek(Start(7+P)+1997)<>LEVEL(P) Then End 
  175. Inc LEVEL(P)
  176. Return 
  177. '
  178. SETUPSCREEN:
  179. EATEN(P)=0 : MAZE=Start(7+P)
  180. For Y=0 To 30
  181.    For X=0 To 29
  182.       A=Peek(MAZE+Y*32+X) : If A=22 or A=23 Then Inc EATEN(P)
  183.       Paste Icon X*8-16,Y*8,A
  184.    Next X
  185. Next Y
  186. Doke Start(1)+Deek(Start(1))*8+4,Deek(MAZE+1998)
  187. Return 
  188. '
  189. REDY:
  190. For F=0 To PLYERS
  191.    Pen 5-2*(F<>P)
  192.    Print At(F*14,31);SCORE(F);
  193.    Pen 4-2*(F<>P)
  194.    Print At(8+F*14,31);Left$(LIVE$,LIVES(F)-(LIVES(F)<0 or F<>P));" ";
  195. Next F
  196. Pen 5 : Flash 5,"(fff,16)(000,8)"
  197. Sprite 7,264,222,1 : Sprite Update : Wait Vbl 
  198. If PLYERS=0
  199.    Sprite 0,256,310,54 : Sprite 1,272,310,55
  200. Else 
  201.    Sprite 0,256,310,56 : Sprite 1,272,310,57+P
  202. End If 
  203. Update On : Synchro On 
  204. A$="M 0,-160,20; F R0=1 T 80; N R0; M 0,-160,20;"
  205. Amal 0,A$ : Amal 1,A$
  206. Amal On 0 : Amal On 1 : Wait 120
  207. Sprite Off 0 : Sprite Off 1
  208. Synchro Off : Update Off : Flash Off : Colour 5,$FFF
  209. Return 
  210. '
  211. INITAMAL:
  212. Restore PACMAN
  213. A$=""
  214. Repeat 
  215.    Read AA$
  216.    A$=A$+AA$
  217. Until AA$=""
  218. Amal 7,A$
  219. '
  220. For F=2 To 5
  221.    A$=""
  222.    Restore "GHOST"+Chr$(F+47)
  223.    Repeat 
  224.       Read AA$
  225.       A$=A$+AA$
  226.    Until AA$=""
  227.    Restore BLUEGHOST
  228.    Repeat 
  229.       Read AA$
  230.       A$=A$+AA$
  231.    Until AA$=""
  232.    Amal F,A$
  233. Next F
  234. '
  235. Restore BONUS
  236. A$=""
  237. Repeat 
  238.    Read AA$
  239.    A$=A$+AA$
  240. Until AA$=""
  241. Amal 6,A$
  242. Return 
  243. '
  244. PACMAN:
  245. Data "Init: L R0=124; L R1=184;"
  246. Data "      L R9=0; L RE=0; L RF=0; L RG=0; L RH=0;"
  247. Data "      L R2=-1; L R3=0;"
  248. Data "      L R5=8; L R4=R5; Anim 1,(9,2)(1,2);"
  249. Data "Strt: L R7=J1;"
  250. Data "      If R7&15=0 Jump Noj;"
  251. Data "      L R5=8; If R7&4 Jump Noj;"
  252. Data "      L R5=2; If R7&8 Jump Noj;"
  253. Data "      L R5=1; If R7&1 Jump Noj;"
  254. Data "      L R5=4;"
  255. Data "Noj:  L RC=0;"
  256. Data "      If R0|R1&7 Jump Move;"
  257. Data "      L RA=R0-16; L RB=R1; L RC=-1;"
  258. Data "      If R5&R9 Jump Rt;"
  259. Data "      L R4=R5;"
  260. Data "Rt:   L R6=R4&14; L R6=R4&1*6|R6;"
  261. Data "      L R2=R4&8/8; L R2=R4&2/2-R2;"
  262. Data "      L R3=R4&1; L R3=R4&4/4-R3;"
  263. Data "Chk:  If R4&R9=0 Jump Over;"
  264. Data "      L R2=0; L R3=0; Jump Move;"
  265. Data "Over: Anim 1,(R6+1,2)(R6,2)(R6+1,2)(1,1);"
  266. Data "Move: L R0=R0+R2&255; L R1=R1+R3;"
  267. Data "      If R0 Jump K; L R1=224-R1; L R0=R0+R2;"
  268. Data "K:    L X=R0+140; L Y=R1+38;"
  269. Data "      L RX=R0; Let RY=R1;"
  270. Data "      Let RE=RE>0+RE; L RD=R1*32+R0/8; Pause;"
  271. Data "      L RZ=1; L R8=RX-RP&65528=65528; L R8=RX-RP&65528=0|R8;"
  272. Data "      L R7=RY-RQ&65528=65528; L R7=RY-RQ&65528=0|R7; If R8&R7 Jump Hit;"
  273. Data "      L RZ=2; L R8=RX-RR&65528=65528; L R8=RX-RR&65528=0|R8;"
  274. Data "      L R7=RY-RS&65528=65528; L R7=RY-RS&65528=0|R7; If R8&R7 Jump Hit;"
  275. Data "      L RZ=4; L R8=RX-RT&65528=65528; L R8=RX-RT&65528=0|R8;"
  276. Data "      L R7=RY-RU&65528=65528; L R7=RY-RU&65528=0|R7; If R8&R7 Jump Hit;"
  277. Data "      L RZ=8; L R8=RX-RV&65528=65528; L R8=RX-RV&65528=0|R8;"
  278. Data "      L R7=RY-RW&65528=65528; L R7=RY-RW&65528=0|R7; If R8&R7 Jump Hit;"
  279. Data "      Jump Strt;"
  280. '
  281. Data "Hit:"
  282. Data "      If RZ&RF Jump Strt;"
  283. Data "      L RH=RZ&3; L RH=RZ&4*3/4|RH; L RH=RZ&8/2|RH+1;"
  284. Data "      L RF=RF|RZ;"
  285. Data "      If RE Jump Strt;"
  286. Data "      L RG=-1;"
  287. Data "Wait: If RG Jump Wait;"
  288. Data "      Jump Init;"
  289. Data ""
  290. '
  291. BLUEGHOST:
  292. Data "Frst: L R8=30;"
  293. Data "      Anim 0,(R8,8)(R8+1,8);"
  294. Data "      If R0|R1&7 J Anim;"
  295. Data "Nxt:  If R9&112=0 Jump Anim;"
  296. Data "      L R7=R4*16|R4/4&15;"
  297. Data "      L R9=R9|R7;"
  298. Data "      L R5=R0>RX*6+8; L R6=R1<RY*3+4;"
  299. Data "      L R4=R5;"
  300. Data "      If R4&R9=0 Jump Hmve;"
  301. Data "      L R4=R6;"
  302. Data "      If R4&R9=0 Jump Hmve;"
  303. Data "      L R4=5-R6;"
  304. Data "      If R4&R9=0 Jump Hmve;"
  305. Data "      L R4=10-R5;"
  306. Data "      If R4&R9=0 Jump Hmve;"
  307. Data "      L R4=R7;"
  308. Data "Hmve: L R2=R4&8/8; L R2=R4&2/2-R2;"
  309. Data "      L R3=R4&1; L R3=R4&4/4-R3;"
  310. Data "Anim: L R0=R0+R2&255; L R1=R1+R3;"
  311. Data "      If R0 Jump U; L R1=224-R1;"
  312. Data "U:    L X=R0+140; L Y=R1+38;"
  313. Data "      L R"+Chr$(F*2+76)+"=R0; L R"+Chr$(F*2+77)+"=R1;"
  314. Data "      If RF&"+Str$(SQ(F-2))+" Jump Eten; Pause;"
  315. Data "      If RF&"+Str$(SQ(F-2))+" Jump Eten; Pause;"
  316. Data "      If R9&128=0 Jump Jck;"
  317. Data "      If RF&"+Str$(SQ(F-2))+" Jump Eten; Pause;"
  318. Data "      If RF&"+Str$(SQ(F-2))+" Jump Eten; Pause;"
  319. Data "Jck:  If R0|R1&7 Jump Anim;"
  320. Data "      If RE Jump Frst;"
  321. Data "      Anim 0,(R6,4)(R6+1,4);"
  322. Data "      L R9=R9|16; Jump Bgn;"
  323. '
  324. Data "Eten:"
  325. Data "      L R0=R0&1022; L R1=R1&1022; L X=X&1022; L Y=Y&1022;"
  326. Data "      L R2=R2*2; L R3=R3*2;"
  327. Data "      L R"+Chr$(F*2+76)+"=9999;"
  328. Data "      L R5=R4&3; L R5=R4&4*3/4|R5; L R4=R4&8/2|R5;"
  329. Data "      Anim 0,(R4+25,4);"
  330. Data "      Pause;"
  331. Data "      If R0|R1&7 Jump Y;"
  332. Data "Woop: If R9&112=0 Jump Y;"
  333. Data "      L R4=R9/16&7;"
  334. Data "      L R2=R4=4*2; L R2=R4=2*-2|R2;"
  335. Data "      L R3=R4=1*2; L R3=R4=3*-2|R3;"
  336. Data "Y:    L R0=R0+R2&255;L R1=R1+R3;"
  337. Data "      If R0 Jump V; L R1=224-R1;"
  338. Data "V:    L X=R0+140; L Y=R1+38;"
  339. Data "      Pause; If R0|R1&7 Jump Y;"
  340. Data "      If R9&112<112 Jump Woop;"
  341. Data "      Anim 0,("+Str$(29+(F>3)*2)+",1);"
  342. Data " "
  343. Data "      Move "+Str$(96+F*8)+"-R0,0,16;"
  344. Data "      Jump Init;"
  345. Data ""
  346. '
  347. 'REDGHOST  
  348. GHOST1:
  349. Data "Init: L X=252; L Y=150;"
  350. Data "      L R"+Chr$(F*2+76)+"=9999"
  351. Data "      Anim 0,(20,4)(21,4);"
  352. Data "      Move 0,4,8;"
  353. Data "      Anim 0,(24,4)(25,4);"
  354. Data "      Move 0,-8,16;"
  355. Data "      Anim 0,(20,4)(21,4);"
  356. Data "      Move 0,4,8;"
  357. Data "      If RF&"+Str$(SQ(F-2))+" Jump Init;"
  358. Data "      Anim 0,(18,4)(19,4); Move 12,0,24;"
  359. Data "      Anim 0,(24,4)(25,4); Move 0,-24,48;"
  360. Data "      L R6=18; L R9=21; L R4=2;"
  361. Data "      L R0=X-140; L R1=Y-38;"
  362. Data "      Anim 0,(R6,4)(R6+1,4);"
  363. Data "Bgn:  If R9&112=0 Jump Show;"
  364. Data "      L R7=R4*16|R4/4&15;"
  365. Data "      L R9=R9|R7;"
  366. Data "      L R5=R0<RX*6+8; L R6=R1>RY*3+4;"
  367. Data "      If R1<>RY Jump Test;"
  368. Data "      L R4=R5; L R5=R6; L R6=R4;"
  369. Data "Test: L R4=R6;"
  370. Data "      If R4&R9=0 Jump Move;"
  371. Data "      L R4=R5;"
  372. Data "      If R4&R9=0 Jump Move;"
  373. Data "      L R4=R5*16|R5/4&15;"
  374. Data "      If R4&R9=0 Jump Move;"
  375. Data "      L R4=R6*16|R6/4&15;"
  376. Data "      If R4&R9=0 Jump Move;"
  377. Data "      L R4=R7;"
  378. Data "Move: If R4&1=0 J Dn; L R2=0;  L R3=-1; L R6=24; J Show;"
  379. Data "Dn:   If R4&4=0 J Lt; L R2=0;  L R3=1;  L R6=20; J Show;"
  380. Data "Lt:   If R4&8=0 J Rt; L R2=-1; L R3=0;  L R6=22; J Show;"
  381. Data "Rt:                   L R2=1;  L R3=0;  L R6=18;"
  382. Data "Show: L R0=R0+R2&255; L R1=R1+R3;"
  383. Data "      If R0 Jump C; L R1=224-R1;"
  384. Data "   C: L X=R0+140; L Y=R1+38;"
  385. Data "      L R"+Chr$(F*2+76)+"=R0; L R"+Chr$(F*2+77)+"=R1;"
  386. Data "      Pause; If RE Jump Frst;"
  387. Data "      If R9&128=0 Jump Qck;"
  388. Data "      Pause; If RE Jump Frst;"
  389. Data "Qck:  If R0|R1&7 Jump Show;"
  390. Data "      Jump Bgn;"
  391. Data ""
  392. '
  393. 'PINKGHOST 
  394. GHOST2:
  395. Data "Init: L X=260; L Y=150;"
  396. Data "      L R"+Chr$(F*2+76)+"=9999"
  397. Data "      For R0=1 To 2;"
  398. Data "      Anim 0,(16,4)(17,4);"
  399. Data "      Move 0,-4,8;"
  400. Data "      Anim 0,(12,4)(13,4);"
  401. Data "      Move 0,8,16;"
  402. Data "      Anim 0,(16,4)(17,4);"
  403. Data "      Move 0,-4,8;"
  404. Data "      Next R0;"
  405. Data "      If RF&"+Str$(SQ(F-2))+" Jump Init;"
  406. Data "      Anim 0,(10,4)(11,4); Move 4,0,8;"
  407. Data "      Anim 0,(16,4)(17,4); Move 0,-24,48;"
  408. Data "      L R0=X-140; L R1=Y-38;"
  409. Data "      L R6=14; L R9=21; L R4=8;"
  410. Data "      Anim 0,(R6,4)(R6+1,4);"
  411. Data "Bgn:  If R9&112=0 Jump Show;"
  412. Data "      L R7=R4*16|R4/4&15;"
  413. Data "      L R9=R9|R7;"
  414. Data "      L R5=R0>RX*-6+2; L R6=R1<RY*-3+1;"
  415. Data "Test: L R4=R5;"
  416. Data "      If R4&R9=0 Jump Move;"
  417. Data "      L R4=R6;"
  418. Data "      If R4&R9=0 Jump Move;"
  419. Data "      L R4=5-R6;"
  420. Data "      If R4&R9=0 Jump Move;"
  421. Data "      L R4=10-R5;"
  422. Data "      If R4&R9=0 Jump Move;"
  423. Data "      L R4=R7;"
  424. Data "Move: If R4&1=0 J Dn; L R2=0;  L R3=-1; L R6=16; J Show;"
  425. Data "Dn:   If R4&4=0 J Lt; L R2=0;  L R3=1;  L R6=12; J Show;"
  426. Data "Lt:   If R4&8=0 J Rt; L R2=-1; L R3=0;  L R6=14; J Show;"
  427. Data "Rt:                   L R2=1;  L R3=0;  L R6=10;"
  428. Data "Show: L R0=R0+R2&255; L R1=R1+R3;"
  429. Data "      If R0 Jump C; L R1=224-R1;"
  430. Data "   C: L X=R0+140; L Y=R1+38;"
  431. Data "      L R"+Chr$(F*2+76)+"=R0; L R"+Chr$(F*2+77)+"=R1;"
  432. Data "      If R0|R1&31=20 Jump Kck;"
  433. Data "      Pause; If RE Jump Frst;"
  434. Data "Kck:  If R9&128=0 Jump Qck;"
  435. Data "      Pause; If RE Jump Frst;"
  436. Data "Qck:  If R0|R1&7 Jump Show;"
  437. Data "      Jump Bgn;"
  438. Data ""
  439. '
  440. 'CYANGHOST 
  441. GHOST3:
  442. Data "Init: L X=268; L Y=150;"
  443. Data "      L R"+Chr$(F*2+76)+"=9999"
  444. Data "      For R0=1 To 3;"
  445. Data "      Anim 0,(20,4)(21,4);"
  446. Data "      Move 0,4,8;"
  447. Data "      Anim 0,(24,4)(25,4);"
  448. Data "      Move 0,-8,16;"
  449. Data "      Anim 0,(20,4)(21,4);"
  450. Data "      Move 0,4,8;"
  451. Data "      Next R0;"
  452. Data "      If RF&"+Str$(SQ(F-2))+" Jump Init;"
  453. Data "      Anim 0,(22,4)(23,4); Move -4,0,8;"
  454. Data "      Anim 0,(24,4)(25,4); Move 0,-24,48;"
  455. Data "      L R0=X-140; L R1=Y-38;"
  456. Data "      L R6=18; L R9=21; L R4=2;"
  457. Data "      Anim 0,(R6,4)(R6+1,4);"
  458. Data "Bgn:  If R9&112=0 Jump Show;"
  459. Data "      L R7=R4*16|R4/4&15;"
  460. Data "      L R9=R9|R7;"
  461. Data "      L R5=R0<RX*6+8; L R6=R1>RY*3+4;"
  462. Data "Test: L R4=R5;"
  463. Data "      If R4&R9=0 Jump Move;"
  464. Data "      L R4=R6;"
  465. Data "      If R4&R9=0 Jump Move;"
  466. Data "      L R4=5-R6;"
  467. Data "      If R4&R9=0 Jump Move;"
  468. Data "      L R4=10-R5;"
  469. Data "      If R4&R9=0 Jump Move;"
  470. Data "      L R4=R7;"
  471. Data "Move: If R4&1=0 J Dn; L R2=0;  L R3=-1; L R6=24; J Show;"
  472. Data "Dn:   If R4&4=0 J Lt; L R2=0;  L R3=1;  L R6=20; J Show;"
  473. Data "Lt:   If R4&8=0 J Rt; L R2=-1; L R3=0;  L R6=22; J Show;"
  474. Data "Rt:                   L R2=1;  L R3=0;  L R6=18;"
  475. Data "Show: L R0=R0+R2&255; L R1=R1+R3;"
  476. Data "      If R0 Jump C; L R1=224-R1;"
  477. Data "   C: L X=R0+140; L Y=R1+38;"
  478. Data "      L R"+Chr$(F*2+76)+"=R0; L R"+Chr$(F*2+77)+"=R1;"
  479. Data "      Pause; If RE Jump Frst;"
  480. Data "      If R9&128=0 Jump Qck;"
  481. Data "      Pause; If RE Jump Frst;"
  482. Data "Qck:  If R0|R1&7 Jump Show;"
  483. Data "      Jump Bgn;"
  484. Data ""
  485. '
  486. 'ORANGEGHOST   
  487. GHOST4:
  488. Data "Init: L X=276; L Y=150;"
  489. Data "      L R"+Chr$(F*2+76)+"=9999"
  490. Data "      For R0=1 To 4;"
  491. Data "      Anim 0,(16,4)(17,4);"
  492. Data "      Move 0,-4,8;"
  493. Data "      Anim 0,(12,4)(13,4);"
  494. Data "      Move 0,8,16;"
  495. Data "      Anim 0,(16,4)(17,4);"
  496. Data "      Move 0,-4,8;"
  497. Data "      Next R0;"
  498. Data "      If RF&"+Str$(SQ(F-2))+" Jump Init;"
  499. Data "      Anim 0,(14,4)(15,4); Move -12,0,24;"
  500. Data "      Anim 0,(16,4)(17,4); Move 0,-24,48;"
  501. Data "      L R0=X-140; L R1=Y-38;"
  502. Data "      L R6=14; L R9=21; L R4=8;"
  503. Data "      Anim 0,(R6,4)(R6+1,4);"
  504. Data "Bgn:  If R9&112=0 Jump Show;"
  505. Data "      L R7=R4*16|R4/4&15;"
  506. Data "      L R9=R9|R7;"
  507. Data "      L R5=R0<RX*6+8; L R6=R1>RY*3+4;"
  508. Data "Test: L R4=R6;"
  509. Data "      If R4&R9=0 Jump Move;"
  510. Data "      L R4=R5;"
  511. Data "      If R4&R9=0 Jump Move;"
  512. Data "      L R4=10-R5;"
  513. Data "      If R4&R9=0 Jump Move;"
  514. Data "      L R4=5-R6;"
  515. Data "      If R4&R9=0 Jump Move;"
  516. Data "      L R4=R7;"
  517. Data "Move: If R4&1=0 J Dn; L R2=0;  L R3=-1; L R6=16; J Show;"
  518. Data "Dn:   If R4&4=0 J Lt; L R2=0;  L R3=1;  L R6=12; J Show;"
  519. Data "Lt:   If R4&8=0 J Rt; L R2=-1; L R3=0;  L R6=14; J Show;"
  520. Data "Rt:                   L R2=1;  L R3=0;  L R6=10;"
  521. Data "Show: L R0=R0+R2&255; L R1=R1+R3;"
  522. Data "      If R0 Jump C; L R1=224-R1;"
  523. Data "   C: L X=R0+140; L Y=R1+38;"
  524. Data "      L R"+Chr$(F*2+76)+"=R0; L R"+Chr$(F*2+77)+"=R1;"
  525. Data "      Pause; If RE Jump Frst;"
  526. Data "      If R9&128=0 Jump Qck;"
  527. Data "      Pause; If RE Jump Frst;"
  528. Data "Qck:  If R0|R1&7 Jump Show;"
  529. Data "      Pause; If RE Jump Frst;"
  530. Data "      Jump Bgn;"
  531. Data ""
  532. '
  533. BONUS:
  534. Data "L X=264; L Y=174; L RI=0; L R0=X-140; L R1=Y-38;"
  535. Data "Init: Anim 1,(45,1); For R9=1 To 600; Next R9;"
  536. Data "      L R8=Z(127)/41+50; L A=R8;"
  537. Data "      For R9=1 To 400;"
  538. Data "      If RY<>R1 Jump Over;"
  539. Data "      If RX-R0&65528=65528 Jump Eten;"
  540. Data "      If RX-R0&65528=0 Jump Eten;"
  541. Data "Over: Next R9; Jump Init;"
  542. Data "Eten: L RI=Z(3)+1; L R2=RI+40;"
  543. Data "      Anim 0,(R2,8)(45,4); For R9=1 To 36; P; Next R9;"
  544. Data "      J Init;"
  545. Data ""