home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 476-500 / apd492 / amos_source / no-refund.amos / no-refund.amosSourceCode
AMOS Source Code  |  1993-08-11  |  165KB  |  7,150 lines

  1. '                            -  NO-REFUND!  -
  2.  
  3. '                   -  A Cybornetics Production 1993  -
  4.  
  5. '                     -  Released 11th August 1993  -
  6.  
  7.  
  8.  
  9. '  -  System requirements -
  10.  
  11. '      -  At least 1 Meg of RAM (1.5 if you want to run it from editor)
  12. '      -  External floppy drive supported (but not required) 
  13. '      -  Fully A1200 compatible 
  14. '      -  Both Amos 1.3x and Amos Pro Compatible 
  15.  
  16.  
  17.  
  18. '  -  Anybody can contact us at -
  19.  
  20. '     -  Rob (Swapping)                  Matt & Dug (Coding + General)   
  21. '     -  14 Buckingham Drive,            18 Marroway Lane,   
  22. '     -  Ely,                            Witchford,      
  23. '     -  Cambs,                          Ely,  Cambs,    
  24. '     -  CB6 1DR                         CB6 2HU   
  25.  
  26.  
  27.  
  28. '  -  Ahead, Warp factor nine Mr. Sulu!  
  29.  
  30.  
  31. ' - Initialise system
  32. Set Buffer 100
  33. Break Off 
  34. Amos Lock 
  35. Close Editor 
  36. Close Workbench 
  37.  
  38. ' - Main procedure calls 
  39. _INTRO
  40. _END_INTRO
  41. THE_MEANING_OF_LIFE
  42. EAGLE_PART
  43. FIT_EQU_LINES
  44. FIRST_DOT_CUBE
  45. COOL_DOT_CUBE
  46. INSERT_DISK_TWO
  47. SLIDE_STARS_CYCLE_FACES
  48. PLASMA
  49. PATT_VECSCRL_LOGO
  50. MORPH_MAN
  51. MAIN_MENU
  52.  
  53.  
  54. ' - Change disk procedures 
  55. Procedure INSERT_DISK_ONE
  56.    ' - Ah... ha ha ha ha ha ha haaaaaaaaaaa!
  57.    
  58.    ' - Only do this if no-refund! is not in any drive 
  59.    
  60.    Load "no-refund2!:stuff/tv_screen2",14
  61.    Load "no-refund2!:stuff/font",13
  62.    If Not Exist("No-Refund!:")
  63.       SETUP_FONT
  64.       NEW_TEXT_SCREEN["insert_disk1"]
  65.       Repeat 
  66.          ' - Do absolutely nothing until they insert disk one!
  67.       Until Exist("No-Refund!:")
  68.       CLEAR_TEXT_SCREEN
  69.       SHUT_TEXT_SCREENS
  70.    End If 
  71.    
  72. End Proc
  73. Procedure INSERT_DISK_TWO
  74.    ' - Ah... ha ha ha ha ha ha haaaaaaaaaaa!
  75.    
  76.    ' - Only do this if no-refund2! is not in any drive
  77.    
  78.    If Not Exist("No-Refund2!:")
  79.       SETUP_FONT
  80.       NEW_TEXT_SCREEN["insert_disk2"]
  81.       Repeat 
  82.          ' - Do absolutely nothing until they insert disk two!
  83.       Until Exist("No-Refund2!:")
  84.       CLEAR_TEXT_SCREEN
  85.       SHUT_TEXT_SCREENS
  86.    End If 
  87.    
  88. End Proc
  89.  
  90.  
  91. ' - Intro stuff
  92. Procedure _INTRO
  93.    
  94.    ' - GFX - Matt 
  95.    ' - Code - Matt & Rob
  96.    ' - SFX - Rob
  97.    
  98.    Load "no-refund!:stuff/Loading",1
  99.    
  100.    Screen Open 0,320,256,4,Lowres
  101.    Curs Off : Cls 0 : Hide : Flash Off : Get Sprite Palette 
  102.    
  103.    ' - Display loading bob while intro loads
  104.    Bob 1,240,190,1
  105.    Wait Vbl 
  106.    
  107.    ' - Load intro stuff 
  108.    Load "no-refund!:stuff/intro_text",9
  109.    Load "no-refund!:stuff/intro_sam",10
  110.    Load "no-refund!:stuff/headtitle",8
  111.    Load "no-refund!:stuff/grin_face",7
  112.    Load "no-refund!:stuff/laugh_sam",11
  113.    
  114.    ' - Remove loading bob 
  115.    Fade 1 : Wait 15
  116.    Bob Off 
  117.    Erase 1
  118.    Screen Close 0
  119.    
  120.    ' - 8 holds the title screen 
  121.    Unpack 8 To 0
  122.    Screen Hide 0
  123.    Erase 8
  124.    
  125.    ' - 9 holds the text screen
  126.    Unpack 9 To 1
  127.    Screen Hide 1
  128.    Erase 9
  129.    
  130.    ' - Screen 2 shows the output  
  131.    Screen Open 2,320,256,4,Lowres
  132.    Curs Off : Cls 0 : Hide : Flash Off 
  133.    Palette 0,0,0,0
  134.    Screen To Front 2 : Screen 2
  135.    
  136.    ' - HEY... 
  137.    Screen Copy 1,0,0,320,50 To 2,0,90
  138.    Sam Raw 15,Start(10),Length(10),14400
  139.    
  140.    ' - Slight pause before starting text
  141.    For CTR=1 To 7
  142.       Wait Vbl 
  143.    Next CTR
  144.    
  145.    ' fade on text and wait
  146.    Fade 1,0,$FFF,$999,
  147.    For CTR=1 To 30
  148.       Wait Vbl 
  149.    Next CTR
  150.    Fade 1 : Wait 10
  151.    
  152.    ' - Scuse me sir 
  153.    Cls 0
  154.    Screen Copy 1,0,50,320,100 To 2,0,90
  155.    Fade 1,0,$FFF,$999,
  156.    For CTR=1 To 50
  157.       Wait Vbl 
  158.    Next CTR
  159.    Fade 1 : Wait 10
  160.    
  161.    ' - Can We...
  162.    Cls 0
  163.    Screen Copy 1,0,100,320,200 To 2,0,70
  164.    Fade 1,0,$FFF,$999,
  165.    For CTR=1 To 100
  166.       Wait Vbl 
  167.    Next CTR
  168.    Fade 1 : Wait 10
  169.    
  170.    ' - STOP!
  171.    Cls 0
  172.    Screen Copy 1,0,200,320,250 To 2,0,100
  173.    Fade 1,0,$FFF,$999,
  174.    For CTR=1 To 45
  175.       Wait Vbl 
  176.    Next CTR
  177.    
  178.    ' - Flash screen to white and then fade to picture 
  179.    Screen To Front 0
  180.    Screen 1
  181.    Get Palette 0
  182.    Screen 0
  183.    W=$FFF
  184.    Palette W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W
  185.    Screen Show 0
  186.    Fade 2 To 1
  187.    
  188.    ' - Wait a bit and then remove unused stuff
  189.    Wait 100
  190.    Screen Close 1
  191.    Screen Close 2
  192.    Erase 10
  193.    
  194.    ' - Laugh etc. 
  195.    Unpack 7 To 1 : Screen Hide 1
  196.    Erase 7
  197.    Screen 0
  198.    Fade 1 : Wait 15
  199.    Screen Copy 1,0,0,640,256 To 0,0,0
  200.    Fade 1 To 1
  201.    Screen Close 1
  202.    Sam Raw 15,Start(11)+500,Length(11),14400
  203.    
  204. End Proc
  205. Procedure _END_INTRO
  206.    
  207.    ' - Load while laugh picture is displayed
  208.    Load "no-refund!:stuff/tv_screen2",14
  209.    Load "no-refund!:stuff/font",13
  210.    Fade 1
  211.    Wait 15
  212.    Erase 11
  213.    Screen Close 0
  214.    
  215. End Proc
  216.  
  217.  
  218. ' - Text printer procedures
  219. Procedure SETUP_FONT
  220.    
  221.    ' - Unpacks once only per group of text screens. 
  222.    ' - Allows us to display more than one text screen without loading.
  223.    Unpack 13 To 1
  224.    Screen Hide 1
  225.    
  226. End Proc
  227. Procedure NEW_TEXT_SCREEN[PAGE_NUM$]
  228.    
  229.    ' - This isn't a NEW text screen routine, you've seen it before.... Unless you haven't got the Awakening!  If not, WHY NOT!  
  230.    ' - (new font though)
  231.    
  232.    ' - T.V. screens 
  233.    Unpack 14 To 0
  234.    Screen Hide 0
  235.    
  236.    ' - Initialise Constants.
  237.    Dim LINE$(8)
  238.    FONT_SCREEN=1
  239.    DISPLAY_SCREEN=0
  240.    FONTX=13
  241.    FONTY=16
  242.    
  243.    ' - Initialise text positions
  244.    XDEST=63
  245.    YDEST=61
  246.    
  247.    Screen 0
  248.    Restore PAGE_NUM$
  249.    Read NUM_OF_LINES
  250.    For CTR=1 To NUM_OF_LINES
  251.       ' - Reads a page of text into the array. 
  252.       Read LINE$(CTR)
  253.    Next CTR
  254.    
  255.    ' - Main Loop. 
  256.    For CTR=1 To NUM_OF_LINES
  257.       XDEST=(320-(Len(LINE$(CTR))*FONTX))/2
  258.       ' - Writes the next line of text.
  259.       For LOP=1 To Len(LINE$(CTR))
  260.          L$=Mid$(LINE$(CTR),LOP,1)
  261.          If L$<>" "
  262.             If Asc(L$)<58
  263.                If Asc(L$)=46
  264.                   Restore "PFS"
  265.                Else 
  266.                   If Asc(L$)=39
  267.                      Restore "PAP"
  268.                   Else 
  269.                      If Asc(L$)=44
  270.                         Restore "PCM"
  271.                      Else 
  272.                         If Asc(L$)=33
  273.                            Restore "PEX"
  274.                         Else 
  275.                            If Asc(L$)=43
  276.                               Restore "PPL"
  277.                            Else 
  278.                               If Asc(L$)=47
  279.                                  Restore "PSL"
  280.                               Else 
  281.                                  If Asc(L$)=45
  282.                                     Restore "PDA"
  283.                                  Else 
  284.                                     If Asc(L$)=40
  285.                                        Restore "PLB"
  286.                                     Else 
  287.                                        If Asc(L$)=41
  288.                                           Restore "PRB"
  289.                                        Else 
  290.                                           Restore "C"+L$
  291.                                        End If 
  292.                                     End If 
  293.                                  End If 
  294.                               End If 
  295.                            End If 
  296.                         End If 
  297.                      End If 
  298.                   End If 
  299.                End If 
  300.             Else 
  301.                If Asc(L$)=63
  302.                   Restore "PQM"
  303.                Else 
  304.                   Restore "Q"+L$
  305.                End If 
  306.             End If 
  307.             Read X,Y
  308.             
  309.             ' - The X and Y are just the position, not the coordinates 
  310.             X=X*FONTX
  311.             Y=Y*FONTY
  312.             Screen Copy FONT_SCREEN,X,Y,X+FONTX,Y+FONTY To DISPLAY_SCREEN,XDEST,YDEST
  313.          End If 
  314.          ' - Move one character to the left 
  315.          Add XDEST,FONTX
  316.       Next LOP
  317.       ' - Move down a line 
  318.       Add YDEST,FONTY
  319.    Next CTR
  320.    
  321.    Palette 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  322.    Screen Show 0
  323.    
  324.    ' - Fade the screen on after all text is in place
  325.    Fade 1,0,$444,$FFF,$888,$CCC,0,0,0,0,0,0,0,0,0,0,$777
  326.    Wait 16 : Rem - WHY? 15 would do!
  327.    Shift Up 3,4,15,1
  328.    
  329.    Pop Proc
  330.    
  331.    '-  Font Data. 
  332.    QA:
  333.    Data 0,0
  334.    QB:
  335.    Data 1,0
  336.    QC:
  337.    Data 2,0
  338.    QD:
  339.    Data 3,0
  340.    QE:
  341.    Data 4,0
  342.    QF:
  343.    Data 5,0
  344.    QG:
  345.    Data 6,0
  346.    QH:
  347.    Data 7,0
  348.    QI:
  349.    Data 8,0
  350.    QJ:
  351.    Data 9,0
  352.    QK:
  353.    Data 10,0
  354.    QL:
  355.    Data 11,0
  356.    QM:
  357.    Data 12,0
  358.    QN:
  359.    Data 13,0
  360.    QO:
  361.    Data 14,0
  362.    QP:
  363.    Data 15,0
  364.    QQ:
  365.    Data 16,0
  366.    QR:
  367.    Data 17,0
  368.    QS:
  369.    Data 18,0
  370.    QT:
  371.    Data 19,0
  372.    QU:
  373.    Data 20,0
  374.    QV:
  375.    Data 21,0
  376.    QW:
  377.    Data 22,0
  378.    QX:
  379.    Data 23,0
  380.    QY:
  381.    Data 0,1
  382.    QZ:
  383.    Data 1,1
  384.    C1:
  385.    Data 2,1
  386.    C2:
  387.    Data 3,1
  388.    C3:
  389.    Data 4,1
  390.    C4:
  391.    Data 5,1
  392.    C5:
  393.    Data 6,1
  394.    C6:
  395.    Data 7,1
  396.    C7:
  397.    Data 8,1
  398.    C8:
  399.    Data 9,1
  400.    C9:
  401.    Data 10,1
  402.    C0:
  403.    Data 11,1
  404.    PAP:
  405.    Data 12,1
  406.    PCM:
  407.    Data 13,1
  408.    PFS:
  409.    Data 14,1
  410.    PEX:
  411.    Data 15,1
  412.    PQM:
  413.    Data 16,1
  414.    PPL:
  415.    Data 17,1
  416.    PDA:
  417.    Data 18,1
  418.    PSL:
  419.    Data 19,1
  420.    PLB:
  421.    Data 20,1
  422.    PRB:
  423.    Data 21,1
  424.    
  425.    
  426.    '- Text data.
  427.    
  428.    ' -- "|||||||||||||||" 
  429.    INSERT_DISK2:
  430.    Data 7
  431.    Data " "
  432.    Data "insert"
  433.    Data " "
  434.    Data "no-refund!"
  435.    Data "disk 2"
  436.    Data " "
  437.    Data "in any drive"
  438.    
  439.    ' -- "|||||||||||||||" 
  440.    INSERT_DISK1:
  441.    Data 7
  442.    Data " "
  443.    Data "insert"
  444.    Data " "
  445.    Data "no-refund!"
  446.    Data "disk 1"
  447.    Data " "
  448.    Data "in any drive"
  449.    
  450.    ' -- "|||||||||||||||" 
  451.    PAGE1:
  452.    Data 8
  453.    Data "welcome!"
  454.    Data " "
  455.    Data "to 24 hour"
  456.    Data "cybornetics t.v"
  457.    Data " "
  458.    Data "with our latest"
  459.    Data "demo called"
  460.    Data "!no-refund!"
  461.    
  462.    ' -- "|||||||||||||||" 
  463.    PAGE2:
  464.    Data 8
  465.    Data "let's get this"
  466.    Data "thing started"
  467.    Data "properly!"
  468.    Data " "
  469.    Data "you can try"
  470.    Data "the left button"
  471.    Data "to skip most"
  472.    Data "parts..."
  473.    
  474.    ' -- "|||||||||||||||" 
  475.    PAGE3:
  476.    Data 8
  477.    Data "this is the"
  478.    Data "first ever"
  479.    Data "cybornetics"
  480.    Data "TWO DISK"
  481.    Data "production!"
  482.    Data " "
  483.    Data "greetz + credz"
  484.    Data "coming up..."
  485.    
  486.    ' -- "|||||||||||||||" 
  487.    PAGE4:
  488.    Data 8
  489.    Data "mike"
  490.    Data "-solo pd-"
  491.    Data " "
  492.    Data "thanx for the"
  493.    Data "cool reviews!"
  494.    Data " "
  495.    Data "how are you"
  496.    Data "coping alone?"
  497.    
  498.    ' -- "|||||||||||||||" 
  499.    PAGE5:
  500.    Data 8
  501.    Data "overdose"
  502.    Data "(enhance)"
  503.    Data " "
  504.    Data "thanx for the"
  505.    Data "disks you sent!"
  506.    Data " "
  507.    Data "is chip ahoy 2"
  508.    Data "out yet?"
  509.    
  510.    ' -- "|||||||||||||||" 
  511.    PAGE6:
  512.    Data 8
  513.    Data "andy"
  514.    Data "(a.p.u.g.)"
  515.    Data " "
  516.    Data "keep up the"
  517.    Data "cool trading!"
  518.    Data " "
  519.    Data "r! r! r! r! r!"
  520.    Data " r! r! r! r!"
  521.    '
  522.    ' -- "|||||||||||||||" 
  523.    PAGE7:
  524.    Data 7
  525.    Data "Lloyd"
  526.    Data "(quartz prod.)"
  527.    Data " "
  528.    Data "when will we"
  529.    Data "get to see the"
  530.    Data "wheel of"
  531.    Data "fortune???"
  532.    
  533.    ' -- "|||||||||||||||" 
  534.    PAGE8:
  535.    Data 7
  536.    Data "now for some"
  537.    Data "brief credz..."
  538.    Data " "
  539.    Data "this cool music"
  540.    Data "was composed by"
  541.    Data "stew!"
  542.    Data "(as usual)"
  543.    
  544.    ' -- "|||||||||||||||" 
  545.    PAGE9:
  546.    Data 7
  547.    Data " "
  548.    Data "next up is"
  549.    Data "the menu!"
  550.    Data " "
  551.    Data "use the lmb to"
  552.    Data "choose what you"
  553.    Data "want to do."
  554.    
  555.    ' -- "|||||||||||||||" 
  556.    PAGE10:
  557.    Data 7
  558.    Data "you chose it..."
  559.    Data " "
  560.    Data "the cybornetics"
  561.    Data "questionnaire!"
  562.    Data " "
  563.    Data "lmb to answer,"
  564.    Data "rmb to leave!"
  565.    
  566.    ' -- "|||||||||||||||" 
  567.    PAGE11:
  568.    Data 7
  569.    Data "ahhh, back to"
  570.    Data "the demo!"
  571.    Data " "
  572.    Data "here's a shadow"
  573.    Data "vector and some"
  574.    Data "juicy big"
  575.    Data "vector balls"
  576.    
  577.    ' -- "|||||||||||||||" 
  578.    PAGE12:
  579.    Data 8
  580.    Data "thats it!"
  581.    Data "the last"
  582.    Data "loading screen!"
  583.    Data " "
  584.    Data "we don't care"
  585.    Data "- so there!"
  586.    Data " "
  587.    Data "cys posse 1993"
  588.    
  589.    ' -- "|||||||||||||||" 
  590.    PAGE13:
  591.    Data 7
  592.    Data "you chose the"
  593.    Data "shoot 'em up!"
  594.    Data " "
  595.    Data "nuke 'em is"
  596.    Data "now loading..."
  597.    Data " "
  598.    Data "please wait"
  599.    
  600.    ' -- "|||||||||||||||" 
  601.    PAGE14:
  602.    Data 7
  603.    Data "wait up!"
  604.    Data " "
  605.    Data "we've got to"
  606.    Data "re-load some of"
  607.    Data "the demo stuff!"
  608.    Data " "
  609.    Data "won't be long.."
  610.    '
  611.    ' -- "|||||||||||||||" 
  612.    PAGE15:
  613.    Data 7
  614.    Data " "
  615.    Data "that was cool!"
  616.    Data " "
  617.    Data "but now..."
  618.    Data " "
  619.    Data "witness"
  620.    Data "this!"
  621.    '    
  622.    ' -- "|||||||||||||||" 
  623.    PAGE16:
  624.    Data 8
  625.    Data "a disgusting"
  626.    Data "green blob..."
  627.    Data " "
  628.    Data "i hate jello!"
  629.    Data " "
  630.    Data "aw, come on!"
  631.    Data "there's always"
  632.    Data "room for jello!"
  633.    ' - Abruptly the sound ceased....... 
  634.    
  635. End Proc
  636. Procedure CLEAR_TEXT_SCREEN
  637.    
  638.    ' - Stop colour cycling and then fade screen 
  639.    ' - This should be called after all of the loads 
  640.    Shift Off 
  641.    Fade 1 : Wait 15
  642.    Cls 0
  643.    
  644. End Proc
  645. Procedure SHUT_TEXT_SCREENS
  646.    
  647.    ' - Should be called when no more text screen are required for a while.  
  648.    Screen Close 1
  649.    Screen Close 0
  650.    
  651. End Proc
  652.  
  653. ' - Main Demo procedures start here! 
  654. Procedure THE_MEANING_OF_LIFE
  655.    ' - Definition procedure for tomato anim etc.
  656.    
  657.    SETUP_FONT
  658.    NEW_TEXT_SCREEN["page1"]
  659.    ' - Load stuff 
  660.    Load "no-refund!:stuff/tomato_bobs",1
  661.    Load "no-refund!:stuff/tom_sam",5
  662.    Load "no-refund!:stuff/monty_pic",9
  663.    Load "no-refund!:stuff/monty_sam",6
  664.    Track Load "no-refund!:stuff/music",3
  665.    CLEAR_TEXT_SCREEN
  666.    SHUT_TEXT_SCREENS
  667.    _KILLER_TOMATOES_FROM_OUTER_SPACE
  668.    MONTY_PYTHON
  669.    Wait 25
  670.    
  671.    ' - OK! Roll the drums!
  672.    Track Loop On 
  673.    Track Play 3
  674. End Proc
  675. Procedure _KILLER_TOMATOES_FROM_OUTER_SPACE
  676.    
  677.    ' - Code -  Matt 
  678.    ' - GFX - Matt 
  679.    
  680.    Screen Open 0,320,100,16,Lowres
  681.    Curs Off : Cls 0 : Hide : Flash Off : Get Sprite Palette 
  682.    
  683.    Double Buffer 
  684.    Screen Display 0,,100,,100
  685.    
  686.    Bob 1,-20,50,1
  687.    Bob 2,145,-150,22
  688.    Channel 1 To Bob 1
  689.    Channel 2 To Bob 2
  690.    
  691.    
  692.    ' - Roll on tomato 
  693.    
  694.    A$="Anim 2,(2,4)(3,4)(4,4)(5,4)(6,4)(7,4)(8,4)(1,4);"
  695.    A$=A$+"M 160,0,64 ; "
  696.    
  697.    Amal 1,A$
  698.    Amal On 1
  699.    
  700.    Wait 75
  701.    
  702.    
  703.    ' -Move on foot
  704.    
  705.    B$="M 0,125,25 ;"
  706.    Amal 2,B$
  707.    Amal On 2
  708.    
  709.    Wait 18
  710.    
  711.    
  712.    ' - Squish like grape! 
  713.    
  714.    C$="Anim 1,(9,4)(10,4)(11,20)(12,4)(13,4)(14,30)(15,4)"
  715.    Amal 1,C$
  716.    Amal On 1
  717.    Wait 5
  718.    Sam Play 2
  719.    
  720.    Wait 70
  721.    
  722.    ' - Start Your Engines!
  723.    
  724.    D$="Anim 9,(23,4)(24,4);"
  725.    Amal 2,D$
  726.    
  727.    E$="Anim 1,(17,8)(21,8)(18,8)(19,4)(20,4)(19,4)(20,4)(19,4)(20,4)"
  728.    E$=E$+"(19,4)(20,4)(19,4)(20,4)(19,4)(20,4)(19,4)(20,4);"
  729.    Amal 1,E$
  730.    
  731.    Sam Loop On 
  732.    Sam Play 1
  733.    
  734.    Amal On 
  735.    Wait 80
  736.    
  737.    F$="Anim 1,(23,4)(25,4);"
  738.    Amal 2,F$
  739.    
  740.    G$="Anim 1,(19,6)(17,6)(21,6);"
  741.    Amal 1,G$
  742.    
  743.    Amal On 
  744.    Wait 18
  745.    
  746.    Sam Loop Off 
  747.    Music Off 
  748.    
  749.    Wait 15
  750.    
  751.    H$="M 0,-125,75 ;"
  752.    Amal 2,H$
  753.    Amal On 
  754.    
  755.    Wait 75
  756.    Bob Off 2
  757.    
  758.    Bob 3,320,50,26
  759.    Channel 3 To Bob 3
  760.    
  761.    I$="M -225,0,45 ; M 0,0,50 ; M -275,0,55 ;"
  762.    Amal 3,I$
  763.    
  764.    Amal On 3
  765.    Wait 200
  766.    
  767.    Fade 1 : Wait 15
  768.    Erase 1
  769.    Erase 5
  770.    Screen Close 0
  771.    
  772. End Proc
  773. Procedure MONTY_PYTHON
  774.    ' - GFX - Matt 
  775.    ' - Code - Matt
  776.    ' - SFX - Rob
  777.    
  778.    Unpack 9 To 1
  779.    Screen Hide 1
  780.    Erase 9
  781.    
  782.    Screen Open 0,320,256,32,Lowres
  783.    Curs Off : Cls 0 : Hide : Flash Off 
  784.    Palette 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  785.    
  786.    Screen Copy 1,0,0,320,256 To 0,0,0
  787.    
  788.    Wait Vbl 
  789.    Fade 1 To 1 : Wait 15
  790.    Screen Close 1
  791.    
  792.    Sam Raw 15,Start(6)+150,Length(6)-150,11000
  793.    
  794.    Shift Down 7,2,19,1
  795.    
  796.    COUNT=0
  797.    Repeat 
  798.       
  799.       For C=21 To 30
  800.          Colour C,$FF0
  801.          Wait 5
  802.          Colour C,$220
  803.       Next C
  804.       
  805.       Inc COUNT
  806.       
  807.    Until COUNT>4
  808.    
  809.    Shift Off 
  810.    Fade 1 : Wait 15
  811.    Erase 6
  812.    Screen Close 0
  813.    
  814. End Proc
  815.  
  816. ' - Eagle part 
  817. Procedure EAGLE_PART
  818.    
  819.    ' - Calling procedure for Eagle Part (?) 
  820.    
  821.    SETUP_FONT
  822.    NEW_TEXT_SCREEN["page2"]
  823.    Load "no-refund!:stuff/new_eagle",9
  824.    Load "no-refund!:stuff/cys_logo_bob",1
  825.    Wait 100
  826.    
  827.    ' - Clear second text screen 
  828.    CLEAR_TEXT_SCREEN
  829.    SHUT_TEXT_SCREENS
  830.    
  831.    ' - Start Eagle part 
  832.    SET_UP_EAGLE_SCREENS
  833.    CYS_LOGO_BOBS
  834.    VECTOR_INCONVEX[50]
  835.    GO_LANDSCAPES[5]
  836.    
  837.    ' - End Eagle part 
  838.    _CLOSE_EAGLE_SCREENS
  839. End Proc
  840. Procedure SET_UP_EAGLE_SCREENS
  841.    
  842.    ' - open Screen 2 to cover the text and get the palette  
  843.    Screen Open 2,320,130,8,Lowres
  844.    Curs Off : Cls 0 : Hide : Flash Off 
  845.    Screen Display 2,,117,320,140
  846.    
  847.    ' - Unpack the main picture (including text) 
  848.    Unpack 9 To 1
  849.    Screen Hide 1
  850.    Erase 9
  851.    Screen 2
  852.    
  853.    ' - Store the palette of screen 1 in screen 2
  854.    Get Palette 1
  855.    Screen 1
  856.    
  857.    ' - set screen 1 to black
  858.    Palette 0,0,0,0,0,0,0,0
  859.    Screen Show 1
  860.    Screen To Back 1
  861.    Screen To Front 2
  862.    
  863.    ' - Make screen 1 fade on with correct colours 
  864.    Fade 1 To 2
  865.    Wait 15
  866.    
  867.    ' - Open screen 0 as 4 colour
  868.    Screen Open 0,320,130,4,Lowres
  869.    Curs Off : Cls 0 : Hide : Flash Off 
  870.    
  871.    ' - Position it over the font (on screen 1)
  872.    Screen Display 0,,117,320,140
  873.    Double Buffer 
  874.    Screen To Front 0
  875.    
  876.    ' - close the 8 colour screen 2
  877.    Screen Close 2
  878.    
  879. End Proc
  880. Procedure CYS_LOGO_BOBS
  881.    ' - Code - Matt
  882.    ' - GFX - Matt 
  883.    
  884.    ' - Big Bobs! - NOT! 
  885.    
  886.    ' - Paste message at bottom
  887.    For Y=0 To 27 Step 2
  888.       Screen Copy 1,0,84+Y,320,84+Y+1 To 1,0,218+Y
  889.       Wait Vbl 
  890.    Next Y
  891.    For Y=27 To 0 Step -2
  892.       Screen Copy 1,0,84+Y,320,84+Y+1 To 1,0,218+Y
  893.       Wait Vbl 
  894.    Next Y
  895.    ' - That was quite nice wasn't it! 
  896.    
  897.    Screen 0
  898.    MAKE_RAINBOW
  899.    Colour 1,$F
  900.    
  901.    For A=0 To 11
  902.       Channel A To Bob A+1
  903.    Next A
  904.    
  905.    For B=1 To 12
  906.       Bob B,30,95,1
  907.    Next B
  908.    
  909.    ' - Assign the movement to the bobs on channels 0 to 15. This uses AMAL  
  910.    ' - and MOVE (X and Y) strings.
  911.    For C=0 To 11
  912.       Amal C,"Loop : M 250,-50,150 ; M -250,50,150 ; J L"
  913.       
  914.       M$="(1,-5,3)(1,-4,3)(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3)(1,4,3)(1,5,3)"
  915.       M$=M$+"(1,5,3)(1,4,3)(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3)(1,-4,3)(1,-5,3)L"
  916.       Move Y C,M$
  917.       Wait 5
  918.       Move X C,M$
  919.       Move On C
  920.       Amal On C
  921.       
  922.    Next C
  923.    
  924.    ' - Determining how long you suffer for..... 
  925.    COUNTER=0
  926.    TIME=250
  927.    Repeat 
  928.       Inc COUNTER
  929.       Wait Vbl 
  930.    Until COUNTER=TIME or Mouse Key=1
  931.    Amal Off : Move Off 
  932.    
  933.    ' - Move the bobs off to the left
  934.    X$=" M 320,0,20 "
  935.    For MB=0 To 11
  936.       Amal MB,X$
  937.       Amal On MB
  938.    Next MB
  939.    
  940.    ' - Clean up 
  941.    Wait 30
  942.    Amal Off : Move Off 
  943.    Bob Off 
  944.    Erase 1
  945.    Rainbow Del 
  946.    Wait Vbl 
  947.    
  948. End Proc
  949. Procedure MAKE_RAINBOW
  950.    Rem   Created with RainMaker 2.0 
  951.    Rem   By Dan Murrell Jr. - Thanks Dan! 
  952.    NUM_LINES=130
  953.    Set Rainbow 0,1,NUM_LINES+1,"","",""
  954.    Restore _RAINBOW_DATA : 
  955.    For COUNTER=0 To NUM_LINES
  956.       Read SCANLINE
  957.       Rain(0,COUNTER)=SCANLINE
  958.    Next COUNTER
  959.    
  960.    _RAINBOW_DATA:
  961.    Data $F0,$E0,$E0,$E0,$E0,$E0,$E0,$E0,$E0,$E0,$D0,$D0,$D0,$D0,$D0,$D0
  962.    Data $D0,$D0,$D0,$D0,$C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0,$B0,$B0
  963.    Data $B0,$B0,$B0,$B0,$B0,$B0,$B0,$B0,$A0,$A0,$A0,$A0,$A0,$A0,$A0,$A0
  964.    Data $A0,$A0,$90,$90,$90,$90,$90,$90,$90,$90,$90,$90,$80,$80,$80,$80
  965.    Data $80,$80,$80,$80,$80,$80,$70,$70,$70,$70,$70,$70,$70,$70,$70,$70
  966.    Data $60,$60,$60,$60,$60,$60,$60,$60,$60,$60,$50,$50,$50,$50,$50,$50
  967.    Data $50,$50,$50,$50,$40,$40,$40,$40,$40,$40,$40,$40,$40,$40,$30,$30
  968.    Data $30,$30,$30,$30,$30,$30,$30,$30,$20,$20,$20,$20,$20,$20,$20,$20
  969.    Data $20,$20,$10,$10,$10,$10,$10,$10,$10,$10,$10,$10,$10
  970.    Rainbow 0,1,118,NUM_LINES
  971.    View 
  972. End Proc
  973. Procedure VECTOR_INCONVEX[TIME]
  974.    ' - Code - Dug 
  975.    
  976.    ' - Paste message at bottom
  977.    For Y=0 To 27 Step 2
  978.       Screen Copy 1,0,119+Y,320,119+Y+1 To 1,0,218+Y
  979.       Wait Vbl 
  980.    Next Y
  981.    For Y=27 To 0 Step -2
  982.       Screen Copy 1,0,119+Y,320,119+Y+1 To 1,0,218+Y
  983.       Wait Vbl 
  984.    Next Y
  985.    
  986.    Screen 0
  987.    Autoback 0
  988.    Degree 
  989.    Palette 0,$4,$7,0
  990.    
  991.    _MAX=4*10 : Rem                      No. of points-1 (because 0's included)  
  992.    Dim FX(_MAX),FY(_MAX),FZ(_MAX) : Rem                    constant 3d coords  
  993.    Dim X(_MAX),Y(_MAX),Z(_MAX) : Rem              used/recalculated 3d coords 
  994.    Dim SX(_MAX),SY(_MAX) : Rem                  2d coords (from the 3d coords)  
  995.    Dim _SORTED(20,4) : Rem   n surfaces with 4 points +1 ink each   
  996.    
  997.    XO=160 : Rem x,y origin (middle of screen)
  998.    YO=70
  999.    DVP=300 : Rem Vanishing point
  1000.    
  1001.    THETA=0 : Rem         - Rotation about   X axis
  1002.    PHI=0 : Rem           - Rotation about      Y axis   
  1003.    GAMMA=0 : Rem         - Rotation about         Z axis
  1004.    XSPEED=5 : Rem        - Speed of rotation 
  1005.    YSPEED=15
  1006.    ZSPEED=10
  1007.    
  1008.    NUM_OBJECTS=1 : Rem   - Max no. of objects 
  1009.    OBJECT=1 : Rem        - Number of next object to show (1.. NUM_OBJECTS)   
  1010.    NUMSURFACES=0 : Rem No. of surfaces to object
  1011.    
  1012.    Gosub SETUP_RAINBOW
  1013.    Gosub SETUP_OBJECT
  1014.    COUNTER=0
  1015.    Repeat 
  1016.       Screen Swap : Wait Vbl 
  1017.       Cls 0
  1018.       Gosub ANGLES
  1019.       Gosub ROT_ALL
  1020.       Gosub _SORT_SURFACES
  1021.       Gosub COORD_CONV
  1022.       Gosub DRW_OBJECT
  1023.       Inc COUNTER
  1024.    Until COUNTER=TIME or Mouse Key=1
  1025.    
  1026.    ' - Clean up 
  1027.    Fade 1 : Wait 15
  1028.    Rainbow Del 
  1029.    Autoback 2
  1030.    Synchro On 
  1031.    Cls 0
  1032.    Pop Proc
  1033.    
  1034.    
  1035.    SETUP_RAINBOW:
  1036.    Set Rainbow 0,3,4096,"","",""
  1037.    RGB=0
  1038.    Y=0
  1039.    WIDTH=5
  1040.    RGB_ADD=$110
  1041.    RGB_SUB=-$110
  1042.    Repeat 
  1043.       For L=1 To 15
  1044.          For L1=0 To WIDTH
  1045.             Rain(0,Y)=RGB
  1046.             Inc Y
  1047.          Next L1
  1048.          Add RGB,RGB_ADD
  1049.       Next L
  1050.       For L=1 To 15
  1051.          For L1=0 To WIDTH
  1052.             Rain(0,Y)=RGB
  1053.             Inc Y
  1054.          Next L1
  1055.          Add RGB,RGB_SUB
  1056.       Next L
  1057.    Until Y>260
  1058.    Rainbow 0,3,117,130
  1059.    Return 
  1060.    
  1061.    
  1062.    ANGLES:
  1063.    Add GAMMA,ZSPEED,0 To 360-ZSPEED
  1064.    Add PHI,YSPEED,0 To 360-YSPEED
  1065.    Add THETA,XSPEED,0 To 360-XSPEED
  1066.    Return 
  1067.    
  1068.    
  1069.    ' -- Rotate all points through the specified angle 
  1070.    ROT_ALL:
  1071.    For L=0 To NUMPOINTS-1
  1072.       
  1073.       ' rotate about x 
  1074.       X1=FX(L)
  1075.       Y1=(FY(L)*Cos(THETA))-(FZ(L)*Sin(THETA))
  1076.       Z1=(FY(L)*Sin(THETA))+(FZ(L)*Cos(THETA))
  1077.       
  1078.       ' rotate about y 
  1079.       X2=(X1*Cos(PHI))+(Z1*Sin(PHI))
  1080.       Y2=Y1
  1081.       Z2=-(X1*Sin(PHI))+(Z1*Cos(PHI))
  1082.       
  1083.       ' rotate about z 
  1084.       X(L)=(X2*Cos(GAMMA))-(Y2*Sin(GAMMA))
  1085.       Y(L)=(X2*Sin(GAMMA))+(Y2*Cos(GAMMA))
  1086.       Z(L)=Z2
  1087.    Next L
  1088.    Return 
  1089.    
  1090.    
  1091.    ' -- Convert the 3d coords into 2d coords (allows for relocation of object)
  1092.    COORD_CONV:
  1093.    For L=0 To NUMPOINTS-1
  1094.       ZDIV=Z(L)+OBJECTX+DVP
  1095.       SX(L)=XO+((X(L)+OBJECTX)*DVP)/ZDIV
  1096.       SY(L)=YO+((Y(L)+OBJECTY)*DVP)/ZDIV
  1097.    Next L
  1098.    Return 
  1099.    
  1100.    ' -- Sort the surfaces to give the object a hidden surface look. 
  1101.    _SORT_SURFACES:
  1102.    Repeat 
  1103.       _SWAP=False
  1104.       For L=0 To NUMSURFACES-1
  1105.          P1Z=Z(_SORTED(L,0))
  1106.          P2Z=Z(_SORTED(L,1))
  1107.          P3Z=Z(_SORTED(L,2))
  1108.          P4Z=Z(_SORTED(L,3))
  1109.          P1NZ=Z(_SORTED(L+1,0))
  1110.          P2NZ=Z(_SORTED(L+1,1))
  1111.          P3NZ=Z(_SORTED(L+1,2))
  1112.          P4NZ=Z(_SORTED(L+1,3))
  1113.          S=0
  1114.          If P1Z<P1NZ or P1Z<P2NZ or P1Z<P3NZ or P1Z<P4NZ
  1115.             Inc S
  1116.          End If 
  1117.          If P2Z<P1NZ or P2Z<P2NZ or P2Z<P3NZ or P2Z<P4NZ
  1118.             Inc S
  1119.          End If 
  1120.          If P3Z<P1NZ or P3Z<P2NZ or P3Z<P3NZ or P3Z<P4NZ
  1121.             Inc S
  1122.          End If 
  1123.          If P4Z<P1NZ or P4Z<P2NZ or P4Z<P3NZ or P4Z<P4NZ
  1124.             Inc S
  1125.          End If 
  1126.          If S=4
  1127.             Swap _SORTED(L,0),_SORTED(L+1,0) : Rem Swap 3d coords 
  1128.             Swap _SORTED(L,1),_SORTED(L+1,1)
  1129.             Swap _SORTED(L,2),_SORTED(L+1,2)
  1130.             Swap _SORTED(L,3),_SORTED(L+1,3)
  1131.             Swap _SORTED(L,4),_SORTED(L+1,4) : Rem Swap ink colour
  1132.             _SWAP=True
  1133.          End If 
  1134.       Next L
  1135.    Until _SWAP=False
  1136.    Return 
  1137.    
  1138.    
  1139.    DRW_OBJECT:
  1140.    
  1141.    ' -- Read the connections and join the dots! 
  1142.    For L=0 To NUMSURFACES
  1143.       P1=_SORTED(L,0)
  1144.       P2=_SORTED(L,1)
  1145.       P3=_SORTED(L,2)
  1146.       P4=_SORTED(L,3)
  1147.       I=_SORTED(L,4)
  1148.       Ink I
  1149.       Polygon SX(P1),SY(P1) To SX(P2),SY(P2) To SX(P3),SY(P3) To SX(P4),SY(P4) To SX(P1),SY(P1)
  1150.    Next L
  1151.    Return 
  1152.    
  1153.    
  1154.    SETUP_OBJECT:
  1155.    
  1156.    ' -- Simple - just read in the coords for the object ( -3d ) 
  1157.    Restore "OBJECT"+Str$(OBJECT)-" "
  1158.    Read NUMPOINTS
  1159.    For L=0 To NUMPOINTS-1
  1160.       Read FX(L),FY(L),FZ(L)
  1161.    Next L
  1162.    Restore "CONNECT"+Str$(OBJECT)-" "
  1163.    Read NUMC : Rem       No of connections is effectively the no. of surfaces 
  1164.    S=0
  1165.    For L=0 To NUMC-1
  1166.       Read P1,P2,P3,P4,_INK
  1167.       _SORTED(S,0)=P1
  1168.       _SORTED(S,1)=P2
  1169.       _SORTED(S,2)=P3
  1170.       _SORTED(S,3)=P4
  1171.       _SORTED(S,4)=_INK
  1172.       Inc S
  1173.    Next L
  1174.    NUMSURFACES=NUMC-1
  1175.    Return 
  1176.    
  1177.    
  1178.    OBJECT1:
  1179.    Data 16
  1180.    Data -30,30,-30
  1181.    Data 30,30,-30
  1182.    Data 30,-30,-30
  1183.    Data -30,-30,-30
  1184.    Data -20,20,-40
  1185.    Data 20,20,-40
  1186.    Data 20,-20,-40
  1187.    Data -20,-20,-40
  1188.    Data -30,30,30
  1189.    Data 30,30,30
  1190.    Data 30,-30,30
  1191.    Data -30,-30,30
  1192.    Data -20,20,40
  1193.    Data 20,20,40
  1194.    Data 20,-20,40
  1195.    Data -20,-20,40
  1196.    
  1197.    ' p1,p2,p3,p4, ink colour
  1198.    CONNECT1:
  1199.    Data 6
  1200.    Data 0,8,11,3,1
  1201.    Data 0,8,9,1,2
  1202.    Data 1,9,10,2,1
  1203.    Data 2,10,11,3,2
  1204.    Data 4,5,6,7,3
  1205.    Data 12,13,14,15,3
  1206.    
  1207. End Proc
  1208. Procedure GO_LANDSCAPES[SCAPES]
  1209.    ' - Code - Dug 
  1210.    
  1211.    ' - Paste message at bottom
  1212.    For Y=0 To 33 Step 2
  1213.       Screen Copy 1,0,153+Y,320,153+Y+1 To 1,0,218+Y
  1214.       Wait Vbl 
  1215.    Next Y
  1216.    For Y=33 To 0 Step -2
  1217.       Screen Copy 1,0,153+Y,320,153+Y+1 To 1,0,218+Y
  1218.       Wait Vbl 
  1219.    Next Y
  1220.    
  1221.    ' - Define array (uses a lot of memory)
  1222.    Dim Z(50,50),X(50,50),Y(50,50)
  1223.    
  1224.    ' - Open screen 2 so we can cover the font while we close
  1225.    ' - screen 0 to remove the double buffer 
  1226.    Screen Open 2,320,130,4,Lowres
  1227.    Flash Off : Curs Off : Cls 0 : Hide 
  1228.    Screen Display 2,,117,320,130
  1229.    Screen To Front 2
  1230.    Screen Close 0
  1231.    
  1232.    Screen Open 0,320,130,4,Lowres
  1233.    Curs Off : Cls 0 : Hide : Flash Off 
  1234.    Screen Display 0,,117,320,130
  1235.    Screen To Front 0
  1236.    Screen Close 2
  1237.    
  1238.    ' - Define constants 
  1239.    NC=20
  1240.    NR=12
  1241.    RANDS=15
  1242.    BASE=-5
  1243.    SEALEVEL=0
  1244.    X=120
  1245.    Y=60
  1246.    COUNTER=0
  1247.    
  1248.    ' - Main loop
  1249.    M_PRESSED=False
  1250.    Repeat 
  1251.       Gosub CALCULATE_LANDSCAPE
  1252.       Gosub DRW_LANDSCAPE
  1253.       Inc COUNTER
  1254.    Until COUNTER=SCAPES or Mouse Key=1 or M_PRESSED
  1255.    
  1256.    Wait 30
  1257.    Fade 1 : Wait 15
  1258.    
  1259.    ' - End of part
  1260.    Pop Proc
  1261.    
  1262.    
  1263.    CALCULATE_LANDSCAPE:
  1264.    
  1265.    XADD=0
  1266.    For R=0 To NR
  1267.       For C=0 To NC
  1268.          If C=0 and R=0 : Rem Initial peek (Z not determined by any neighbours)
  1269.             Z(R,C)=BASE+Rnd(RANDS)
  1270.          Else 
  1271.             If C=0 : Rem One neighbour above
  1272.                Z1=Z(R-1,C)
  1273.                Z(R,C)=Z1-RANDS/2+Rnd(RANDS)
  1274.             Else 
  1275.                If R=0 : Rem One neighbour to the left
  1276.                   Z1=Z(R,C-1)
  1277.                   Z(R,C)=Z1-RANDS/2+Rnd(RANDS)
  1278.                Else 
  1279.                   Rem Two neighbours - left and above
  1280.                   Z1=Z(R-1,C)
  1281.                   Z2=Z(R,C-1)
  1282.                   Z(R,C)=(Z1+Z2)/2-RANDS/2+Rnd(RANDS)
  1283.                End If 
  1284.             End If 
  1285.          End If 
  1286.          
  1287.          If Mouse Key=1
  1288.             M_PRESSED=True
  1289.             Exit 2
  1290.          End If 
  1291.          
  1292.       Next C
  1293.    Next R
  1294.    
  1295.    For R=0 To NR
  1296.       For C=0 To NC
  1297.          If Z(R,C)<SEALEVEL : Rem Sea level?   
  1298.             Z(R,C)=0
  1299.          End If 
  1300.          
  1301.          X(R,C)=C*10+XADD : Rem Adjust X/Y coords
  1302.          Y(R,C)=R*5-Z(R,C)
  1303.          
  1304.          If Mouse Key=1
  1305.             M_PRESSED=True
  1306.             Exit 2
  1307.          End If 
  1308.       Next C
  1309.       Add XADD,-10
  1310.    Next R
  1311.    
  1312.    Fade 1 : Wait 15
  1313.    Cls 0
  1314.    Colour 0,0
  1315.    Colour 1,$843
  1316.    Colour 2,$F84
  1317.    Return 
  1318.    
  1319.    
  1320.    DRW_LANDSCAPE:
  1321.    For R=1 To NR
  1322.       For C=1 To NC
  1323.          X1=X(R-1,C-1)+X
  1324.          Y1=Y(R-1,C-1)+Y
  1325.          X2=X(R-1,C)+X
  1326.          Y2=Y(R-1,C)+Y
  1327.          X3=X(R,C)+X
  1328.          Y3=Y(R,C)+Y
  1329.          X4=X(R,C-1)+X
  1330.          Y4=Y(R,C-1)+Y
  1331.          Ink 2
  1332.          Polygon X1,Y1 To X2,Y2 To X3,Y3 To X4,Y4 To X1,Y1
  1333.          Ink 1 : Polyline X1,Y1 To X2,Y2 To X3,Y3 To X4,Y4 To X1,Y1
  1334.          If Mouse Key=1
  1335.             M_PRESSED=True
  1336.             Exit 2
  1337.          End If 
  1338.       Next C
  1339.    Next R
  1340.    Return 
  1341.    
  1342. End Proc
  1343. Procedure _CLOSE_EAGLE_SCREENS
  1344.    
  1345.    ' - Fade and close screens 1 and 0 
  1346.    Screen 1
  1347.    Fade 1 : Wait 15
  1348.    Screen Close 1
  1349.    
  1350.    Screen 0
  1351.    Fade 1 : Wait 15
  1352.    Screen Close 0
  1353.    
  1354. End Proc
  1355.  
  1356. ' - Fit Time and Equalizer and Lines 
  1357. Procedure FIT_EQU_LINES
  1358.    
  1359.    ' - Calling procedure for Fit, Equalizer and Bob lines 
  1360.    
  1361.    SETUP_FONT
  1362.    NEW_TEXT_SCREEN["page3"]
  1363.    Load "no-refund!:stuff/circles",1
  1364.    Load "no-refund!:stuff/equalizer_pic",9
  1365.    Wait 100
  1366.    CLEAR_TEXT_SCREEN
  1367.    SHUT_TEXT_SCREENS
  1368.    
  1369.    ' - Call PARTS 
  1370.    FIT_TIME[400]
  1371.    THE_EQUALIZER[4500]
  1372.    _BOB_BOXES[1008]
  1373.    
  1374. End Proc
  1375. Procedure FIT_TIME[TIME]
  1376.    ' - Code - Matt
  1377.    ' - GFX - Matt 
  1378.    
  1379.    ' - Open two 2 colour screens
  1380.    Screen Open 0,500,400,2,Lowres
  1381.    Palette 0,0
  1382.    Curs Off : Cls 0 : Hide : Flash Off 
  1383.    Screen Offset 0,90,75
  1384.    Autoback 0
  1385.    
  1386.    Screen Open 1,500,400,2,Lowres
  1387.    Palette 0,0
  1388.    Curs Off : Cls 0 : Hide : Flash Off 
  1389.    Screen Offset 1,90,75
  1390.    Autoback 0
  1391.    
  1392.    ' - Paste the circles on screen 0  
  1393.    Screen To Front 0
  1394.    Screen 0
  1395.    For Y=0 To 468 Step 52
  1396.       X=0
  1397.       For _ROW=1 To 12
  1398.          Paste Bob X,Y,1
  1399.          X=X+52
  1400.       Next _ROW
  1401.    Next Y
  1402.    
  1403.    ' - And on screen 1
  1404.    Screen To Front 1
  1405.    Screen 1
  1406.    For Y=0 To 468 Step 52
  1407.       X=0
  1408.       For _ROW=1 To 12
  1409.          Paste Bob X,Y,1
  1410.          X=X+52
  1411.       Next _ROW
  1412.    Next Y
  1413.    
  1414.    Screen To Back 1
  1415.    
  1416.    Dual Playfield 0,1
  1417.    Wait Vbl 
  1418.    
  1419.    ' - Set up the lovely flash
  1420.    Screen 0
  1421.    Flash 1,"(eef,1)(aaf,1)"
  1422.    Flash 9,"(aaf,1)(eef,1)"
  1423.    Flash 0,"(f00,1)(000,1)"
  1424.    
  1425.    ' - Define the move string 
  1426.    M$="(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3)"
  1427.    M$=M$+"(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3)L"
  1428.    
  1429.    N$="(1,4,3)(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3)(1,-4,3)"
  1430.    N$=N$+"(1,-4,3)(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3)(1,4,3)L"
  1431.    
  1432.    Channel 0 To Screen Offset 0
  1433.    Channel 1 To Screen Offset 1
  1434.    
  1435.    ' - Start the screens moving with a sligh pause between each 
  1436.    Move Y 0,N$
  1437.    Move X 1,N$
  1438.    Move On 0
  1439.    Move On 1
  1440.    
  1441.    Wait 30
  1442.    
  1443.    Move X 0,N$
  1444.    Move Y 1,N$
  1445.    Move On 0
  1446.    Move On 1
  1447.    
  1448.    ' - Main loop
  1449.    COUNTER=0
  1450.    Repeat 
  1451.       Screen 0
  1452.       Screen Swap 
  1453.       Screen 1
  1454.       Screen Swap 
  1455.       
  1456.       Wait Vbl 
  1457.       
  1458.       Screen 0
  1459.       Synchro 
  1460.       Screen 1
  1461.       Synchro 
  1462.       Inc COUNTER
  1463.    Until COUNTER>=TIME or Mouse Key=1
  1464.    
  1465.    ' - Fade the screens and clean up
  1466.    Screen 0
  1467.    Flash Off 
  1468.    Fade 1 : Wait 15
  1469.    Move Off 
  1470.    Synchro On 
  1471.    Autoback 2
  1472.    Bob Update On 
  1473.    
  1474.    Screen 1
  1475.    Autoback 2
  1476.    Bob Update On 
  1477.    Screen Close 0
  1478.    Screen Close 1
  1479.    Erase 1
  1480.    
  1481. End Proc
  1482. Procedure THE_EQUALIZER[TIME]
  1483.    ' - Code - Rob 
  1484.    ' - GFX - Rob
  1485.    
  1486.    ' - If you have a problem, 
  1487.    ' - If no one else can help
  1488.    ' - And if you can't find the A-Team 
  1489.    ' - Maybe YOU should hire THE EQUALIZER! (aka THE OLD GIT) 
  1490.    
  1491.    ' - Open small screen to store palette 
  1492.    Screen Open 0,20,20,8,Lowres
  1493.    Curs Off : Cls 0 : Flash Off : Hide 
  1494.    Palette 0,0,0,0,0,0,0,0
  1495.    
  1496.    ' - Unpack equalizer screen
  1497.    Unpack 9 To 1
  1498.    Screen Hide 1
  1499.    Erase 9
  1500.    
  1501.    ' - Store the palette on screen 0
  1502.    Screen 0
  1503.    Get Palette 1
  1504.    
  1505.    ' - Set all colours to black and then show screen
  1506.    Screen 1
  1507.    Palette 0,0,0,0,0,0,0,0
  1508.    Screen Show 1
  1509.    
  1510.    ' - Create rainbow for equalizer bar 
  1511.    Set Rainbow 0,5,257,"","",""
  1512.    For CTR=0 To 256
  1513.       Rain(0,CTR)=$0
  1514.    Next CTR
  1515.    Rainbow 0,0,40,256
  1516.    
  1517.    ' - Fade the screen up from the palette stored on 0
  1518.    Fade 1 To 0
  1519.    Wait 15
  1520.    Screen Close 0
  1521.    
  1522.    
  1523.    ' - Move the rainbow about a bit 
  1524.    COUNTER=0
  1525.    CURRENT=256
  1526.    RED=70
  1527.    Repeat 
  1528.       Rainbow 0,0,60,256
  1529.       If Vumeter(2)<10
  1530.          ' - Music is off 
  1531.          If CURRENT<256
  1532.             Rain(0,CURRENT)=$0
  1533.             Inc CURRENT
  1534.             PAUSE[20]
  1535.          End If 
  1536.       Else 
  1537.          ' - Music is on
  1538.          If CURRENT>RED
  1539.             For Y=CURRENT To RED Step -1
  1540.                ' - Draw green 
  1541.                Rain(0,Y)=$B0
  1542.             Next Y
  1543.             CURRENT=RED
  1544.             For Y=CURRENT To 1 Step -1
  1545.                ' - Draw red 
  1546.                Rain(0,Y)=$B00
  1547.             Next Y
  1548.             CURRENT=1
  1549.          Else 
  1550.             If CURRENT>1
  1551.                For Y=CURRENT To 1 Step -1
  1552.                   ' - Draw red 
  1553.                   Rain(0,Y)=$B00
  1554.                Next Y
  1555.                CURRENT=1
  1556.             End If 
  1557.          End If 
  1558.          PAUSE[5]
  1559.       End If 
  1560.       Inc COUNTER
  1561.    Until COUNTER=TIME or Mouse Key=1
  1562.    
  1563.    For Y=CURRENT To 256
  1564.       View 
  1565.       Rain(0,Y)=$0
  1566.    Next Y
  1567.    
  1568.    Fade 1 : Wait 15
  1569.    Rainbow Del 
  1570.    Screen Close 1
  1571.    
  1572.    ' - END! 
  1573.    
  1574. End Proc
  1575. Procedure PAUSE[TIME]
  1576.    ' - When a wait 1 is too long you need - SUPER PAUSE!
  1577.    For CTR=0 To TIME
  1578.       ' - Very complicated!
  1579.    Next CTR
  1580. End Proc
  1581. Procedure _BOB_BOXES[TIME]
  1582.    ' - Code - Matt & Rob
  1583.    
  1584.    Screen Open 0,320,256,2,Lowres
  1585.    Curs Off : Cls 0 : Flash Off : Hide : Cls 0
  1586.    
  1587.    ' - Set ink colour to Dark blue and background to Black
  1588.    Palette 0,$44D
  1589.    Gr Writing 2
  1590.    Ink 1
  1591.    Synchro Off 
  1592.    
  1593.    ' - Setup bobs 
  1594.    For B=1 To 4
  1595.       Channel B To Bob B
  1596.    Next B
  1597.    
  1598.    Bob 1,100,80,0
  1599.    Bob 2,200,80,0
  1600.    Bob 3,200,180,0
  1601.    Bob 4,100,180,0
  1602.    
  1603.    ' - Define Bob Movement string 
  1604.    M$="(1,-6,3)(1,-5,3)(1,-4,3)(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3)(1,4,3)(1,5,3)(1,6,3) "
  1605.    M$=M$+"(1,6,3)(1,5,3)(1,4,3)(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3)(1,-4,3)(1,-5,3)(1,-6,3)L"
  1606.    
  1607.    N$="(1,-7,3)(1,-6,3)(1,-5,3)(1,-4,3)(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3)(1,4,3)(1,5,3)(1,6,3)(1,7,3)"
  1608.    N$=N$+"(1,7,3)(1,6,3)(1,5,3)(1,4,3)(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3)(1,-4,3)(1,-5,3)(1,-6,3)(1,-7,3)L"
  1609.    
  1610.    ' - Start movement (with delay)
  1611.    Move X 1,M$
  1612.    Move X 2,N$
  1613.    Move On 
  1614.    Wait 15
  1615.    
  1616.    Move Y 1,M$
  1617.    Move Y 2,N$
  1618.    Move On 
  1619.    Wait 15
  1620.    
  1621.    Move X 3,M$
  1622.    Move X 4,N$
  1623.    Move On 
  1624.    Wait 15
  1625.    
  1626.    Move Y 3,M$
  1627.    Move Y 4,N$
  1628.    Move On 
  1629.    
  1630.    ' - Main loop - until time is up or mouse button is pressed  
  1631.    TIME_COUNTER=0
  1632.    Repeat 
  1633.       
  1634.       ' - Define variables 
  1635.       X1=X Bob(1)
  1636.       Y1=Y Bob(1)
  1637.       X2=X Bob(2)
  1638.       Y2=Y Bob(2)
  1639.       X3=X Bob(3)
  1640.       Y3=Y Bob(3)
  1641.       X4=X Bob(4)
  1642.       Y4=Y Bob(4)
  1643.       
  1644.       ' - Draw lines and boxes (comment the others out to see what each does)
  1645.       Polyline X1,Y1 To X2,Y2 To X3,Y3 To X4,Y4 To X1,Y1
  1646.       Box X Bob(1),Y Bob(1) To X Bob(2),Y Bob(2)
  1647.       Box X Bob(2),Y Bob(2) To X Bob(3),Y Bob(3)
  1648.       Box X Bob(3),Y Bob(3) To X Bob(4),Y Bob(4)
  1649.       Box X Bob(4),Y Bob(4) To X Bob(1),Y Bob(1)
  1650.       '
  1651.       Synchro 
  1652.       Inc TIME_COUNTER
  1653.    Until TIME_COUNTER=TIME or Mouse Key=1
  1654.    
  1655.    ' - Clean up 
  1656.    Fade 1 : Wait 15
  1657.    Bob Off 
  1658.    Move Off 
  1659.    Synchro On 
  1660.    
  1661.    Screen Close 0
  1662.    
  1663. End Proc
  1664.  
  1665. ' - Dot cubes
  1666. Procedure FIRST_DOT_CUBE
  1667.    
  1668.    ' - Calling procedure for Dot cubes
  1669.    
  1670.    SETUP_FONT
  1671.    NEW_TEXT_SCREEN["page4"]
  1672.    Load "no-refund!:stuff/dot_cube_pic",8
  1673.    Load "no-refund!:stuff/new_cube",6
  1674.    CLEAR_TEXT_SCREEN
  1675.    SHUT_TEXT_SCREENS
  1676.    
  1677.    ' - Call PARTS 
  1678.    _DOT_CUBE[8,6]
  1679.    _RANDOM_SCR_FILL
  1680. End Proc
  1681. Procedure COOL_DOT_CUBE
  1682.    
  1683.    ' - Calling procedure for Dot cubes
  1684.    
  1685.    SETUP_FONT
  1686.    NEW_TEXT_SCREEN["page15"]
  1687.    Load "no-refund!:stuff/cube_restrict_pic",10
  1688.    Load "no-refund!:stuff/cube_restrict",7
  1689.    CLEAR_TEXT_SCREEN
  1690.    SHUT_TEXT_SCREENS
  1691.    
  1692.    ' - Call PART
  1693.    _DOT_CUBE[10,7]
  1694.    _RANDOM_SCR_FILL
  1695.    
  1696. End Proc
  1697. Procedure _DOT_CUBE[PIC,PATH]
  1698.    ' - Code - Dug 
  1699.    ' - Gfx - Matt 
  1700.    
  1701.    ' - Setup background graphics
  1702.    Unpack PIC To 1
  1703.    Palette 0,0
  1704.    Erase PIC
  1705.    
  1706.    ' - Open screen for cube 
  1707.    Screen Open 0,320,256,2,Lowres
  1708.    Flash Off : Curs Off : Cls 0 : Hide 
  1709.    Double Buffer 
  1710.    Autoback 0
  1711.    
  1712.    ' - Set dual playfield 
  1713.    Screen To Front 1
  1714.    Screen 0
  1715.    Wait Vbl 
  1716.    Dual Playfield 0,1
  1717.    Wait Vbl 
  1718.    Palette 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1719.    
  1720.    ' - Fade it on 
  1721.    Screen 0
  1722.    Fade 1,$12,$DDF,,,,,,,0,$23
  1723.    Wait 15
  1724.    
  1725.    NUM_FRAMES=200
  1726.    NUM_POINTS=125
  1727.    
  1728.    _OFFSET=0
  1729.    For F=1 To NUM_FRAMES : Rem Do all of 36 frames one by one.. then repeat 
  1730.       Screen Swap : Wait Vbl 
  1731.       Cls 0
  1732.       Gosub _DO_SINGLE_PLT
  1733.       Exit If Mouse Key=1
  1734.    Next F
  1735.    Erase PATH
  1736.    
  1737.    Pop Proc
  1738.    
  1739.    _DO_SINGLE_PLT:
  1740.    For P=1 To NUM_POINTS : Rem 36 coords of x,y 
  1741.       SXN=Deek(Start(PATH)+_OFFSET) : Add _OFFSET,2
  1742.       SYN=Deek(Start(PATH)+_OFFSET) : Add _OFFSET,2
  1743.       Plot SXN,SYN
  1744.    Next P
  1745.    Return 
  1746.    
  1747.    ' Hmmm, That wasn't very complicated for a 125 point dot cube! 
  1748.    
  1749. End Proc
  1750. Procedure _RANDOM_SCR_FILL
  1751.    ' - Code - Matt
  1752.    
  1753.    Screen 0
  1754.    Fade 2,,,,,,,,,,$DDF
  1755.    Screen 1
  1756.    Ink 9
  1757.    X=160
  1758.    Y=125
  1759.    For CTR=0 To 55
  1760.       
  1761.       X1=Rnd(250)
  1762.       Y1=Rnd(200)
  1763.       X2=Rnd(250)
  1764.       Y2=Rnd(200)
  1765.       X3=Rnd(250)
  1766.       Y3=Rnd(200)
  1767.       X4=Rnd(250)
  1768.       Y4=Rnd(200)
  1769.       Bar X+X1,Y+Y1 To X+X1+100,Y+Y1+100
  1770.       Bar X-X2,Y-Y2 To X-X2+100,Y-Y2+100
  1771.       Bar X+X3,Y-Y3 To X+X3+100,Y-Y3+100
  1772.       Bar X-X4,Y+Y4 To X-X4+100,Y+Y4+100
  1773.       
  1774.       Wait Vbl 
  1775.       
  1776.    Next CTR
  1777.    
  1778.    Wait 30
  1779.    Screen 0
  1780.    Fade 1 : Wait 15
  1781.    Screen Close 1
  1782.    Screen Close 0
  1783.    
  1784. End Proc
  1785.  
  1786.  
  1787. ' --------------- DISK TWO --------------- 
  1788.  
  1789.  
  1790. ' - Big Circles, Star bobs, colour cycling piccy and vector faces
  1791. Procedure SLIDE_STARS_CYCLE_FACES
  1792.    
  1793.    ' - Display text screen and load stuff!
  1794.    SETUP_FONT
  1795.    NEW_TEXT_SCREEN["page5"]
  1796.    Load "no-refund2!:stuff/green_ball",1
  1797.    Load "no-refund2!:stuff/cycle_pic",9
  1798.    Load "no-refund2!:stuff/big_circle1",7
  1799.    Wait 100
  1800.    CLEAR_TEXT_SCREEN
  1801.    SHUT_TEXT_SCREENS
  1802.    
  1803.    ' - Call procedures
  1804.    WEIRD_COMA_THING[25]
  1805.    STAR_BOBS
  1806.    BRIGHT_COLOURS[55000]
  1807.    TWO_FACES
  1808.    
  1809. End Proc
  1810. Procedure WEIRD_COMA_THING[TIME]
  1811.    ' - Code - Rob 
  1812.    ' - GFX - Rob
  1813.    
  1814.    ' - Upack circle pic   
  1815.    Unpack 7 To 2
  1816.    Screen Hide 2
  1817.    Erase 7
  1818.    
  1819.    ' - Open two big screen to play with 
  1820.    Screen Open 0,500,500,2,Lowres
  1821.    Curs Off : Cls 0 : Hide : Flash Off 
  1822.    Palette 0,0
  1823.    
  1824.    Screen Open 1,500,500,2,Lowres
  1825.    Curs Off : Cls 0 : Hide : Flash Off 
  1826.    Palette 0,0
  1827.    
  1828.    ' - Paste picture on screen 0
  1829.    Screen Copy 2,0,0,400,400 To 0,50,50
  1830.    Screen Offset 0,80,120
  1831.    
  1832.    ' - Paste picture on screen 1
  1833.    Screen Copy 2,0,0,400,400 To 1,50,50
  1834.    Screen Offset 1,80,120
  1835.    
  1836.    ' - Lose the original
  1837.    Screen Close 2
  1838.    
  1839.    ' - Set dual playfield 
  1840.    Screen Hide 0
  1841.    Wait Vbl 
  1842.    Dual Playfield 0,1
  1843.    Wait Vbl 
  1844.    
  1845.    ' - Define move strings
  1846.    M$="(1,-3,2)(1,-2,2)(1,-1,2)(1,1,2)(1,2,2)(1,3,2) "
  1847.    M$=M$+"(1,3,2)(1,2,2)(1,1,2)(1,-1,2)(1,-2,2)(1,-3,2)L"
  1848.    
  1849.    M1$="(1,3,2)(1,2,2)(1,1,2)(1,-1,2)(1,-2,2)(1,-3,2) "
  1850.    M1$=M1$+"(1,-3,2)(1,-2,2)(1,-1,2)(1,1,2)(1,2,2)(1,3,2)L"
  1851.    
  1852.    ' - Define screen movement channels
  1853.    For SCRN=0 To 1
  1854.       Channel SCRN To Screen Offset SCRN
  1855.    Next SCRN
  1856.    
  1857.    ' - Start movement 
  1858.    Move X 1,M1$
  1859.    Move X 0,M$
  1860.    Move On 
  1861.    Wait 8
  1862.    Move Y 0,M$
  1863.    Move Y 1,M1$
  1864.    Move On 
  1865.    
  1866.    ' - Get ready
  1867.    Screen 0
  1868.    Randomize Timer
  1869.    Screen Show 0
  1870.    Wait Vbl 
  1871.    CTR=0
  1872.    
  1873.    ' - GO!
  1874.    Repeat 
  1875.       W=Rnd($FFF)
  1876.       W2=Rnd($FFF)
  1877.       W3=$202
  1878.       
  1879.       ' - Randomly fade colours around.
  1880.       Fade 1,W3,W,,,,,,,,W2
  1881.       Wait 15
  1882.       Inc CTR
  1883.    Until CTR=TIME or Mouse Key=1
  1884.    
  1885.    ' - Clean up 
  1886.    Fade 2 : Wait 30
  1887.    Screen Close 0
  1888.    Screen Close 1
  1889.    
  1890. End Proc
  1891. Procedure STAR_BOBS
  1892.    ' - Code - Dug 
  1893.    ' - GFX - Matt 
  1894.    
  1895.    ' - Smart Stars! 
  1896.    
  1897.    ' - Open screen and define palette 
  1898.    Screen Open 0,320,256,4,Lowres
  1899.    Curs Off : Cls 0 : Hide : Flash Off 
  1900.    Palette $0,$F0,$B0,$60
  1901.    Double Buffer 
  1902.    
  1903.    ' - Define stuff 
  1904.    MP=False
  1905.    PATTERN=1
  1906.    CHANGE_PATTERN[PATTERN]
  1907.    
  1908.    ' - Main loop
  1909.    Repeat 
  1910.       
  1911.       For L=0 To 250
  1912.          Amal On 
  1913.          If Mouse Key=1
  1914.             MP=True
  1915.             Exit 
  1916.          End If 
  1917.          Wait Vbl 
  1918.       Next L
  1919.       
  1920.       If Not MP
  1921.          Inc PATTERN
  1922.          CHANGE_PATTERN[PATTERN]
  1923.       End If 
  1924.       
  1925.    Until PATTERN>3 or MP
  1926.    
  1927.    ' - Clean up 
  1928.    Fade 1 : Wait 15
  1929.    Bob Off 
  1930.    Erase 1
  1931.    Screen Close 0
  1932.    
  1933. End Proc
  1934. Procedure CHANGE_PATTERN[P]
  1935.    ' - Code - Dug 
  1936.    
  1937.    ' - Fade the bobs
  1938.    Fade 1,0,0,0,0
  1939.    Wait 15
  1940.    
  1941.    ' - Clear the bobs 
  1942.    Bob Off 
  1943.    SIZE=3
  1944.    SPEED=1
  1945.    
  1946.    ' - Set the colours back up  
  1947.    Fade 1,$0,$F0,$B0,$60
  1948.    Wait 15
  1949.    
  1950.    On P Gosub OVAL,PATTERN4,PATTERN3
  1951.    
  1952.    Pop Proc
  1953.    
  1954.    ' - Bob patterns...  
  1955.    
  1956.    OVAL:
  1957.    S$=Str$(3)
  1958.    Q$=Str$(1)
  1959.    
  1960.    MX$="("+Q$+",5,"+S$+")("+Q$+",4,"+S$+")("+Q$+",3,"+S$+")("+Q$+",2,"+S$+")("+Q$+",1,"+S$+")("+Q$+",-1,"+S$+")("+Q$+",-2,"+S$+")("+Q$+",-3,"+S$+")("+Q$+",-4,"+S$+")("+Q$+",-5,"+S$+")"
  1961.    MX$=MX$+"("+Q$+",-5,"+S$+")("+Q$+",-4,"+S$+")("+Q$+",-3,"+S$+")("+Q$+",-2,"+S$+")("+Q$+",-1,"+S$+")("+Q$+",1,"+S$+")("+Q$+",2,"+S$+")("+Q$+",3,"+S$+")("+Q$+",4,"+S$+")("+Q$+",5,"+S$+")L"
  1962.    
  1963.    A$="Let R0=160 ; Let R1=125"
  1964.    A$=A$+"Move R0-X,R1-Y,25 "
  1965.    
  1966.    For B=0 To 10
  1967.       
  1968.       Bob B,160-B*2-15,30+B*10+15,1
  1969.       Channel B To Bob B
  1970.       
  1971.       Move X B,MX$
  1972.       Move On B
  1973.       Wait 10
  1974.       Move Y B,MX$
  1975.       Move On B
  1976.       
  1977.       Channel B To Bob B
  1978.       Amal B,A$
  1979.       
  1980.    Next B
  1981.    Return 
  1982.    
  1983.    
  1984.    PATTERN3:
  1985.    S$=Str$(SIZE+2)
  1986.    Q$=Str$(SPEED)
  1987.    
  1988.    MX$="("+Q$+",5,"+S$+")("+Q$+",4,"+S$+")("+Q$+",3,"+S$+")("+Q$+",2,"+S$+")("+Q$+",1,"+S$+")("+Q$+",-1,"+S$+")("+Q$+",-2,"+S$+")("+Q$+",-3,"+S$+")("+Q$+",-4,"+S$+")("+Q$+",-5,"+S$+")"
  1989.    MX$=MX$+"("+Q$+",-5,"+S$+")("+Q$+",-4,"+S$+")("+Q$+",-3,"+S$+")("+Q$+",-2,"+S$+")("+Q$+",-1,"+S$+")("+Q$+",1,"+S$+")("+Q$+",2,"+S$+")("+Q$+",3,"+S$+")("+Q$+",4,"+S$+")("+Q$+",5,"+S$+")L"
  1990.    
  1991.    S$=Str$(SIZE+2-1)
  1992.    
  1993.    MY$="("+Q$+",5,"+S$+")("+Q$+",4,"+S$+")("+Q$+",3,"+S$+")("+Q$+",2,"+S$+")("+Q$+",1,"+S$+")("+Q$+",-1,"+S$+")("+Q$+",-2,"+S$+")("+Q$+",-3,"+S$+")("+Q$+",-4,"+S$+")("+Q$+",-5,"+S$+")"
  1994.    MY$=MY$+"("+Q$+",-5,"+S$+")("+Q$+",-4,"+S$+")("+Q$+",-3,"+S$+")("+Q$+",-2,"+S$+")("+Q$+",-1,"+S$+")("+Q$+",1,"+S$+")("+Q$+",2,"+S$+")("+Q$+",3,"+S$+")("+Q$+",4,"+S$+")("+Q$+",5,"+S$+")L"
  1995.    A$="Let R0=160 ; Let R1=125"
  1996.    A$=A$+"Move 160-X,125-Y,25"
  1997.    
  1998.    For B=0 To 9
  1999.       
  2000.       Bob B,160,80+B,1
  2001.       Channel B To Bob B
  2002.       Amal B,A$
  2003.       
  2004.       Move X B,MX$
  2005.       Move On B
  2006.       
  2007.       Move Y B,MY$
  2008.       Move On B
  2009.       
  2010.       Wait 5
  2011.       
  2012.    Next B
  2013.    Return 
  2014.    
  2015.    
  2016.    PATTERN4:
  2017.    S$=Str$(SIZE)
  2018.    Q$=Str$(SPEED)
  2019.    
  2020.    MX$="("+Q$+",5,"+S$+")("+Q$+",4,"+S$+")("+Q$+",3,"+S$+")("+Q$+",2,"+S$+")("+Q$+",1,"+S$+")("+Q$+",-1,"+S$+")("+Q$+",-2,"+S$+")("+Q$+",-3,"+S$+")("+Q$+",-4,"+S$+")("+Q$+",-5,"+S$+")"
  2021.    MX$=MX$+"("+Q$+",-5,"+S$+")("+Q$+",-4,"+S$+")("+Q$+",-3,"+S$+")("+Q$+",-2,"+S$+")("+Q$+",-1,"+S$+")("+Q$+",1,"+S$+")("+Q$+",2,"+S$+")("+Q$+",3,"+S$+")("+Q$+",4,"+S$+")("+Q$+",5,"+S$+")L"
  2022.    
  2023.    S$=Str$(SIZE+2)
  2024.    
  2025.    MY$="("+Q$+",5,"+S$+")("+Q$+",4,"+S$+")("+Q$+",3,"+S$+")("+Q$+",2,"+S$+")("+Q$+",1,"+S$+")("+Q$+",-1,"+S$+")("+Q$+",-2,"+S$+")("+Q$+",-3,"+S$+")("+Q$+",-4,"+S$+")("+Q$+",-5,"+S$+")"
  2026.    MY$=MY$+"("+Q$+",-5,"+S$+")("+Q$+",-4,"+S$+")("+Q$+",-3,"+S$+")("+Q$+",-2,"+S$+")("+Q$+",-1,"+S$+")("+Q$+",1,"+S$+")("+Q$+",2,"+S$+")("+Q$+",3,"+S$+")("+Q$+",4,"+S$+")("+Q$+",5,"+S$+")L"
  2027.    A$="Let R0=160 ; Let R1=125"
  2028.    A$=A$+"Move 160-X,125-Y,25"
  2029.    
  2030.    For B=0 To 9
  2031.       
  2032.       Bob B,160,140,1
  2033.       Channel B To Bob B
  2034.       Amal B,A$
  2035.       
  2036.       Move X B,MX$
  2037.       Move On B
  2038.       
  2039.       Wait Vbl 
  2040.       
  2041.       Move Y B,MY$
  2042.       Move On B
  2043.       
  2044.       Wait 3
  2045.       
  2046.    Next B
  2047.    Return 
  2048.    
  2049. End Proc
  2050. Procedure BRIGHT_COLOURS[TIME]
  2051.    ' - Code - Matt
  2052.    ' - GFX - Matt 
  2053.    
  2054.    ' - Unpack cycle picture 
  2055.    Unpack 9 To 1
  2056.    Screen Hide 1
  2057.    Erase 9
  2058.    
  2059.    ' - Open 3 screens. (THREE?  Yes Three!) 
  2060.    ' - Screen 0 hold the picture
  2061.    Screen Open 0,640,256,32,Lowres
  2062.    Curs Off : Cls 0 : Flash Off : Hide 
  2063.    Get Palette 1
  2064.    Screen Offset 0,160,
  2065.    Screen Copy 1,0,0,320,256 To 0,170,0
  2066.    Screen Close 1
  2067.    
  2068.    ' - Screens 1 and 2 move over the top of it
  2069.    Screen Open 1,320,100,2,Lowres
  2070.    Screen Hide 1
  2071.    Curs Off : Cls 0 : Hide : Flash Off 
  2072.    Screen Display 1,,-64,,
  2073.    Screen Show 1
  2074.    Screen To Front 1
  2075.    
  2076.    Screen Open 2,320,100,2,Lowres
  2077.    Screen Hide 2
  2078.    Curs Off : Cls 0 : Flash Off : Hide 
  2079.    Screen Display 2,,300,,
  2080.    Screen Show 2
  2081.    Screen To Front 2
  2082.    
  2083.    ' Define screen movement 
  2084.    Channel 0 To Screen Offset 0
  2085.    Channel 2 To Screen Display 2
  2086.    Channel 1 To Screen Display 1
  2087.    
  2088.    X$="(1,-6,4)(1,-5,3)(1,-4,3)(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3)(1,4,3)(1,5,3)(1,6,4)"
  2089.    X$=X$+"(1,6,4)(1,5,3)(1,4,3)(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3)(1,-4,3)(1,-5,3)(1,-6,4)L"
  2090.    
  2091.    Y$="(1,6,4)(1,5,3)(1,4,3)(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3)(1,-4,3)(1,-5,3)(1,-6,4)L"
  2092.    
  2093.    Y2$="(1,-6,4)(1,-5,3)(1,-4,3)(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3)(1,4,3)(1,5,3)(1,6,4)L"
  2094.    
  2095.    ' - Move the screens 
  2096.    Move X 0,X$
  2097.    Move Y 1,Y$
  2098.    Move Y 2,Y2$
  2099.    Move On 
  2100.    
  2101.    ' - Start the cycling
  2102.    Screen 0
  2103.    Shift Up 1,1,31,1
  2104.    
  2105.    ' - main loop
  2106.    COUNTER=0
  2107.    Repeat 
  2108.       Inc COUNTER
  2109.    Until COUNTER=TIME or Mouse Key=1
  2110.    
  2111.    ' - Clean up 
  2112.    Shift Up 1,0,31,0
  2113.    Wait 50
  2114.    
  2115.    Screen Close 0
  2116.    Screen Close 1
  2117.    Screen Close 2
  2118.    
  2119. End Proc
  2120. Procedure TWO_FACES
  2121.    ' - Code - Dug 
  2122.    
  2123.    ' - Set up screen
  2124.    Screen Open 0,320,256,4,Lowres
  2125.    Flash Off : Curs Off : Cls 0 : Hide 
  2126.    Double Buffer 
  2127.    Autoback 0
  2128.    Degree 
  2129.    Palette $1,$77A,$DDD,$0
  2130.    
  2131.    M=15
  2132.    Dim FX(M),FY(M),FZ(M) : Rem Frame coords (3D)
  2133.    Dim X(M),Y(M),Z(M) : Rem  Rotated coords (used by coord convert routines) (2D)  
  2134.    Dim SUBFX(M),SUBFY(M),SUBFZ(M) : Rem Coords of rotated sub-face on base-face
  2135.    Dim SX(M),SY(M) : Rem     Screen coords of total rotated objects (2D)  
  2136.    
  2137.    DVP=-200
  2138.    _XORG=Screen Width/2
  2139.    _YORG=Screen Height/2
  2140.    
  2141.    Gosub SETUP_FACES
  2142.    _DELAY=0
  2143.    Repeat 
  2144.       Screen Swap : Wait Vbl 
  2145.       Cls 0
  2146.       Gosub ROT_SUB_FACE
  2147.       Gosub SUB_FACE_2_3D_PLANE
  2148.       Gosub ROT_BOTH_FACES
  2149.       Gosub COORD_CONVERT
  2150.       Gosub DRW_ALL
  2151.       Add SPHI,10
  2152.       Add SGAMMA,15
  2153.       Add STHETA,5
  2154.       Inc _DELAY
  2155.       If _DELAY>15
  2156.          Add BPHI,5
  2157.          Add BGAMMA,10
  2158.          Add BTHETA,5
  2159.       End If 
  2160.    Until _DELAY>100 or Mouse Key=1
  2161.    
  2162.    ' - Clean up 
  2163.    Fade 1,$FFF,$FFF,$FFF,$FFF : Wait 15
  2164.    Fade 1 : Wait 15
  2165.    Autoback 2
  2166.    Screen Close 0
  2167.    
  2168.    Pop Proc
  2169.    
  2170.    
  2171.    DRW_ALL:
  2172.    
  2173.    ' -- Base face 
  2174.    Ink 1
  2175.    Polygon SX(0),SY(0) To SX(1),SY(1) To SX(2),SY(2) To SX(3),SY(3) To SX(0),SY(0)
  2176.    ' -- Sub face
  2177.    Ink 2
  2178.    Polygon SX(4),SY(4) To SX(5),SY(5) To SX(6),SY(6) To SX(7),SY(7) To SX(4),SY(4)
  2179.    Return 
  2180.    
  2181.    
  2182.    COORD_CONVERT:
  2183.    For L=0 To 1+BASEF_NP+SUBF_NP
  2184.       ZF=DVP+Z(L)
  2185.       SX(L)=_XORG+(X(L)*DVP)/ZF
  2186.       SY(L)=_YORG-(Y(L)*DVP)/ZF
  2187.    Next L
  2188.    Return 
  2189.    
  2190.    
  2191.    SUB_FACE_2_3D_PLANE:
  2192.    ' -- Convert 3D coords of sub-face into 2D so we can use these as coords 
  2193.    '    on the 'base-face'. 
  2194.    For L=1+BASEF_NP To 1+BASEF_NP+SUBF_NP
  2195.       ZF=DVP+Z(L)
  2196.       SUBFX(L-1-BASEF_NP)=(X(L)*DVP)/ZF
  2197.       SUBFY(L-1-BASEF_NP)=(Y(L)*DVP)/ZF
  2198.       SUBFZ(L-1-BASEF_NP)=20
  2199.    Next L
  2200.    ' -- The Z coord of this object is now used as the Z of the 'base-face'
  2201.    Return 
  2202.    
  2203.    
  2204.    ROT_SUB_FACE:
  2205.    For L=1+BASEF_NP To 1+BASEF_NP+SUBF_NP
  2206.       
  2207.       ' rotate about z 
  2208.       X1=(FX(L)*Cos(SGAMMA))-(FY(L)*Sin(SGAMMA))
  2209.       Y1=(FX(L)*Sin(SGAMMA))+(FY(L)*Cos(SGAMMA))
  2210.       Z1=FZ(L)
  2211.       
  2212.       ' rotate about y 
  2213.       X2=(X1*Cos(SPHI))+(Z1*Sin(SPHI))
  2214.       Y2=Y1
  2215.       Z2=-(X1*Sin(SPHI))+(Z1*Cos(SPHI))
  2216.       
  2217.       ' rotate about x 
  2218.       X(L)=X2
  2219.       Y(L)=(Y2*Cos(STHETA))-(Z2*Sin(STHETA))
  2220.       Z(L)=(Y2*Sin(STHETA))+(Z2*Cos(STHETA))
  2221.    Next L
  2222.    Return 
  2223.    
  2224.    
  2225.    ROT_BOTH_FACES:
  2226.    For L=0 To BASEF_NP
  2227.       
  2228.       ' rotate about z 
  2229.       X1=(FX(L)*Cos(BGAMMA))-(FY(L)*Sin(BGAMMA))
  2230.       Y1=(FX(L)*Sin(BGAMMA))+(FY(L)*Cos(BGAMMA))
  2231.       Z1=FZ(L)
  2232.       
  2233.       ' rotate about y 
  2234.       X2=(X1*Cos(BPHI))+(Z1*Sin(BPHI))
  2235.       Y2=Y1
  2236.       Z2=-(X1*Sin(BPHI))+(Z1*Cos(BPHI))
  2237.       
  2238.       ' rotate about x 
  2239.       X(L)=X2
  2240.       Y(L)=(Y2*Cos(BTHETA))-(Z2*Sin(BTHETA))
  2241.       Z(L)=(Y2*Sin(BTHETA))+(Z2*Cos(BTHETA))
  2242.    Next L
  2243.    For L=0 To SUBF_NP
  2244.       
  2245.       ' rotate about z 
  2246.       X1=(SUBFX(L)*Cos(BGAMMA))-(SUBFY(L)*Sin(BGAMMA))
  2247.       Y1=(SUBFX(L)*Sin(BGAMMA))+(SUBFY(L)*Cos(BGAMMA))
  2248.       Z1=SUBFZ(L)
  2249.       
  2250.       ' rotate about y 
  2251.       X2=(X1*Cos(BPHI))+(Z1*Sin(BPHI))
  2252.       Y2=Y1
  2253.       Z2=-(X1*Sin(BPHI))+(Z1*Cos(BPHI))
  2254.       
  2255.       ' rotate about x 
  2256.       X(1+L+BASEF_NP)=X2
  2257.       Y(1+L+BASEF_NP)=(Y2*Cos(BTHETA))-(Z2*Sin(BTHETA))
  2258.       Z(1+L+BASEF_NP)=(Y2*Sin(BTHETA))+(Z2*Cos(BTHETA))
  2259.    Next L
  2260.    Return 
  2261.    
  2262.    
  2263.    SETUP_FACES:
  2264.    Restore BASE_FACE : Read BASEF_NP
  2265.    For P=0 To BASEF_NP
  2266.       Read FX(P),FY(P),FZ(P)
  2267.       X(P)=FX(P)
  2268.       Y(P)=FY(P)
  2269.       Z(P)=FZ(P)
  2270.    Next P
  2271.    Restore SUB_FACE : Read SUBF_NP
  2272.    For L=0 To SUBF_NP
  2273.       P=L+BASEF_NP+1
  2274.       Read FX(P),FY(P),FZ(P)
  2275.       X(P)=FX(P)
  2276.       Y(P)=FY(P)
  2277.       Z(P)=FZ(P)
  2278.    Next L
  2279.    Return 
  2280.    
  2281.    
  2282.    BASE_FACE:
  2283.    Data 3
  2284.    Data -45,45,20
  2285.    Data 45,45,20
  2286.    Data 45,-45,20
  2287.    Data -45,-45,20
  2288.    
  2289.    SUB_FACE:
  2290.    Data 3
  2291.    Data -25,25,20
  2292.    Data 25,25,20
  2293.    Data 25,-25,20
  2294.    Data -25,-25,20
  2295.    
  2296. End Proc
  2297.  
  2298. ' - Plasma, Pattern
  2299. Procedure PLASMA
  2300.    
  2301.    ' - Calling procedure for the Plasma section 
  2302.    
  2303.    SETUP_FONT
  2304.    NEW_TEXT_SCREEN["page6"]
  2305.    ' - Load plasma stuff
  2306.    Load "no-refund2!:stuff/plasma_bob",1
  2307.    Load "no-refund2!:stuff/new_plasma",9
  2308.    Load "no-refund2!:stuff/plasma_pic2",10
  2309.    CLEAR_TEXT_SCREEN
  2310.    SHUT_TEXT_SCREENS
  2311.    
  2312.    ' - Call plasma procedure
  2313.    PLASMA_HB
  2314.    FLAG[150]
  2315. End Proc
  2316. Procedure PLASMA_HB
  2317.    ' - Code - Matt & Rob    
  2318.    ' - Plasma screens were generated using the CYS plasma generator 
  2319.    ' - It was written by Dug and eats memory like a big red memory eater! 
  2320.    ' - BOB - Matt 
  2321.    
  2322.    ' - Plasma screen 1
  2323.    Unpack 10 To 1
  2324.    Screen Hide 1
  2325.    Erase 10
  2326.    Hide 
  2327.    '
  2328.    ' - Plasma screen 2
  2329.    Unpack 9 To 0
  2330.    Palette 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  2331.    Erase 9
  2332.    
  2333.    ' - BIG half-bright bob
  2334.    Double Buffer 
  2335.    Set Bob 1,1,%100000,
  2336.    Bob 1,15,65,1
  2337.    
  2338.    ' - Move bob 
  2339.    Channel 1 To Bob 1
  2340.    M$="(1,-4,3)(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3)(1,4,3)"
  2341.    M$=M$+"(1,4,3)(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3)(1,-4,3) L"
  2342.    Move Y 1,M$
  2343.    Move On 
  2344.    
  2345.    Fade 1 To 1 : Wait 15
  2346.    
  2347.    ' - Start colour cycling 
  2348.    Shift Up 1,1,31,1
  2349.    
  2350.    Wait 150
  2351.    
  2352.    ' - Paste new plasma screen on 
  2353.    For Y=0 To 256
  2354.       Screen Copy 1,0,Y,320,Y+1 To 0,0,Y
  2355.       Screen Swap 
  2356.       Screen Copy 1,0,Y,320,Y+1 To 0,0,Y
  2357.       Screen Swap 
  2358.       Wait Vbl 
  2359.    Next Y
  2360.    Wait 150
  2361.    
  2362.    ' - End part 
  2363.    Fade 1 : Wait 15
  2364.    Erase 1
  2365.    Screen Close 0
  2366.    Screen Close 1
  2367.    
  2368. End Proc
  2369. Procedure FLAG[TIME]
  2370.    ' - Code - Rob 
  2371.    
  2372.    ' - Open 2 colour screen   
  2373.    Screen Open 0,320,256,2,Lowres
  2374.    Curs Off : Cls 0 : Hide : Flash Off 
  2375.    Palette 0,$FFF
  2376.    Ink 1
  2377.    
  2378.    ' - Turn everything on/off 
  2379.    Double Buffer 
  2380.    Autoback 0
  2381.    Bob Update Off 
  2382.    Synchro Off 
  2383.    
  2384.    ' - Set a few constants    
  2385.    XB1=50
  2386.    XB2=100
  2387.    XB3=150
  2388.    XB4=200
  2389.    XB5=250
  2390.    
  2391.    ' - Set a few more 
  2392.    YB1=50
  2393.    YB2=100
  2394.    YB3=150
  2395.    YB4=200
  2396.    
  2397.    
  2398.    ' - Position the bobs
  2399.    
  2400.    ' - Bob layout...
  2401.    
  2402.    '   0--1--2--3--4
  2403.    '   |  |  |  |  |
  2404.    '   5--6--7--8--9  
  2405.    '   |  |  |  |  |
  2406.    '  10-11-12-13-14
  2407.    '   |  |  |  |  |
  2408.    '  15-16-17-18-19
  2409.    
  2410.    ' - Top row
  2411.    Bob 0,XB1,YB1,0
  2412.    Bob 1,XB2,YB1,0
  2413.    Bob 2,XB3,YB1,0
  2414.    Bob 3,XB4,YB1,0
  2415.    Bob 4,XB5,YB1,0
  2416.    
  2417.    ' - Second row 
  2418.    Bob 5,XB1,YB2,0
  2419.    Bob 6,XB2,YB2,0
  2420.    Bob 7,XB3,YB2,0
  2421.    Bob 8,XB4,YB2,0
  2422.    Bob 9,XB5,YB2,0
  2423.    
  2424.    ' - Er, Third row, I think 
  2425.    Bob 10,XB1,YB3,0
  2426.    Bob 11,XB2,YB3,0
  2427.    Bob 12,XB3,YB3,0
  2428.    Bob 13,XB4,YB3,0
  2429.    Bob 14,XB5,YB3,0
  2430.    
  2431.    ' - Could well be the fourth row   
  2432.    Bob 15,XB1,YB4,0
  2433.    Bob 16,XB2,YB4,0
  2434.    Bob 17,XB3,YB4,0
  2435.    Bob 18,XB4,YB4,0
  2436.    Bob 19,XB5,YB4,0
  2437.    
  2438.    
  2439.    
  2440.    ' - Define the move string for all bobs
  2441.    MOVE$="(1,5,3)(1,4,3)(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3)(1,-4,3)(1,-5,3)"
  2442.    MOVE$=MOVE$+"(1,-5,3)(1,-4,3)(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3)(1,4,3)(1,5,3)L "
  2443.    
  2444.    ' - Assign the move string to all bobs 
  2445.    For CTR=0 To 19
  2446.       Channel CTR To Bob CTR
  2447.       Move Y CTR,MOVE$
  2448.       Move On 
  2449.       Wait Vbl 
  2450.       Synchro 
  2451.       Move X CTR,MOVE$
  2452.       Move On 
  2453.       Wait Vbl 
  2454.       Synchro 
  2455.    Next CTR
  2456.    
  2457.    ' - Main Loop
  2458.    
  2459.    COUNTER=0
  2460.    Repeat 
  2461.       
  2462.       ' - Draw lots of lines 
  2463.       Gr Locate X Bob(0),Y Bob(0)
  2464.       Draw To X Bob(5),Y Bob(5)
  2465.       Draw To X Bob(10),Y Bob(10)
  2466.       Draw To X Bob(15),Y Bob(15)
  2467.       Draw To X Bob(16),Y Bob(16)
  2468.       Draw To X Bob(11),Y Bob(11)
  2469.       Draw To X Bob(6),Y Bob(6)
  2470.       Draw To X Bob(1),Y Bob(1)
  2471.       Draw To X Bob(2),Y Bob(2)
  2472.       Draw To X Bob(7),Y Bob(7)
  2473.       Draw To X Bob(12),Y Bob(12)
  2474.       Draw To X Bob(17),Y Bob(17)
  2475.       Draw To X Bob(18),Y Bob(18)
  2476.       Draw To X Bob(13),Y Bob(13)
  2477.       Draw To X Bob(8),Y Bob(8)
  2478.       Draw To X Bob(3),Y Bob(3)
  2479.       Draw To X Bob(4),Y Bob(4)
  2480.       Draw To X Bob(9),Y Bob(9)
  2481.       Draw To X Bob(14),Y Bob(14)
  2482.       Draw To X Bob(19),Y Bob(19)
  2483.       Draw To X Bob(18),Y Bob(18)
  2484.       
  2485.       Gr Locate X Bob(0),Y Bob(0)
  2486.       Draw To X Bob(1),Y Bob(1)
  2487.       
  2488.       Gr Locate X Bob(2),Y Bob(2)
  2489.       Draw To X Bob(3),Y Bob(3)
  2490.       
  2491.       Gr Locate X Bob(5),Y Bob(5)
  2492.       Draw To X Bob(6),Y Bob(6)
  2493.       Draw To X Bob(7),Y Bob(7)
  2494.       Draw To X Bob(8),Y Bob(8)
  2495.       Draw To X Bob(9),Y Bob(9)
  2496.       
  2497.       Gr Locate X Bob(10),Y Bob(10)
  2498.       Draw To X Bob(11),Y Bob(11)
  2499.       Draw To X Bob(12),Y Bob(12)
  2500.       Draw To X Bob(13),Y Bob(13)
  2501.       Draw To X Bob(14),Y Bob(14)
  2502.       
  2503.       Gr Locate X Bob(16),Y Bob(16)
  2504.       Draw To X Bob(17),Y Bob(17)
  2505.       
  2506.       ' - Manual update      
  2507.       Screen Swap : Wait Vbl : Cls 0 : Synchro 
  2508.       Inc COUNTER
  2509.    Until COUNTER=TIME or Mouse Key=1
  2510.    
  2511.    ' - Clean up this town!
  2512.    Fade 1
  2513.    Wait 15
  2514.    Autoback 2
  2515.    Bob Update On 
  2516.    Synchro On 
  2517.    Screen Close 0
  2518.    
  2519.    ' - Bye Bye!     
  2520. End Proc
  2521.  
  2522. ' - Patterns, Vector Scroll, Big Logo
  2523. Procedure PATT_VECSCRL_LOGO
  2524.    
  2525.    ' - Green patter things, Cheezy and Swaying Logo 
  2526.    SETUP_FONT
  2527.    NEW_TEXT_SCREEN["page7"]
  2528.    Load "no-refund2!:stuff/sway_logo",7
  2529.    Wait 100
  2530.    CLEAR_TEXT_SCREEN
  2531.    SHUT_TEXT_SCREENS
  2532.    
  2533.    ' - Call stuff 
  2534.    _TOP
  2535.    VECTOR_SCROLL
  2536.    SWAYING_LOGO
  2537.    
  2538. End Proc
  2539. Procedure _TOP
  2540.    ' - Code - Matt
  2541.    
  2542.    Screen Open 1,640,200,2,Hires
  2543.    Curs Off : Cls 0 : Hide : Flash Off : Palette 0,$50
  2544.    Screen Display 1,,60,,
  2545.    
  2546.    Double Buffer 
  2547.    Autoback 0
  2548.    Bob Update Off 
  2549.    
  2550.    For A=1 To 6
  2551.       Channel A To Bob A
  2552.       Bob A,100,100,0
  2553.    Next A
  2554.    
  2555.    M0$="(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3)"
  2556.    M0$=M0$+"(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3) L"
  2557.    
  2558.    M1$="(1,-4,3)(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3)(1,4,3)"
  2559.    M1$=M1$+"(1,4,3)(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3)(1,-4,3) L"
  2560.    
  2561.    M2$="(1,-5,3)(1,-4,3)(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3)(1,4,3)(1,5,3)"
  2562.    M2$=M2$+"(1,5,3)(1,4,3)(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3)(1,-4,3)(1,-5,3) L"
  2563.    
  2564.    M3$="(1,-6,3)(1,-5,3)(1,-4,3)(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3)(1,4,3)(1,5,3)(1,6,3)"
  2565.    M3$=M3$+"(1,6,3)(1,5,3)(1,4,3)(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3)(1,-4,3)(1,-5,3)(1,-6,3) L"
  2566.    
  2567.    M4$="(1,-7,3)(1,-6,3)(1,-5,3)(1,-4,3)(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3)(1,4,3)(1,5,3)(1,6,3)(1,7,3)"
  2568.    M4$=M4$+"(1,7,3)(1,6,3)(1,5,3)(1,4,3)(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3)(1,-4,3)(1,-5,3)(1,-6,3)(1,-7,3) L"
  2569.    
  2570.    Move Y 6,M0$
  2571.    Move On 
  2572.    Wait 13
  2573.    Move X 6,M0$
  2574.    Move On 
  2575.    
  2576.    Move X 1,M1$
  2577.    Move On 
  2578.    Wait 13
  2579.    Move Y 1,M1$
  2580.    Move On 
  2581.    
  2582.    Move Y 2,M2$
  2583.    Move On 
  2584.    Wait 17
  2585.    Move X 2,M2$
  2586.    Move On 
  2587.    
  2588.    Move X 3,M3$
  2589.    Move On 
  2590.    Wait 20
  2591.    Move Y 3,M3$
  2592.    Move On 
  2593.    
  2594.    Move Y 4,M4$
  2595.    Move On 
  2596.    Wait 23
  2597.    Move X 4,M4$
  2598.    Move On 
  2599.    
  2600.    Synchro Off 
  2601.    
  2602.    COUNTER=0
  2603.    
  2604.    Repeat 
  2605.       
  2606.       Q=X Bob(1)
  2607.       Q2=X Bob(2)
  2608.       Q3=X Bob(3)
  2609.       Q4=X Bob(4)
  2610.       Q5=X Bob(5)
  2611.       W=Y Bob(1)
  2612.       W2=Y Bob(2)
  2613.       W3=Y Bob(3)
  2614.       W4=Y Bob(4)
  2615.       W5=Y Bob(5)
  2616.       
  2617.       Screen Swap : Wait Vbl : Screen Swap 
  2618.       Ink 1
  2619.       Draw Q,W To Q2,W2
  2620.       Draw Q2,W2 To Q3,W3
  2621.       Draw Q3,W3 To Q4,W4
  2622.       Draw Q4,W4 To Q5,W5
  2623.       
  2624.       Screen Copy 1,0,0,190,256 To 1,205,0
  2625.       Screen Copy 1,0,0,190,256 To 1,410,0
  2626.       Synchro 
  2627.       Inc COUNTER
  2628.       
  2629.    Until COUNTER=200 or Mouse Key=1
  2630.    
  2631.    Screen Swap 
  2632.    Fade 3,$5,$5
  2633.    Wait 15*3
  2634.    
  2635.    Move Off 
  2636.    Synchro On 
  2637.    Autoback 2
  2638.    Bob Update On 
  2639.    
  2640.    ' - Don't close the screens here!  That's done in Vector Scroll
  2641.    
  2642. End Proc
  2643. Procedure VECTOR_SCROLL
  2644.    ' - Code - Dug 
  2645.    
  2646.    ' - Setup display screen   
  2647.    Screen Open 0,320,200,2,Lowres
  2648.    Flash Off : Curs Off : Hide : Palette $5,$772
  2649.    Double Buffer 
  2650.    Autoback 0
  2651.    Screen Display 0,,60,,
  2652.    Screen Close 1
  2653.    Screen To Front 0
  2654.    
  2655.    ' -- Function to return the code of a letter (a=0 z=25)
  2656.    Def Fn CHAR_OBJ(CO$)=Asc(CO$)-97
  2657.    
  2658.    X_ORG=100
  2659.    Y_ORG=115
  2660.    DVP=-240
  2661.    
  2662.    LINE_MAX=5 : Rem      Max no. of objects on screen at once  
  2663.    NUM_CHARS=26 : Rem      No. of letters in char set  
  2664.    
  2665.    Dim LINE(LINE_MAX,3) : Rem     Objects used in current line (x,y,z,letter to draw)
  2666.    Dim OBJECT(NUM_CHARS,13) : Rem Detail of each letter (7 pairs connected)
  2667.    Dim OBJ_COMP(5,2) : Rem        X/Y/Z offsets for each point  
  2668.    
  2669.    
  2670.    ' The text to be scrolled through    
  2671.    S$="     cheezy realtime vector scroll        "
  2672.    
  2673.    SLEN=Len(S$) : Rem        Length of the scroll text 
  2674.    NXT_CHAR=1 : Rem          Next char in text to be put on-screen 
  2675.    
  2676.    
  2677.    ' Setup everything..     
  2678.    Gosub SETUP_LETTER_DETAILS
  2679.    Gosub SETUP_OBJECT_POINTS
  2680.    Gosub INIT_SCROLL
  2681.    
  2682.    ' Scroll the text on a friendly but slightly warm surface..
  2683.    Repeat 
  2684.       Screen Swap : Wait Vbl 
  2685.       Cls 0
  2686.       Gosub _SCROLL_TEXT
  2687.    Until NXT_CHAR=SLEN or Mouse Key=1
  2688.    
  2689.    
  2690.    ' - Shut up! 
  2691.    Fade 2 : Wait 15*2
  2692.    Autoback 2
  2693.    Screen Close 0
  2694.    
  2695.    Pop Proc
  2696.    
  2697.    
  2698.    ' Give the scroll letters (in the line of text on-screen) some default coords
  2699.    INIT_SCROLL:
  2700.    SPACING=20
  2701.    For L=0 To LINE_MAX
  2702.       
  2703.       ' -- Which character should be output
  2704.       C$=Mid$(S$,NXT_CHAR,1)
  2705.       Inc NXT_CHAR
  2706.       If NXT_CHAR>SLEN Then NXT_CHAR=1
  2707.       
  2708.       LINE(L,0)=-20+L*SPACING : Rem x-coord
  2709.       LINE(L,1)=3 : Rem             y-coord  
  2710.       LINE(L,2)=190-L*SPACING : Rem z-coord
  2711.       If C$=" "
  2712.          LINE(L,3)=26
  2713.       Else 
  2714.          LINE(L,3)= Fn CHAR_OBJ(C$) : Rem letter to use for the graphic
  2715.       End If 
  2716.    Next L
  2717.    Return 
  2718.    
  2719.    
  2720.    ' Details of how letters are formed (by connecting certain points).. 
  2721.    SETUP_LETTER_DETAILS:
  2722.    For L=0 To NUM_CHARS
  2723.       For C=0 To 13
  2724.          Read OBJECT(L,C)
  2725.       Next C
  2726.    Next L
  2727.    Return 
  2728.    
  2729.    
  2730.    ' p1,p2 p1,p2 p1,p2 p1,p2
  2731.    ' p1,p2 p1,p2 p1,p2  -- Each letter is formed by joining 7 pairs 
  2732.    ' (some may be overwritten if 7 pairs are not required - keeps time constant)
  2733.    LETTER_DETAILS:
  2734.    A: Data 0,1,2,3,0,2,2,4,1,3,3,5,0,1
  2735.    B: Data 0,1,2,3,4,5,0,4,2,4,1,3,3,5
  2736.    C: Data 1,0,0,2,0,4,4,5,4,5,4,5,4,5
  2737.    D: Data 0,3,3,4,4,0,4,0,4,0,4,0,4,0
  2738.    E: Data 0,1,2,3,4,5,0,2,2,4,2,4,2,4
  2739.    F: Data 0,1,2,3,0,2,2,4,2,4,2,4,2,4
  2740.    G: Data 1,0,0,2,2,4,4,5,5,3,5,3,5,3
  2741.    H: Data 2,3,1,3,3,5,0,2,2,4,2,4,2,4
  2742.    I: Data 1,3,3,5,3,5,3,5,3,5,3,5,3,5
  2743.    J: Data 1,3,3,5,5,4,4,2,4,2,4,2,4,2
  2744.    K: Data 0,2,2,4,2,1,2,5,2,5,2,5,2,5
  2745.    L: Data 0,2,2,4,4,5,4,5,4,5,4,5,4,5
  2746.    M: Data 0,2,2,4,1,3,3,5,1,2,1,2,1,2
  2747.    N: Data 0,2,2,4,1,3,3,5,0,5,3,5,3,5
  2748.    O: Data 0,1,4,5,0,2,2,4,1,3,3,5,3,5
  2749.    P: Data 0,1,1,3,3,2,0,2,2,4,2,4,2,4
  2750.    Q: Data 0,1,1,3,3,5,5,4,4,2,2,0,5,2
  2751.    R: Data 0,1,1,3,3,2,0,2,2,4,2,5,2,5
  2752.    S: Data 1,0,0,2,2,3,3,5,5,4,5,4,5,4
  2753.    T: Data 0,1,1,3,3,5,3,5,3,5,3,5,3,5
  2754.    U: Data 0,2,2,4,4,5,5,3,3,1,3,1,3,1
  2755.    V: Data 0,2,2,4,4,1,4,1,4,1,4,1,4,1
  2756.    W: Data 0,2,2,4,4,3,5,3,3,1,3,1,3,1
  2757.    X: Data 0,5,1,4,1,4,1,4,1,4,1,4,1,4
  2758.    Y: Data 0,2,2,3,5,3,3,1,3,1,3,1,3,1
  2759.    Z: Data 0,1,1,4,4,5,4,5,4,5,4,5,4,5
  2760.    SPACE: Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0
  2761.    
  2762.    
  2763.    ' Details of how each point of a letter is offset relative to the object's 
  2764.    ' X/Y/Z position.. 
  2765.    
  2766.    
  2767.    SETUP_OBJECT_POINTS:
  2768.    Restore _POINT_OFFSETS
  2769.    For P=0 To 5
  2770.       For C=0 To 2
  2771.          Read OBJ_COMP(P,C)
  2772.       Next C
  2773.    Next P
  2774.    Return 
  2775.    
  2776.    ' 0---1
  2777.    ' |   |
  2778.    ' 2---3
  2779.    ' |   |
  2780.    ' 4---5
  2781.    
  2782.    _POINT_OFFSETS:
  2783.    Data 0,20,0
  2784.    Data 10,20,-10
  2785.    Data 0,0,0
  2786.    Data 10,0,-10
  2787.    Data 0,-20,0
  2788.    Data 10,-20,-10
  2789.    
  2790.    
  2791.    
  2792.    _SCROLL_TEXT:
  2793.    
  2794.    ' x = LINE( L, 0 ) 
  2795.    ' y = LINE( L, 1 ) 
  2796.    ' z = LINE( L, 2 ) 
  2797.    
  2798.    SPEED=10
  2799.    For L=0 To LINE_MAX
  2800.       Add LINE(L,2),SPEED : Rem   z-coord of object      
  2801.       Add LINE(L,0),-SPEED : Rem   x-coord of object
  2802.       If LINE(L,0)<-35 : Rem object has scrolled off so fetch new letter
  2803.          LINE(L,0)=80 : Rem reset coords x,y,z 
  2804.          LINE(L,1)=3
  2805.          LINE(L,2)=90
  2806.          C$=Mid$(S$,NXT_CHAR,1)
  2807.          Inc NXT_CHAR
  2808.          If NXT_CHAR>SLEN : NXT_CHAR=1 : End If 
  2809.          LINE(L,3)=Asc(C$)-97 : Rem letter to use for the graphic
  2810.          If C$=" "
  2811.             LINE(L,3)=26
  2812.          End If 
  2813.       End If 
  2814.       Gosub DRW_LETTER
  2815.    Next L
  2816.    Return 
  2817.    
  2818.    
  2819.    DRW_LETTER:
  2820.    
  2821.    OX=LINE(L,0)
  2822.    OY=LINE(L,1)
  2823.    OZ=LINE(L,2)
  2824.    OBJ=LINE(L,3)
  2825.    
  2826.    For C=0 To 13 Step 2 : Rem 7 connections (2 points each)..
  2827.       
  2828.       ' -- points to connect.. 
  2829.       P1=OBJECT(OBJ,C)
  2830.       P2=OBJECT(OBJ,C+1)
  2831.       
  2832.       ' -- Get offsets for those points..
  2833.       XOFST1=OBJ_COMP(P1,0) : Rem p1 
  2834.       YOFST1=OBJ_COMP(P1,1)
  2835.       ZOFST1=OBJ_COMP(P1,2)
  2836.       XOFST2=OBJ_COMP(P2,0) : Rem p2 
  2837.       YOFST2=OBJ_COMP(P2,1)
  2838.       ZOFST2=OBJ_COMP(P2,2)
  2839.       
  2840.       ' -- Calculate real coords of points 
  2841.       X1=OX+XOFST1 : Rem p1 
  2842.       Y1=OY+YOFST1
  2843.       Z1=OZ+ZOFST1
  2844.       X2=OX+XOFST2 : Rem p2 
  2845.       Y2=OY+YOFST2
  2846.       Z2=OZ+ZOFST2
  2847.       
  2848.       ' -- Connect the two points..
  2849.       If OBJ<>26 : Rem 26=space so don't join any dots
  2850.          Gosub CONNECT_PTS
  2851.       End If 
  2852.    Next C
  2853.    
  2854.    Return 
  2855.    
  2856.    
  2857.    CONNECT_PTS:
  2858.    
  2859.    ' -- Calculate screen coords of the two points.. 
  2860.    ZF=DVP+Z1
  2861.    X1=X_ORG+(DVP*X1)/ZF : Rem p1 
  2862.    Y1=Y_ORG-(DVP*Y1)/ZF
  2863.    ZF=DVP+Z2
  2864.    X2=X_ORG+(DVP*X2)/ZF : Rem p2 
  2865.    Y2=Y_ORG-(DVP*Y2)/ZF
  2866.    
  2867.    ' -- Connect the dots! 
  2868.    Polyline X1,Y1 To X2,Y2
  2869.    
  2870.    Return 
  2871.    
  2872. End Proc
  2873. Procedure SWAYING_LOGO
  2874.    ' - Code - Matt
  2875.    ' - GFX - Matt 
  2876.    
  2877.    Unpack 7 To 0
  2878.    Screen Hide 0
  2879.    Erase 7
  2880.    
  2881.    Screen Open 1,640,500,16,Lowres
  2882.    Curs Off : Cls 0 : Hide : Flash Off : Get Palette 0
  2883.    Screen Hide 1
  2884.    Screen Offset 1,160,
  2885.    Screen Copy 0,0,0,400,110 To 1,145,0
  2886.    
  2887.    M$="(1,-4,3)(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3)(1,4,3)"
  2888.    M$=M$+"(1,4,3)(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3)(1,-4,3) L"
  2889.    
  2890.    Channel 0 To Screen Offset 1
  2891.    Move X 0,M$
  2892.    Screen Show 1
  2893.    Move On 
  2894.    
  2895.    Y=-100
  2896.    Repeat 
  2897.       Screen Display 1,,Y*2,,
  2898.       Inc Y
  2899.       Wait Vbl 
  2900.    Until Y>200 or Mouse Key=1
  2901.    
  2902.    Fade 1
  2903.    
  2904.    For _WAIT=0 To 15
  2905.       Screen Display 1,,Y*2,,
  2906.       Inc Y
  2907.       Wait Vbl 
  2908.    Next _WAIT
  2909.    
  2910.    Move Off 
  2911.    
  2912.    Screen Close 0
  2913.    Screen Close 1
  2914.    
  2915. End Proc
  2916.  
  2917. ' - Man thing
  2918. Procedure MORPH_MAN
  2919.    
  2920.    SETUP_FONT
  2921.    NEW_TEXT_SCREEN["page8"]
  2922.    ' - I know! Shall we load some stuff in? 
  2923.    Load "no-refund2!:stuff/man_wipe",1
  2924.    Load "no-refund2!:stuff/manpic",9
  2925.    Load "no-refund2!:stuff/cred_pic1",10
  2926.    Load "no-refund2!:stuff/cred_pic2",8
  2927.    Load "no-refund2!:stuff/cred_pic3",7
  2928.    CLEAR_TEXT_SCREEN
  2929.    SHUT_TEXT_SCREENS
  2930.    
  2931.    ' - And now we can run it! 
  2932.    MORPH
  2933.    MAN
  2934. End Proc
  2935. Procedure MORPH
  2936.    ' - Code - Rob & Matt
  2937.    ' - GFX - Matt 
  2938.    
  2939.    ' - Setup the screens  
  2940.    Screen Open 0,320,256,8,Lowres
  2941.    Cls 0 : Curs Off : Flash Off : Hide : Cls 0
  2942.    Palette 0,0,0,0
  2943.    
  2944.    Unpack 10 To 1
  2945.    Screen Hide 1
  2946.    Palette 0,0,0,0
  2947.    
  2948.    Unpack 8 To 2
  2949.    Screen Hide 2
  2950.    Palette 0,0,0,0
  2951.    
  2952.    Unpack 7 To 3
  2953.    Screen Hide 3
  2954.    
  2955.    ' - Setup Dual Playfield 
  2956.    Screen Show 1
  2957.    Screen To Front 0
  2958.    Wait Vbl 
  2959.    Dual Playfield 1,0
  2960.    Wait Vbl 
  2961.    Screen 1
  2962.    Palette 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  2963.    
  2964.    ' - Setup screen 0 
  2965.    Screen 0
  2966.    Double Buffer 
  2967.    Synchro Off 
  2968.    Autoback 0
  2969.    Bob Update Off 
  2970.    
  2971.    ' - Array used to store X and Y
  2972.    Dim X(12),Y(12)
  2973.    
  2974.    ' - Gosubs were only used to keep the procedure self contained!!!
  2975.    Gosub SETUP_BAR
  2976.    Gosub DUG
  2977.    Gosub _BAR_TO_D
  2978.    Gosub _PLAY_ANIM
  2979.    Gosub BITMAP_D
  2980.    Gosub D_TO_M
  2981.    Gosub MATT
  2982.    Gosub _PLAY_ANIM
  2983.    Gosub BITMAP_M
  2984.    Gosub M_TO_R
  2985.    Gosub _AND_ROB
  2986.    Gosub _PLAY_ANIM
  2987.    Gosub BITMAP_R
  2988.    Gosub R_TO_C
  2989.    Gosub _OF_CYS
  2990.    Gosub _PLAY_ANIM
  2991.    Gosub C_TO_Y
  2992.    Gosub _PLAY_ANIM
  2993.    Gosub Y_TO_S
  2994.    Gosub _PLAY_ANIM
  2995.    Gosub _S_TO_LINE
  2996.    Gosub CLR_CYS
  2997.    Gosub _PLAY_ANIM
  2998.    Gosub CLR_LINE
  2999.    
  3000.    ' - Clean up 
  3001.    Autoback 2
  3002.    Synchro On 
  3003.    Bob Update On 
  3004.    Screen Close 0
  3005.    Screen Close 2
  3006.    Screen 1
  3007.    
  3008.    _SCREEN_BRUSH
  3009.    Erase 7
  3010.    Erase 8
  3011.    Erase 10
  3012.    
  3013.    ' - End of part
  3014.    Pop Proc
  3015.    
  3016.    
  3017.    _BAR_TO_D:
  3018.    For X=1 To 12
  3019.       Channel X To Bob X
  3020.    Next X
  3021.    
  3022.    ' - Define animations  
  3023.    Amal 1," M 80,0,20 "
  3024.    Amal 2," M 53,0,20 "
  3025.    Amal 3," M 26,80,20 "
  3026.    Amal 4," M -160,160,20 "
  3027.    Amal 5," M -240,103,20 "
  3028.    Amal 6," M -240,-54,20 "
  3029.    Amal 7," M -200,-110,20 "
  3030.    Amal 8," M -94,-50,20 "
  3031.    Amal 9," M 43,-50,20 "
  3032.    Amal 10," M 190,-90,20 "
  3033.    Amal 11," M 150,-74,20 "
  3034.    Amal 12," M 80,-17,20 "
  3035.    Return 
  3036.    
  3037.    
  3038.    D_TO_M:
  3039.    For X=2 To 12
  3040.       Channel X To Bob X
  3041.    Next X
  3042.    
  3043.    Amal 2," M -40,0,20 "
  3044.    Amal 3," M -80,-40,20 "
  3045.    Amal 4," M 40,-160,20 "
  3046.    Amal 5," M 160,-160,20 "
  3047.    Amal 6," M 160,100,20 "
  3048.    Amal 7," M 80,100,20 "
  3049.    Amal 8," M 80,-40,20 "
  3050.    Amal 9," M 10,0,20 "
  3051.    Amal 10," M -70,0,20 "
  3052.    Amal 11," M -30,120,20 "
  3053.    Amal 12," M 0,120,20 "
  3054.    Return 
  3055.    
  3056.    
  3057.    M_TO_R:
  3058.    For X=2 To 12
  3059.       Channel X To Bob X
  3060.    Next X
  3061.    
  3062.    Amal 2," M 120,0,20 "
  3063.    Amal 3," M 80,60,20 "
  3064.    Amal 4," M 0,100,20 "
  3065.    Amal 5," M 0,160,20 "
  3066.    Amal 6," M -120,-60,20 "
  3067.    Amal 7," M -80,0,20 "
  3068.    Amal 8," M -120,80,20 "
  3069.    Amal 9," M -80,-60,20 "
  3070.    Amal 10," M 80,-20,20 "
  3071.    Amal 11," M 80,-120,20 "
  3072.    Amal 12," M 0,-120,20 "
  3073.    Return 
  3074.    
  3075.    
  3076.    R_TO_C:
  3077.    For X=3 To 12
  3078.       Channel X To Bob X
  3079.    Next X
  3080.    
  3081.    Amal 3," M 0,-40,20 "
  3082.    Amal 4," M 0,-40,20 "
  3083.    Amal 5," M -40,-120,20 "
  3084.    Amal 6," M 0,-60,20 "
  3085.    Amal 7," M 0,-40,20 "
  3086.    Amal 8," M 120,-40,20 "
  3087.    Amal 9," M 120,40,20 "
  3088.    Amal 10," M 40,40,20 "
  3089.    Amal 11," M 40,120,20 "
  3090.    Amal 12," M 0,120,20 "
  3091.    Return 
  3092.    
  3093.    
  3094.    C_TO_Y:
  3095.    For X=2 To 12
  3096.       Channel X To Bob X
  3097.    Next X
  3098.    
  3099.    Amal 2," M -120,0,20 "
  3100.    Amal 3," M -120,-20,20 "
  3101.    Amal 4," M 0,-20,20 "
  3102.    Amal 5," M 0,-40,20 "
  3103.    Amal 6," M 120,-40,20 "
  3104.    Amal 7," M 120,40,20 "
  3105.    Amal 8," M -120,40,20 "
  3106.    Amal 9," M -120,20,20 "
  3107.    Amal 10," M -40,20,20 "
  3108.    Amal 11," M -40,-80,20 "
  3109.    Amal 12," M 0,-80,20 "
  3110.    Return 
  3111.    
  3112.    
  3113.    Y_TO_S:
  3114.    For X=2 To 12
  3115.       Channel X To Bob X
  3116.    Next X
  3117.    
  3118.    Amal 2," M 120,0,20 "
  3119.    Amal 3," M 120,0,20 "
  3120.    Amal 4," M -80,0,20 "
  3121.    Amal 5," M -80,60,20 "
  3122.    Amal 6," M 0,60,20 "
  3123.    Amal 11," M 0,20,20 "
  3124.    Amal 12," M 0,20,20 "
  3125.    Return 
  3126.    
  3127.    
  3128.    _S_TO_LINE:
  3129.    For X=1 To 12
  3130.       Channel X To Bob X
  3131.    Next X
  3132.    
  3133.    Amal 1," M -80,90,20 "
  3134.    Amal 2," M -210,90,20 "
  3135.    Amal 3," M -180,50,20 "
  3136.    Amal 4," M -30,50,20 "
  3137.    Amal 5," M 0,30,20 "
  3138.    Amal 6," M -90,30,20 "
  3139.    Amal 7," M -60,-70,20 "
  3140.    Amal 8," M 130,-70,20 "
  3141.    Amal 9," M 160,-30,20 "
  3142.    Amal 10," M 70,-30,20 "
  3143.    Amal 11," M 100,-10,20 "
  3144.    Amal 12," M 240,-10,20 "
  3145.    Return 
  3146.    
  3147.    
  3148.    CLR_LINE:
  3149.    Screen 0
  3150.    Ink 8
  3151.    For X=0 To 161
  3152.       Screen Swap 
  3153.       Draw 0,130 To X,130
  3154.       Draw 320,130 To 320-X,130
  3155.    Next X
  3156.    
  3157.    Return 
  3158.    
  3159.    
  3160.    SETUP_BAR:
  3161.    Bob 1,0,40,0
  3162.    Bob 2,107,40,0
  3163.    Bob 3,214,40,0
  3164.    Bob 4,320,40,0
  3165.    Bob 5,320,97,0
  3166.    Bob 6,320,154,0
  3167.    Bob 7,320,210,0
  3168.    Bob 8,214,210,0
  3169.    Bob 9,107,210,0
  3170.    Bob 10,0,210,0
  3171.    Bob 11,0,154,0
  3172.    Bob 12,0,97,0
  3173.    For CTR=1 To 12
  3174.       X(CTR)=X Bob(CTR)
  3175.       Y(CTR)=Y Bob(CTR)
  3176.    Next CTR
  3177.    
  3178.    Polygon X(1),Y(1) To X(2),Y(2) To X(3),Y(3) To X(4),Y(4) To X(5),Y(5) To X(6),Y(6) To X(7),Y(7) To X(8),Y(8) To X(9),Y(9) To X(10),Y(10) To X(11),Y(11) To X(12),Y(12)
  3179.    Screen Swap 
  3180.    Polygon X(1),Y(1) To X(2),Y(2) To X(3),Y(3) To X(4),Y(4) To X(5),Y(5) To X(6),Y(6) To X(7),Y(7) To X(8),Y(8) To X(9),Y(9) To X(10),Y(10) To X(11),Y(11) To X(12),Y(12)
  3181.    Screen 1
  3182.    Fade 2,,,,$FFF,,,,,,,$C11
  3183.    Wait 30
  3184.    Screen 0
  3185.    Return 
  3186.    
  3187.    
  3188.    _PLAY_ANIM:
  3189.    Amal On 
  3190.    COUNTER=0
  3191.    Repeat 
  3192.       
  3193.       For CTR=1 To 12
  3194.          X(CTR)=X Bob(CTR)
  3195.          Y(CTR)=Y Bob(CTR)
  3196.       Next CTR
  3197.       
  3198.       Screen Swap : Wait Vbl : Cls 0
  3199.       Polygon X(1),Y(1) To X(2),Y(2) To X(3),Y(3) To X(4),Y(4) To X(5),Y(5) To X(6),Y(6) To X(7),Y(7) To X(8),Y(8) To X(9),Y(9) To X(10),Y(10) To X(11),Y(11) To X(12),Y(12)
  3200.       Synchro 
  3201.       Inc COUNTER
  3202.       
  3203.    Until COUNTER=25
  3204.    Return 
  3205.    
  3206.    
  3207.    DUG:
  3208.    Screen 1
  3209.    Ink 0
  3210.    Bar 180,220 To 320,262
  3211.    Screen Copy 2,0,0,128,22 To 1,200,220
  3212.    Fade 1,,$FFF
  3213.    Screen 0
  3214.    Return 
  3215.    
  3216.    
  3217.    MATT:
  3218.    Screen 1
  3219.    Fade 2,,$0
  3220.    Wait 30
  3221.    Ink 0
  3222.    Bar 180,220 To 320,262
  3223.    Screen Copy 2,0,22,128,44 To 1,180,220
  3224.    Fade 1,,$FFF
  3225.    Screen 0
  3226.    Return 
  3227.    
  3228.    
  3229.    _AND_ROB:
  3230.    ' - And
  3231.    Screen 1
  3232.    Fade 1,,$0
  3233.    Wait 15
  3234.    Ink 0
  3235.    Bar 180,220 To 320,262
  3236.    Screen Copy 2,0,44,128,66 To 1,200,220
  3237.    Fade 1,,$FFF
  3238.    Wait 30
  3239.    
  3240.    ' - Rob  
  3241.    Fade 1,,$0
  3242.    Wait 15
  3243.    Ink 0
  3244.    Bar 180,220 To 320,262
  3245.    Screen Copy 2,0,66,128,88 To 1,200,220
  3246.    Fade 1,,$FFF
  3247.    Screen 0
  3248.    Return 
  3249.    
  3250.    
  3251.    _OF_CYS:
  3252.    ' - Of 
  3253.    Screen 1
  3254.    Fade 1,,$0
  3255.    Wait 15
  3256.    Ink 0
  3257.    Bar 180,220 To 320,262
  3258.    Screen Copy 2,0,88,128,110 To 1,220,220
  3259.    Fade 1,,$FFF
  3260.    Wait 30
  3261.    
  3262.    ' - CYS  
  3263.    Fade 1,,$0
  3264.    Wait 15
  3265.    Ink 0
  3266.    Bar 180,220 To 320,262
  3267.    Screen Copy 2,0,110,128,132 To 1,200,220
  3268.    Fade 1,,$FFF
  3269.    Screen 0
  3270.    Return 
  3271.    
  3272.    
  3273.    CLR_CYS:
  3274.    Screen 1
  3275.    Fade 1,,$0
  3276.    Wait 15
  3277.    Ink 0
  3278.    Bar 180,220 To 320,262
  3279.    Screen 0
  3280.    Return 
  3281.    
  3282.    
  3283.    ' -- Flash on 'D' graphics 
  3284.    BITMAP_D:
  3285.    ' screen 0 = background
  3286.    '        3 = picture 
  3287.    Screen Copy 3,0,0,161,161 To 0,80,40 : Rem copy D 
  3288.    Screen Swap : Wait Vbl 
  3289.    Screen 1
  3290.    
  3291.    ' fade to white
  3292.    Palette ,,,,,,,,,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF
  3293.    
  3294.    ' fade to blue range 
  3295.    Fade 1,,,,,,,,,,$F00,$900,$400,$F,$B,$7,$4
  3296.    Wait 15*1
  3297.    
  3298.    For L=0 To 35 : Wait Vbl : Next L
  3299.    
  3300.    ' fade back to original colour 
  3301.    Fade 1,,,,,,,,,,$C11,$C11,$C11,$C11,$C11,$C11,$C11
  3302.    Wait 15*1
  3303.    Screen 0
  3304.    
  3305.    Return 
  3306.    
  3307.    
  3308.    ' -- Flash on graphics for 'M' 
  3309.    BITMAP_M:
  3310.    ' screen 0 = background
  3311.    '        3 = picture 
  3312.    Screen Copy 3,169,0,330,161 To 0,80,40 : Rem copy M 
  3313.    Screen Swap : Wait Vbl 
  3314.    Screen 1
  3315.    
  3316.    ' fade to white
  3317.    Palette ,,,,,,,,,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF
  3318.    
  3319.    ' fade to blue range 
  3320.    Fade 1,,,,,,,,,,$F00,$900,$400,$F,$B,$7,$4
  3321.    Wait 15*1
  3322.    
  3323.    For L=0 To 35 : Wait Vbl : Next L
  3324.    
  3325.    ' fade back to original colour 
  3326.    Fade 1,,,,,,,,,,$C11,$C11,$C11,$C11,$C11,$C11,$C11
  3327.    Wait 15*1
  3328.    Screen 0
  3329.    
  3330.    Return 
  3331.    
  3332.    
  3333.    ' -- flash on graphics for 'R' 
  3334.    BITMAP_R:
  3335.    ' screen 0 = background
  3336.    '        3 = picture 
  3337.    Screen Copy 3,0,162,161,323 To 0,80,40 : Rem copy R 
  3338.    Screen Swap : Wait Vbl 
  3339.    Screen 1
  3340.    
  3341.    ' fade to white
  3342.    Palette ,,,,,,,,,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF
  3343.    
  3344.    ' fade to blue range 
  3345.    Fade 1,,,,,,,,,,$F00,$900,$400,$F,$B,$7,$4
  3346.    Wait 15*1
  3347.    
  3348.    For L=0 To 35 : Wait Vbl : Next L
  3349.    
  3350.    ' fade back to original colour 
  3351.    Fade 1,,,,,,,,,,$C11,$C11,$C11,$C11,$C11,$C11,$C11
  3352.    Wait 15*1
  3353.    Screen 0
  3354.    
  3355.    Return 
  3356.    
  3357. End Proc
  3358. Procedure _SCREEN_BRUSH
  3359.    ' - Code - Rob 
  3360.    
  3361.    ' - Set the colours (both of them!)
  3362.    Palette 0,$FFF
  3363.    
  3364.    ' - Define the movement for the brush bob
  3365.    Channel 1 To Bob 1
  3366.    M$="L: M 320,-40,20 ; M -320,-40,20 ; J L"
  3367.    Set Bob 1,-1,,
  3368.    Bob 1,-30,250,7
  3369.    Amal 1,M$
  3370.    
  3371.    ' - Start it 
  3372.    Amal On 
  3373.    
  3374.    ' - Wait for it to finish
  3375.    Wait 180
  3376.    Amal Off 
  3377.    Bob Off 
  3378.    
  3379. End Proc
  3380. Procedure MAN
  3381.    ' - Code - Matt & Rob
  3382.    ' - GFX - Dug (Matt - Wall + Policeman)
  3383.    
  3384.    ' - Fade it up to white
  3385.    Fade 1,$FFF,$FFF
  3386.    Wait 15
  3387.    
  3388.    ' - Open screen and clear it to white
  3389.    Screen Open 0,320,256,8,Lowres
  3390.    Curs Off : Cls 1 : Hide : Flash Off 
  3391.    
  3392.    W=$FFF
  3393.    Palette W,W,W,W,W,W,W,W
  3394.    
  3395.    ' - Unpack th background picture 
  3396.    Unpack 9 To 1
  3397.    Screen Hide 1
  3398.    Screen To Front 0
  3399.    
  3400.    ' - Paste the backgroud picture on screen 0
  3401.    Screen Copy 1,0,0,320,256 To 0,0,0
  3402.    Screen 0
  3403.    
  3404.    ' - Fade it on 
  3405.    Fade 1 To 1
  3406.    Wait 15
  3407.    Screen Close 1
  3408.    
  3409.    ' - Give them some time to read the posters (gee, they're funny!)
  3410.    Wait 150
  3411.    Double Buffer 
  3412.    
  3413.    ' - Define animation 
  3414.    ' - Green dudes
  3415.    A$="Anim 0,(1,5)(2,5)(3,5)(2,5);"
  3416.    A$=A$+" M 250,0,250 : M 70,200,100"
  3417.    
  3418.    ' - It's a police dude OK! - He is not wearing a blue dustbin! 
  3419.    B$="Anim 0,(4,5)(4,5)(6,5)(5,5);"
  3420.    B$=B$+" M 250,0,250 : M 70,200,100"
  3421.    
  3422.    ' - Define movement string 
  3423.    Y$="(1,-4,3)(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3)(1,4,3)L"
  3424.    
  3425.    ' - Start the green dude animation 
  3426.    For A=1 To 3
  3427.       Bob A,-20,100,1
  3428.       Channel A To Bob A
  3429.       Amal A,A$
  3430.       Move Y A,Y$
  3431.       Amal On A
  3432.       Move On A
  3433.       Wait 15
  3434.    Next A
  3435.    
  3436.    Amal On 
  3437.    Move On 
  3438.    Wait 90
  3439.    
  3440.    ' - Start the police dude animation
  3441.    Bob 4,-20,100,4
  3442.    Channel 4 To Bob 4
  3443.    Amal 4,B$
  3444.    Move Y 4,Y$
  3445.    Amal On 4
  3446.    Move On 4
  3447.    
  3448.    ' - Wait for the animation to finish or Mouse Key
  3449.    Repeat 
  3450.    Until Y Bob(4)>260 or Mouse Key=1
  3451.    
  3452.    ' - Shut the screens up
  3453.    Wait 50
  3454.    Fade 1 : Wait 15
  3455.    Screen Close 0
  3456.    Bob Off 
  3457.    Amal Off 
  3458.    Move Off 
  3459.    
  3460.    ' - Bye Bye Banks! 
  3461.    Erase 1
  3462.    Erase 9
  3463.    
  3464. End Proc
  3465.  
  3466. ' - Menu options.. 
  3467. Procedure MAIN_MENU
  3468.    SETUP_FONT
  3469.    NEW_TEXT_SCREEN["page9"]
  3470.    Load "no-refund2!:stuff/menu_options",8
  3471.    Load "no-refund2!:stuff/menu_logo",7
  3472.    Load "no-refund2!:stuff/menu_spr",1
  3473.    Wait 50
  3474.    CLEAR_TEXT_SCREEN
  3475.    SHUT_TEXT_SCREENS
  3476.    
  3477.    ' - Start the stuff
  3478.    MENU
  3479. End Proc
  3480. Procedure MENU
  3481.    ' - Code - Matt (Dug)
  3482.    ' - GFX - Matt 
  3483.    
  3484.    Unpack 8 To 1
  3485.    Screen Hide 1
  3486.    Erase 8
  3487.    
  3488.    Unpack 7 To 0
  3489.    Palette $2,,,,,,,
  3490.    Double Buffer 
  3491.    Erase 7
  3492.    
  3493.    Screen Open 2,320,200,2,Lowres
  3494.    Curs Off : Cls 0 : Hide : Flash Off : Palette 0,0
  3495.    Screen Display 2,,124,,
  3496.    
  3497.    Screen 0
  3498.    
  3499.    ' - Animate saw
  3500.    
  3501.    SAW_MOVE$="Anim 0,(1,3)(2,3)(3,3)(4,3)(5,3)(4,3)(3,3)(2,3);"
  3502.    SAW_MOVE$=SAW_MOVE$+"M -360,0,225;"
  3503.    Bob 1,320,44,1
  3504.    Channel 1 To Bob 1
  3505.    
  3506.    Amal 1,SAW_MOVE$
  3507.    Amal On 1
  3508.    
  3509.    ' - Wait for animation to finish or mouse key
  3510.    Repeat 
  3511.    Until Mouse Key=1 or X Bob(1)<-15
  3512.    
  3513.    Screen To Back 1
  3514.    Screen Show 1
  3515.    Wait Vbl 
  3516.    
  3517.    Amal Off 
  3518.    Bob Off 
  3519.    
  3520.    ' - Move screen off
  3521.    SCR_MOVE$="M 0,200,10"
  3522.    Channel 2 To Screen Display 2
  3523.    Amal 2,SCR_MOVE$
  3524.    
  3525.    Amal On 2
  3526.    Wait 40
  3527.    
  3528.    
  3529.    ' -- Wait for user to chose one of the silky smooth and sexy programs..
  3530.    Screen 1
  3531.    
  3532.    ' - Set sprite colours 
  3533.    Colour 17,$FF0
  3534.    Colour 18,$F80
  3535.    Colour 19,$F00
  3536.    Limit Mouse 128,135 To 420,265
  3537.    
  3538.    ' - Define zones 
  3539.    Reserve Zone 3
  3540.    Set Zone 1,56,191 To 84,219
  3541.    Set Zone 2,146,191 To 174,219
  3542.    Set Zone 3,236,191 To 264,219
  3543.    Hot Spot 6,3,7
  3544.    Hot Spot 7,3,7
  3545.    
  3546.    IMAGE=6
  3547.    _CHOSEN=False
  3548.    
  3549.    ' - Main loop
  3550.    Repeat 
  3551.       MX=X Mouse
  3552.       MY=Y Mouse
  3553.       MZ=Zone(X Screen(X Sprite(0)),Y Screen(Y Sprite(0)))
  3554.       Sprite 0,MX,MY,IMAGE
  3555.       If Mouse Key=1
  3556.          IMAGE=7
  3557.          Sprite 0,MX,MY,IMAGE
  3558.          Wait Vbl 
  3559.          If MZ>0
  3560.             On MZ Proc SETUP_QUEST,CONTINUE,NUKE_EM
  3561.             _CHOSEN=True
  3562.          End If 
  3563.       Else 
  3564.          IMAGE=6
  3565.       End If 
  3566.    Until _CHOSEN
  3567.    
  3568. End Proc
  3569. Procedure _CLOSE_MENU
  3570.    
  3571.    ' - Close the menu screens a lose the sprite!
  3572.    Screen 0 : Fade 1
  3573.    Screen 1 : Fade 1
  3574.    Wait 15
  3575.    Sprite Off 
  3576.    Screen Close 0
  3577.    Screen Close 1
  3578.    Screen Close 2
  3579.    Erase 1
  3580.    
  3581. End Proc
  3582. Procedure CONTINUE
  3583.    ' - Simply calls the close menu procedure and then 
  3584.    ' - allows the demo to carry on...   
  3585.    
  3586.    _CLOSE_MENU
  3587.    VECTOR_BALLS
  3588.    JELLO_DUCK
  3589.    KANO_TEXT_AEROSOL
  3590. End Proc
  3591.  
  3592. ' - The Cybornetics questionnaire
  3593. Procedure SETUP_QUEST
  3594.    
  3595.    _CLOSE_MENU
  3596.    SETUP_FONT
  3597.    NEW_TEXT_SCREEN["page10"]
  3598.    Load "no-refund2!:stuff/quest_pic",7
  3599.    Wait 150
  3600.    CLEAR_TEXT_SCREEN
  3601.    SHUT_TEXT_SCREENS
  3602.    
  3603.    ' - Start the stuff
  3604.    QUEST
  3605.    MAIN_MENU
  3606. End Proc
  3607. Procedure QUEST
  3608.    ' - Code - Dug 
  3609.    ' - GFX - Matt 
  3610.    ' - Questions - Matt & Rob 
  3611.    
  3612.    Unpack 7 To 1
  3613.    Screen To Back 1
  3614.    Erase 7
  3615.    
  3616.    Screen Open 0,640,100,8,Hires
  3617.    Flash Off : Curs Off : Cls 0 : Hide 
  3618.    Screen Display 0,,200,,
  3619.    Screen To Front 0
  3620.    
  3621.    Screen 0
  3622.    
  3623.    Dim CLR(7),RGB_FADE(7),LINE$(5)
  3624.    SCORE=0
  3625.    
  3626.    
  3627.    Restore _PALETTE
  3628.    For C=0 To 7
  3629.       Read CLR(C)
  3630.    Next C
  3631.    Palette 1,1,1,1,1,1,1,1
  3632.    
  3633.    Y Mouse=2
  3634.    
  3635.    Restore QUESTIONS
  3636.    Read NUMQ
  3637.    For L=1 To NUMQ
  3638.       Read Q$,A$,B$,C$,D$,RIGHT_ANSWER,COMMENT1$,COMMENT2$,COMMENT3$,COMMENT4$
  3639.       Gosub DISPLAY_QUESTION
  3640.       If QUIT
  3641.          Exit 
  3642.       End If 
  3643.       Gosub REPLY
  3644.    Next L
  3645.    If Not QUIT
  3646.       Gosub FINAL_COMMENT
  3647.    End If 
  3648.    Gosub FAD_SCREEN
  3649.    Pop Proc
  3650.    
  3651.    
  3652.    DISPLAY_QUESTION:
  3653.    
  3654.    Limit Mouse 0,2 To 320,8
  3655.    
  3656.    ' - Copy question and answers into an array
  3657.    LINE$(0)=Q$
  3658.    LINE$(1)=A$
  3659.    LINE$(2)=B$
  3660.    LINE$(3)=C$
  3661.    LINE$(4)=D$
  3662.    
  3663.    ' - Fade the questions and answers onto the screen 
  3664.    
  3665.    ' - Reset the RGB_FADE values and print the line onto the screen 
  3666.    For C=0 To 7 : RGB_FADE(C)=1 : Next C
  3667.    I=Rnd(6)+1
  3668.    Ink I,0
  3669.    Text 10,10,LINE$(0) : Rem                     The Question 
  3670.    Draw 10,12 To 10+Text Length(LINE$(0)),12
  3671.    
  3672.    ' - Fade the right colour on 
  3673.    RGB_FADE(I)=CLR(I)
  3674.    Fade 2,RGB_FADE(0),RGB_FADE(1),RGB_FADE(2),RGB_FADE(3),RGB_FADE(4),RGB_FADE(5),RGB_FADE(6),RGB_FADE(7)
  3675.    Wait 15
  3676.    
  3677.    
  3678.    Add I,1,1 To 7 : Rem Use next colour  
  3679.    For A=1 To 4
  3680.       Ink I
  3681.       Text 10,25+A*10,LINE$(A) : Rem             The Answers... 
  3682.       '
  3683.       RGB_FADE(I)=CLR(I)
  3684.       Fade 2,RGB_FADE(0),RGB_FADE(1),RGB_FADE(2),RGB_FADE(3),RGB_FADE(4),RGB_FADE(5),RGB_FADE(6),RGB_FADE(7)
  3685.       Wait 5
  3686.       
  3687.       Add I,1,1 To 7 : Rem    - Use next colour   
  3688.    Next A
  3689.    Wait 40
  3690.    
  3691.    ' - Rainbow to hilight chosen option   
  3692.    Set Rainbow 0,0,4096,"","",""
  3693.    Rain(0,1)=$248
  3694.    For Y=2 To 10
  3695.       Rain(0,Y)=$48F
  3696.    Next Y
  3697.    Rain(0,11)=$248
  3698.    Rainbow 0,0,0,13
  3699.    
  3700.    ' - Get the user to pick an option 
  3701.    OPTION_CHOSEN=0
  3702.    QUIT=False
  3703.    Repeat 
  3704.       Y=Y Mouse/2 : Rainbow 0,0,216+Y*10,
  3705.       If Mouse Key=2
  3706.          QUIT=True
  3707.          OPTION_CHOSEN=Y
  3708.       Else 
  3709.          If Mouse Key=1
  3710.             OPTION_CHOSEN=Y
  3711.          End If 
  3712.       End If 
  3713.       Wait Vbl 
  3714.    Until OPTION_CHOSEN
  3715.    Rainbow 0,0,40,1
  3716.    
  3717.    Add I,1,1 To 7
  3718.    Ink I,0
  3719.    RGB_FADE(I)=CLR(I)
  3720.    
  3721.    Return 
  3722.    
  3723.    
  3724.    REPLY:
  3725.    
  3726.    If OPTION_CHOSEN=RIGHT_ANSWER
  3727.       Inc SCORE
  3728.    End If 
  3729.    
  3730.    If OPTION_CHOSEN=1
  3731.       Text 10,80,COMMENT1$
  3732.    Else 
  3733.       If OPTION_CHOSEN=2
  3734.          Text 10,80,COMMENT2$
  3735.       Else 
  3736.          If OPTION_CHOSEN=3
  3737.             Text 10,80,COMMENT3$
  3738.          Else 
  3739.             If OPTION_CHOSEN=4
  3740.                Text 10,80,COMMENT4$
  3741.             End If 
  3742.          End If 
  3743.       End If 
  3744.    End If 
  3745.    
  3746.    Fade 2,RGB_FADE(0),RGB_FADE(1),RGB_FADE(2),RGB_FADE(3),RGB_FADE(4),RGB_FADE(5),RGB_FADE(6),RGB_FADE(7)
  3747.    Wait 30
  3748.    
  3749.    Wait 100
  3750.    Fade 2,1,1,1,1,1,1,1,1,1 : Wait 30 : Cls 0
  3751.    
  3752.    Return 
  3753.    
  3754.    
  3755.    FINAL_COMMENT:
  3756.    Ink 7,0
  3757.    SCORE$=Str$(SCORE)
  3758.    NUMQ$=Str$(NUMQ)
  3759.    
  3760.    If SCORE<3
  3761.       RATING$="Are you Cheezy Hawkes?"
  3762.    Else 
  3763.       If SCORE<6
  3764.          RATING$="Come on! It wasn't THAT hard!"
  3765.       Else 
  3766.          If SCORE<9
  3767.             RATING$="Look!  Stop choosing the funny answers!"
  3768.          Else 
  3769.             If SCORE<12
  3770.                RATING$="Approx. 50% Not good enough."
  3771.             Else 
  3772.                If SCORE<15
  3773.                   RATING$="It's good, but not that good!"
  3774.                Else 
  3775.                   If SCORE<17
  3776.                      RATING$="This is more than we got! (we've forgotten the answers!)"
  3777.                   Else 
  3778.                      If SCORE<NUMQ
  3779.                         RATING$="Sooooo Close - a bit more effort needed."
  3780.                      Else 
  3781.                         If SCORE=NUMQ
  3782.                            RATING$="!TOP SCORE! (you cheating git!)"
  3783.                         End If 
  3784.                      End If 
  3785.                   End If 
  3786.                End If 
  3787.             End If 
  3788.          End If 
  3789.       End If 
  3790.    End If 
  3791.    
  3792.    ' - Change end message appropriately 
  3793.    MSG$="Well that's all folks!"
  3794.    MSG1$="You scored"+SCORE$+" out of"+NUMQ$
  3795.    MSG2$="Your rating is : "+RATING$
  3796.    
  3797.    ' - Print end message
  3798.    Text 10,20,MSG$
  3799.    Text 10,35,MSG1$
  3800.    Text 10,50,MSG2$
  3801.    
  3802.    ' - Fade on message and wait for a bit, then fade off
  3803.    Fade 3,1,1,1,1,1,1,1,$FA4 : Wait 45
  3804.    Repeat 
  3805.    Until Mouse Key=1
  3806.    Return 
  3807.    
  3808.    FAD_SCREEN:
  3809.    
  3810.    Fade 2
  3811.    Screen 1
  3812.    Fade 1 : Wait 15
  3813.    
  3814.    Screen Close 0
  3815.    Screen Close 1
  3816.    
  3817.    Return 
  3818.    
  3819.    
  3820.    _PALETTE:
  3821.    Data 0,$33F,$D0,$D40,$D3D,$DD4,$3DD,$FA4
  3822.    
  3823.    ' - Structure of question data.... 
  3824.    
  3825.    ' Data "<The Question>"
  3826.    ' Data "<Option A>"
  3827.    ' Data "<Option B>"
  3828.    ' Data "<Option C>"
  3829.    ' Data "<Option D>"
  3830.    ' Data <Right_Answer>
  3831.    ' Data "<Comment for option A>"  
  3832.    ' Data "<Comment for option B>"  
  3833.    ' Data "<Comment for option C>"  
  3834.    ' Data "<Comment for option D>"  
  3835.    
  3836.    QUESTIONS:
  3837.    Data 20
  3838.    1
  3839.    Data "Which of the following is the best Amiga mag?"
  3840.    Data "a) Just 17"
  3841.    Data "b) CU Amiga"
  3842.    Data "c) 2000 AD"
  3843.    Data "d) Bella"
  3844.    Data 2
  3845.    Data "No, but it has good articles."
  3846.    Data "Yeah! And it has good disks!"
  3847.    Data "Cool graphics, good stories, no Amigas!"
  3848.    Data "Includes a knitting pattern for an Amiga dust cover!!"
  3849.    2
  3850.    Data "What is CaMg3(CO3)2 ?"
  3851.    Data "a) Hammerite"
  3852.    Data "b) Dolomite"
  3853.    Data "c) Chesney Hawkes"
  3854.    Data "d) Do you use it in AMAL?"
  3855.    Data 2
  3856.    Data "Any old iron, any old iron... NO!"
  3857.    Data "Yeah! - An easy one for all you geologists."
  3858.    Data "They do look similar!!!"
  3859.    Data "Only Cubic does!"
  3860.    3
  3861.    Data "Who killed Laura Palmer?"
  3862.    Data "a) Lee Harvey Oswald"
  3863.    Data "b) Chesney Hawkes"
  3864.    Data "c) Mr. Benn"
  3865.    Data "d) Her dad! Or was it that bloke with long hair?"
  3866.    Data 4
  3867.    Data "He could never have made that shot!"
  3868.    Data "Death by serenade."
  3869.    Data "As if by magic, she disappeared!"
  3870.    Data "Twin Peaks, did you understand it?"
  3871.    4
  3872.    Data "... and the best game of all time is..."
  3873.    Data "a) Necronom"
  3874.    Data "b) Wing Commander"
  3875.    Data "c) Frenetic"
  3876.    Data "d) Chesney Hawkes"
  3877.    Data 3
  3878.    Data "It plays like one of Dugs!!!"
  3879.    Data "Good, but TOO slow."
  3880.    Data "The ultimate 2 player blast!"
  3881.    Data "No playability whatsoever!"
  3882.    5
  3883.    Data "Which is the cool AMOS group?"
  3884.    Data "a) Fanatix"
  3885.    Data "b) Cubic"
  3886.    Data "c) Chesney Hawkes"
  3887.    Data "d) Arc Angel"
  3888.    Data 1
  3889.    Data "They were, but they are no more! (Where are you Jag?)"
  3890.    Data "Major attitude problem!"
  3891.    Data "Didn't he write AMOS?"
  3892.    Data "Now we're going back too far!"
  3893.    6
  3894.    Data "and the best band?"
  3895.    Data "a) Chesney Hawkes"
  3896.    Data "b) 2 (Un)limited"
  3897.    Data "c) Rumblefish"
  3898.    Data "d) Faith No More"
  3899.    Data 4
  3900.    Data "He is the one and only (too many)!"
  3901.    Data "Techno, Techno, Techno, Techno! - NO!"
  3902.    Data "That's Stews band you muppet!"
  3903.    Data "Is Mike Patton weird or wot!?!"
  3904.    7
  3905.    Data "best food????"
  3906.    Data "a) Vitafruits"
  3907.    Data "b) Chesney Hawkes"
  3908.    Data "c) Fizzy chewits"
  3909.    Data "d) Toffee Crisp"
  3910.    Data 4
  3911.    Data "Good during lectures, but a bit too tangy!"
  3912.    Data "He sucks!"
  3913.    Data "Lemonade, Orangeade or Cola?  Descisions, descisions!"
  3914.    Data "Yeah! - Go and release the crispy bits!"
  3915.    8
  3916.    Data "In an emergency..."
  3917.    Data "a) Grab your Amiga and run"
  3918.    Data "b) Jump"
  3919.    Data "c) Don't Panic"
  3920.    Data "d) Call Chesney"
  3921.    Data 3
  3922.    Data "You sad git!  Claim on the insurance for a new A4000!"
  3923.    Data "Van Halen - Aka. Perms R us!"
  3924.    Data "Put a babel fish in your ear, and grab your towel!"
  3925.    Data "You could use him as a life raft or something!"
  3926.    9
  3927.    Data "You're driving down the street when Chesney Hawkes suddenly appears, do you"
  3928.    Data "a) Hit the gas"
  3929.    Data "b) Ask him to sign your fav' Chesney album"
  3930.    Data "c) Slow down, taking evasive action"
  3931.    Data "d) Chesney who?"
  3932.    Data 1
  3933.    Data "Kersplat!  Yee Haa!"
  3934.    Data "AAAAAARRRRRGGGGHHHHHHH!!!!!!!"
  3935.    Data "Why?  Are you mental?"
  3936.    Data "Well said!  But we won't tell you!"
  3937.    10
  3938.    Data "Cybornetics remind me of..."
  3939.    Data "a) God"
  3940.    Data "b) Chesney Hawkes"
  3941.    Data "c) Long summer days in the algarve"
  3942.    Data "d) Right Said Fred"
  3943.    Data 3
  3944.    Data "Close... Same sandals!"
  3945.    Data "We have just deducted three points!!!"
  3946.    Data "Yeah!  They're boring too!"
  3947.    Data "We're too sexy for this demo!"
  3948.    11
  3949.    Data "Rnd(53278)"
  3950.    Data "a) What?"
  3951.    Data "b) Chesney Hawkes"
  3952.    Data "c) 42"
  3953.    Data "d) 2 Oranges and a Bap"
  3954.    Data 3
  3955.    Data "See Amos Professional manual, page 5.3.10"
  3956.    Data "Are you a fan or what?"
  3957.    Data "Yeah!  Anyone for scrabble?"
  3958.    Data "No!  1 Lemon and 2 Baps!"
  3959.    12
  3960.    Data "To be this good takes..."
  3961.    Data "a) Game Boy"
  3962.    Data "b) Shredded Wheat"
  3963.    Data "c) Chesney Hawkes"
  3964.    Data "d) About 5 minutes"
  3965.    Data 4
  3966.    Data "Yeah, only if you're playing Tetris!"
  3967.    Data "You need to eat THREE! (That's hard!)"
  3968.    Data "I wish I'd never started this Chesney thing now!"
  3969.    Data "Slightly less if you hurry!"
  3970.    13
  3971.    Data "Whats soft, strong and very very long?"
  3972.    Data "a) The M25"
  3973.    Data "b) Snigger"
  3974.    Data "c) Bog roll"
  3975.    Data "d) Chesney Hawkes"
  3976.    Data 2
  3977.    Data "Depends how many times you go round!"
  3978.    Data "Snigger, Snigger"
  3979.    Data "Too obvious!"
  3980.    Data "He's soft... but that's all!"
  3981.    14
  3982.    Data "If you were on blind date, which question would you ask... number 2"
  3983.    Data "a) Are you rich?"
  3984.    Data "b) Are you Chesney Hawkes?"
  3985.    Data "c) Does BO put you off?"
  3986.    Data "d) Which flower describes you best?"
  3987.    Data 4
  3988.    Data "Essential knowledge!"
  3989.    Data "You have to be careful these days!"
  3990.    Data "Slightly less than nasal hair!"
  3991.    Data "Rob - Tulip, Matt - Rose, Dug - Rhubarb!"
  3992.    15
  3993.    Data "Which of the following is the best arctic survival tip?"
  3994.    Data "a) Wrap up warm"
  3995.    Data "b) Mind how you go"
  3996.    Data "c) Don't forget to phone"
  3997.    Data "d) Send Chesney Hawkes"
  3998.    Data 2
  3999.    Data "Don't forget your KYTV T-Shirt"
  4000.    Data "Why do people say that!  As if you aren't going to!"
  4001.    Data "If you've got a 10p it'll be a Phone-Card only phone!"
  4002.    Data "The further the better!"
  4003.    16
  4004.    Data "Who is the one and only?"
  4005.    Data "a) Rob"
  4006.    Data "b) Chesney Hawkes"
  4007.    Data "c) Matt"
  4008.    Data "d) Dug"
  4009.    Data 2
  4010.    Data "The one and only LAZY coder of the year! (3 years running)"
  4011.    Data "I couldn't cope with any more of him!"
  4012.    Data "The one and only A1200 owner in Cybornetics!"
  4013.    Data "The one and only person who actually read the AMOS manual!"
  4014.    17
  4015.    Data "Are you still awake?"
  4016.    Data "a) .........."
  4017.    Data "b) eh?"
  4018.    Data "c) hello? CN-FM play the best music?"
  4019.    Data "d) This is most interesting!"
  4020.    Data 3
  4021.    Data "Zzzzz... EH! What? Whaaaaaa!"
  4022.    Data "Why do we bother? (Don't answer that!)"
  4023.    Data "Well done!  You have just won a years supply of toothpaste!"
  4024.    Data "Yeah, so is eating a bowl of lentil soup! (with chives)"
  4025.    18
  4026.    Data "What's on page 51 of the August 93 issue of Amiga Mart?"
  4027.    Data "a) Ikari Warriors extensive preview."
  4028.    Data "b) A rather excellent review of a rather excellent disk!"
  4029.    Data "c) Everything you ever wanted to know about tape streamers"
  4030.    Data "d) A500 found on Moon!  In-depth report."
  4031.    Data 2
  4032.    Data "No, that was in last months"
  4033.    Data "The Awakening, by some group called CYBONETICS (Wot No R?)"
  4034.    Data "They stream tapes they do!"
  4035.    Data "Investigative journalism at its most Dim(BAD)"
  4036.    19
  4037.    Data "Who is the best suited to change a light-bulb?"
  4038.    Data "a) An analyst"
  4039.    Data "b) An electrician"
  4040.    Data "c) Chesney Hawkes"
  4041.    Data "d) A coder"
  4042.    Data 2
  4043.    Data "No, leave that to the programmer"
  4044.    Data "Was this one too easy?"
  4045.    Data "He would do it!  But you would never hear from him again!"
  4046.    Data "Gosub CALL_ELECTRICIAN"
  4047.    20
  4048.    Data "What is AKIRA?"
  4049.    Data "a) Special fried rice"
  4050.    Data "b) A Japanese Bugs Bunny"
  4051.    Data "c) AAAAAAAAHHHHHHHHH!  MANGA!"
  4052.    Data "d) A super solid, steel framed, city shopper bike!"
  4053.    Data 3
  4054.    Data "Prawn Balls!"
  4055.    Data "NO!"
  4056.    Data "Yeah!  R U N2 Anime 2?"
  4057.    Data "Weighing in at 200lbs"
  4058.    
  4059. End Proc
  4060.  
  4061. ' - Nuke 'em goes here!
  4062. Procedure NUKE_EM
  4063.    _CLOSE_MENU
  4064.    SETUP_FONT
  4065.    NEW_TEXT_SCREEN["page13"]
  4066.    ' - Clear out the demo 
  4067.    Track Stop 
  4068.    Erase 3
  4069.    Erase 13
  4070.    Erase 14
  4071.    Load "no-refund2!:stuff/nuke_title",9
  4072.    Wait 50
  4073.    CLEAR_TEXT_SCREEN
  4074.    SHUT_TEXT_SCREENS
  4075.    
  4076.    ' - Run Nuke 'em 
  4077.    _SHOOT_EM_UP
  4078.    
  4079.    ' - Restore the demo 
  4080.    RESET_DEMO
  4081.    MAIN_MENU
  4082. End Proc
  4083. Procedure _SHOOT_EM_UP
  4084.    ' - Code - Rob 
  4085.    ' - GFX - Matt (Rob - Title Pic) 
  4086.    
  4087.    ' - Intro stuff... 
  4088.    
  4089.    ' - Title screen 
  4090.    Unpack 9 To 0
  4091.    Screen Hide 0
  4092.    Erase 9
  4093.    Screen Open 1,320,256,16,Lowres
  4094.    Curs Off : Cls 0 : Flash Off : Hide 
  4095.    Get Palette 0
  4096.    Screen 0
  4097.    Palette 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  4098.    Screen Show 0
  4099.    Screen To Front 0
  4100.    Fade 1 To 1
  4101.    Wait 15
  4102.    Screen Close 1
  4103.    
  4104.    ' - Loads while title screen is displayed
  4105.    Load "no-refund2!:stuff/nuke_bobs",1
  4106.    Load "no-refund2!:stuff/nuke_sams",5
  4107.    Load "no-refund2!:stuff/nuke_back1",6
  4108.    Load "no-refund2!:stuff/nuke_back2",7
  4109.    Load "no-refund2!:stuff/nuke_back3",10
  4110.    Load "no-refund2!:stuff/nuke_ins",11
  4111.    
  4112.    ' - Instructions screen
  4113.    Fade 1 : Wait 15
  4114.    Screen Close 0
  4115.    Unpack 11 To 0
  4116.    Palette 0,0
  4117.    Erase 11
  4118.    Fade 1,0,$FFF
  4119.    Wait 15
  4120.    
  4121.    ' - Loads while it is displayed
  4122.    Load "no-refund2!:stuff/nuke_stat",8
  4123.    Load "no-refund2!:stuff/nuke_scroll",9
  4124.    
  4125.    ' - Wait for them to continue
  4126.    Repeat 
  4127.    Until Fire(1)
  4128.    
  4129.    Fade 1 : Wait 15
  4130.    Screen Close 0
  4131.    
  4132.    
  4133.    
  4134.    ' -----  MAIN SHOOT EM UP CODE!  ----- 
  4135.    
  4136.    
  4137.    
  4138.    ' ----- Definitions -----
  4139.    
  4140.    ' - Define some stuff
  4141.    Dim ALIEN_HIT(5) : Rem - Stores the hits required by each alien 
  4142.    _START_LIVES=7 : Rem   - No CHEATING! 
  4143.    NUM_OF_WAVES=20 : Rem  - Includes Bonus Levels 
  4144.    SPEED=3 : Rem          - Main Ship speed - 1=Slow, 3=Fast  
  4145.    NUM_BOBS=7 : Rem       - Main Ship, Bullet and the rest are Aliens
  4146.    
  4147.    ' - Define some more stuff 
  4148.    TIME_BETWEEN_WAVES=50
  4149.    
  4150.    ' - Used for inertia calculations
  4151.    _UP=1
  4152.    _DOWN=2
  4153.    _LEFT=3
  4154.    _RIGHT=4
  4155.    
  4156.    ' - Define some Bob numbers
  4157.    _TEXT_BOB=8
  4158.    P_Q=9
  4159.    
  4160.    ' - Define some Bob Image numbers
  4161.    MAIN_SHIP=1
  4162.    BULLET=2
  4163.    ALIEN_SHIP=3
  4164.    BALL=4
  4165.    SUPER_DAN=5
  4166.    _WAVE_CLEAR=6
  4167.    _GET_READY=7
  4168.    GAME_OVER=8
  4169.    ACID=9
  4170.    DISK=10
  4171.    _PLAY_OR_QUIT=11
  4172.    WASP=12
  4173.    _MINE=13
  4174.    BAT=14
  4175.    _MINE_SHOT=19
  4176.    _AST1=20
  4177.    _AST2=21
  4178.    _AST3=22
  4179.    GUARDIAN1=23
  4180.    GUARDIAN1_EYE=24
  4181.    PAUSED_IMAGE=25
  4182.    _1UP=26
  4183.    _20_POINTS=27
  4184.    _10_POINTS=28
  4185.    BONUS_TEXT=29
  4186.    _FIRE_BALL=30
  4187.    _DONUT=31
  4188.    SPIKE1=32
  4189.    SPIKE2=33
  4190.    SPIKE3=34
  4191.    SPIKE4=35
  4192.    WHEEL=36
  4193.    SCARF=37
  4194.    SKULL_SHOT=38
  4195.    SKULL_EYE=39
  4196.    SKULL=40
  4197.    LADYBIRD=41
  4198.    ARROW=42
  4199.    BEAST_GUARD=43
  4200.    BEAST_EYE=44
  4201.    BEAST_SHOT=45
  4202.    UPPER_GUN=46
  4203.    LOWER_GUN=47
  4204.    CON_TEXT=48
  4205.    
  4206.    ' - Define sample numbers
  4207.    MAIN_SHIP_LASER=1
  4208.    MAIN_SHIP_BOOM=3
  4209.    CHINK=2
  4210.    ALIEN_BOOM=3
  4211.    
  4212.    
  4213.    ' ----- Define screens ----- 
  4214.    
  4215.    ' - Open main play area screen 
  4216.    Screen Open 0,340,125,8,Lowres
  4217.    Curs Off : Cls 0 : Hide : Flash Off 
  4218.    Screen Display 0,,86,,125
  4219.    
  4220.    ' - Open status screen - 2 Colour, Lowres (numbers are hidden off bottom)  
  4221.    Unpack 8 To 2
  4222.    Screen Hide 2
  4223.    Screen Display 2,,260,320,
  4224.    Gosub _UPDATE_LIVES
  4225.    Gosub _UPDATE_LEVEL
  4226.    Gosub _UPDATE_SCORE
  4227.    
  4228.    ' - Unpack background screen - 8 Colour, Lowres
  4229.    Unpack 9 To 1
  4230.    Screen Hide 1
  4231.    
  4232.    ' - Flash bar on border  
  4233.    Flash 1,"(f00,20)(c00,5)(900,5)(500,5)(200,40)(500,5)(900,5)(c00,5)"
  4234.    
  4235.    ' - Set screen priority    
  4236.    Screen To Front 2
  4237.    Screen To Front 0
  4238.    
  4239.    ' - Show Screens (should be done with a fade but I don't know the colours!)
  4240.    Screen Show 2
  4241.    Screen Show 1
  4242.    Screen Show 0
  4243.    Screen 0
  4244.    Double Buffer 
  4245.    Get Sprite Palette 
  4246.    
  4247.    
  4248.    ' ----- Setup Bobs ----- 
  4249.    
  4250.    ' - Define channels for ship, bullet and aliens
  4251.    For CTR=1 To NUM_BOBS
  4252.       Channel CTR To Bob CTR
  4253.    Next CTR
  4254.    
  4255.    ' - Position baddies off screen for starters 
  4256.    For ALIEN=3 To NUM_OF_BOBS
  4257.       Bob ALIEN,340,240,ALIEN_SHIP
  4258.    Next ALIEN
  4259.    
  4260.    ' - Define Bullet movement and position initial bullet 
  4261.    BULLET$="M 340,0,40 : Let X=800 : Let Y=500"
  4262.    Bob BULLET,540,-60,BULLET
  4263.    
  4264.    ' - Define Alien death movement
  4265.    ALIEN_DIE$="M 0,330,30"
  4266.    
  4267.    ' - Define Main Ship death animation 
  4268.    MAIN_DIE$="A 1,(15,3)(16,3)(17,3)(18,3)"
  4269.    
  4270.    ' - Define Text bob
  4271.    Channel _TEXT_BOB To Bob _TEXT_BOB
  4272.    _TEXT_ON$="M 0,50,25 ;"
  4273.    _TEXT_OFF$="M 0,-50,25 ;"
  4274.    Bob _TEXT_BOB,40,-30,_TEXT
  4275.    
  4276.    ' - Play or Quit text
  4277.    Channel P_Q To Bob P_Q
  4278.    P_Q_ON$="M 0,-50,25 ;"
  4279.    P_Q_OFF$="M 0,50,25 ;"
  4280.    
  4281.    
  4282.    
  4283.    ' ----- Main Loop -----
  4284.    
  4285.    _PLAYED_AND_DIED=False
  4286.    Repeat 
  4287.       YOU_DIED_SCUMBAG=False
  4288.       
  4289.       ' - Display Play or Quit message 
  4290.       Bob P_Q,80,130,_PLAY_OR_QUIT
  4291.       Amal P_Q,P_Q_ON$
  4292.       Amal On 
  4293.       Wait 25
  4294.       
  4295.       ' - Do you want to play? 
  4296.       CHOSEN=False
  4297.       Clear Key 
  4298.       Repeat 
  4299.          If Fire(1)
  4300.             ' - They want to play again - Hurrah!  
  4301.             _PLAY=True
  4302.             CHOSEN=True
  4303.          End If 
  4304.          If Inkey$=Chr$(27)
  4305.             ' - Oh No! They can't take any more! 
  4306.             _PLAY=False
  4307.             CHOSEN=True
  4308.          End If 
  4309.       Until CHOSEN
  4310.       
  4311.       If _PLAY
  4312.          Amal P_Q,P_Q_OFF$
  4313.          If _PLAYED_AND_DIED
  4314.             ' - Remove Game Over text
  4315.             Amal _TEXT_BOB,_TEXT_OFF$
  4316.             _PLAYED_AND_DIED=False
  4317.          End If 
  4318.          Amal On 
  4319.          Wait 25
  4320.          Bob Off P_Q
  4321.          
  4322.          ' - Define variables - Variables are storage spaces which have been assigned names.  The values held by these variables can change.  
  4323.          ALIENS_ALIVE=0
  4324.          _WAVE_CTR=1
  4325.          LIVES=_START_LIVES
  4326.          SCORE=0
  4327.          _TEXT=_GET_READY
  4328.          BONUS_STAGE=False
  4329.          GUARDIAN_STAGE=False
  4330.          BACKGROUND=7
  4331.          INERTIA=0
  4332.          CONST_INERTIA=6
  4333.          CONST_X_MAX=250
  4334.          X_MAX=CONST_X_MAX
  4335.          FINAL_STAGE=False
  4336.          
  4337.          Gosub SETUP_BACKGROUND
  4338.          
  4339.          ' - Reset status screen
  4340.          Gosub _UPDATE_SCORE
  4341.          Gosub _UPDATE_LIVES
  4342.          Gosub _UPDATE_LEVEL
  4343.          
  4344.          ' - Animate background screen (That's not animation!)  
  4345.          Screen 1 : Shift Down 1,2,7,1 : Screen 0
  4346.          
  4347.          
  4348.          ' ----- Game Loop -----
  4349.          
  4350.          Repeat 
  4351.             
  4352.             ' - Set alien wave - When all aliens are dead
  4353.             If ALIENS_ALIVE=0
  4354.                ' - Firstly, make sure all aliens are off screen 
  4355.                Wait 10
  4356.                
  4357.                ' - Reset the max x movement 
  4358.                X_MAX=CONST_X_MAX
  4359.                
  4360.                If GUARDIAN_STAGE
  4361.                   GUARDIAN_STAGE=False
  4362.                   If FINAL_STAGE
  4363.                      Gosub WELL_DONE
  4364.                   End If 
  4365.                   Gosub SETUP_BACKGROUND
  4366.                End If 
  4367.                
  4368.                ' - Then test if they can go on the bonus stage  
  4369.                ' - Proceed to the next level
  4370.                On _WAVE_CTR Gosub _WAVE3,_WAVE1,_WAVE4,_WAVE10,_WAVE8,GUARD1,BONUS_WAVE,_WAVE5,_WAVE2,_WAVE7,_WAVE6,_WAVE13,BEAST,BONUS_WAVE,_WAVE14,_WAVE15,_WAVE9,_WAVE11,_WAVE12,GUARD_SKULL
  4371.                Gosub _UPDATE_LEVEL
  4372.                ' - Then increase the level counter
  4373.                Add _WAVE_CTR,1,1 To NUM_OF_WAVES
  4374.             End If 
  4375.             
  4376.             ' - Pause Mode 
  4377.             If Key State(25)
  4378.                ' - If they press P or p 
  4379.                Gosub PAUSE
  4380.             End If 
  4381.             
  4382.             
  4383.             ' ----- Ship controls -----
  4384.             
  4385.             ' - Move up
  4386.             If Jup(1) and Y Bob(MAIN_SHIP)>-5
  4387.                Bob MAIN_SHIP,,Y Bob(MAIN_SHIP)-SPEED,MAIN_SHIP
  4388.                LASTDIR=_UP
  4389.                INERTIA=CONST_INERTIA
  4390.             End If 
  4391.             
  4392.             ' - Move Down
  4393.             If Jdown(1) and Y Bob(MAIN_SHIP)<100
  4394.                Bob MAIN_SHIP,,Y Bob(MAIN_SHIP)+SPEED,MAIN_SHIP
  4395.                LASTDIR=_DOWN
  4396.                INERTIA=CONST_INERTIA
  4397.             End If 
  4398.             
  4399.             ' - Move Left
  4400.             If Jleft(1) and X Bob(MAIN_SHIP)>0
  4401.                Bob MAIN_SHIP,X Bob(MAIN_SHIP)-SPEED,,MAIN_SHIP
  4402.                LASTDIR=_LEFT
  4403.                INERTIA=CONST_INERTIA
  4404.             End If 
  4405.             
  4406.             ' - Move Right 
  4407.             If Jright(1) and X Bob(MAIN_SHIP)<X_MAX
  4408.                Bob MAIN_SHIP,X Bob(MAIN_SHIP)+SPEED,,MAIN_SHIP
  4409.                LASTDIR=_RIGHT
  4410.                INERTIA=CONST_INERTIA
  4411.             End If 
  4412.             
  4413.             ' - If the joystick is central - Calculate inertia 
  4414.             If(Joy(1) and $F)=0 and INERTIA>0
  4415.                Dec INERTIA
  4416.                If LASTDIR=_UP and Y Bob(MAIN_SHIP)>-5
  4417.                   Bob MAIN_SHIP,,Y Bob(MAIN_SHIP)-1,MAIN_SHIP
  4418.                Else 
  4419.                   If LASTDIR=_DOWN and Y Bob(MAIN_SHIP)<100
  4420.                      Bob MAIN_SHIP,,Y Bob(MAIN_SHIP)+1,MAIN_SHIP
  4421.                   Else 
  4422.                      If LASTDIR=_LEFT and X Bob(MAIN_SHIP)>0
  4423.                         Bob MAIN_SHIP,X Bob(MAIN_SHIP)-1,,MAIN_SHIP
  4424.                      Else 
  4425.                         If LASTDIR=_RIGHT and X Bob(MAIN_SHIP)<X_MAX
  4426.                            Bob MAIN_SHIP,X Bob(MAIN_SHIP)+1,,MAIN_SHIP
  4427.                         End If 
  4428.                      End If 
  4429.                   End If 
  4430.                End If 
  4431.             End If 
  4432.             
  4433.             ' - Fire bullet
  4434.             If Fire(1)
  4435.                If X Bob(BULLET)>320
  4436.                   Wait Vbl 
  4437.                   Bob BULLET,X Bob(MAIN_SHIP)+26,Y Bob(MAIN_SHIP)+9,BULLET
  4438.                   Sam Play %1001,MAIN_SHIP_LASER,14000
  4439.                   Amal BULLET,BULLET$
  4440.                   Amal On BULLET
  4441.                End If 
  4442.             End If 
  4443.             
  4444.             
  4445.             ' ----- Test Collision ----- 
  4446.             
  4447.             ' - Kill Alien 
  4448.             If Bob Col(BULLET,3 To _MAX_KILL+2)
  4449.                ALIEN=Col(-1)
  4450.                Wait Vbl 
  4451.                Gosub YEAH_GOT_ONE
  4452.             End If 
  4453.             
  4454.             ' - Kill main ship 
  4455.             If Bob Col(MAIN_SHIP)
  4456.                ALIEN=Col(-1)
  4457.                Wait Vbl 
  4458.                Gosub AARRGH_THEY_GOT_ME
  4459.             End If 
  4460.             
  4461.             Wait Vbl 
  4462.          Until Inkey$=Chr$(27) or YOU_DIED_SCUMBAG
  4463.          
  4464.          If Not _PLAYED_AND_DIED
  4465.             ' - If they pressed escape...
  4466.             Gosub GAME_OVER_DUDE
  4467.          End If 
  4468.       End If 
  4469.    Until Not _PLAY
  4470.    
  4471.    
  4472.    ' ----- Clean up ----
  4473.    
  4474.    Screen 0
  4475.    Fade 1
  4476.    Screen 1
  4477.    Fade 1
  4478.    Screen 0
  4479.    Fade 1
  4480.    Wait 15
  4481.    
  4482.    ' - Close screens
  4483.    Screen Close 0
  4484.    Screen Close 1
  4485.    Screen Close 2
  4486.    
  4487.    ' - Erase banks (with all those banks you could start a bank!) 
  4488.    Erase 1
  4489.    Erase 5
  4490.    Erase 6
  4491.    Erase 7
  4492.    Erase 8
  4493.    Erase 9
  4494.    Erase 10
  4495.    
  4496.    Pop Proc
  4497.    
  4498.    ' -------------------- THE END --------------------
  4499.    
  4500.    ' - Until we release the sequel! (Dug's already started it!!!) 
  4501.    
  4502.    Pop Proc
  4503.    
  4504.    
  4505.    
  4506.    ' ----- Alien wave definitions ----- 
  4507.    
  4508.    _WAVE1:
  4509.    ' - Alien Wave 1 (Blue ships that wobble)  
  4510.    Gosub _DEFINE_NEW_WAVE
  4511.    
  4512.    ' - Set colours
  4513.    Palette ,,,,$44F,$77F,$99F,$CCF
  4514.    
  4515.    ' - Define wave movement 
  4516.    ALIEN_WAVE1$="(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3) "
  4517.    ALIEN_WAVE1$=ALIEN_WAVE1$+"(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3) L"
  4518.    
  4519.    ' - Define speed and direction 
  4520.    ALIEN_MOVE1$="L : Let X=340 ; M -400,0,300 ; J L"
  4521.    
  4522.    ' - Position baddies 
  4523.    Bob 3,340,7,ALIEN_SHIP
  4524.    Bob 4,340,29,ALIEN_SHIP
  4525.    Bob 5,340,51,ALIEN_SHIP
  4526.    Bob 6,340,73,ALIEN_SHIP
  4527.    Bob 7,340,95,ALIEN_SHIP
  4528.    
  4529.    ' - Assign movement to aliens
  4530.    For ALIEN=3 To NUM_BOBS
  4531.       Move X ALIEN,ALIEN_WAVE1$
  4532.       Move On 
  4533.       Wait 2
  4534.       Amal ALIEN,ALIEN_MOVE1$
  4535.       
  4536.       ' - Set number of hits required by each alien
  4537.       ALIEN_HIT(ALIEN-3)=10
  4538.    Next ALIEN
  4539.    
  4540.    Gosub _START_NEW_WAVE
  4541.    
  4542.    ' - Aliens alive decreases every time an alien is killed 
  4543.    ALIENS_ALIVE=5
  4544.    ' - Max Kill is a constant number that have to be killed 
  4545.    _MAX_KILL=ALIENS_ALIVE
  4546.    Return 
  4547.    
  4548.    
  4549.    
  4550.    _WAVE2:
  4551.    ' - Alien Wave 2 (is it a bird? - no!)   
  4552.    Gosub _DEFINE_NEW_WAVE
  4553.    
  4554.    ' - Set colours
  4555.    Palette ,,,,$FFF,$CCC,$F00,$B00
  4556.    
  4557.    ' - Define wave movement 
  4558.    ALIEN_MOVE3$="M 0,0,40 ; L : Let X=340 ; M -400,0,100 ; J L"
  4559.    ALIEN_MOVE5$="M 0,0,20 ; L : Let X=340 ; M -400,0,100 ; J L"
  4560.    ALIEN_MOVE7$="L : Let X=340 ; M -400,0,100 ; J L"
  4561.    
  4562.    ALIEN_WAVE$="(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3) L"
  4563.    
  4564.    ' - Position aliens
  4565.    Bob 3,340,7,SUPER_DAN
  4566.    Bob 5,340,29,SUPER_DAN
  4567.    Bob 7,340,51,SUPER_DAN
  4568.    Bob 6,340,73,SUPER_DAN
  4569.    Bob 4,340,95,SUPER_DAN
  4570.    
  4571.    For ALIEN=3 To 7
  4572.       Move Y ALIEN,ALIEN_WAVE$
  4573.       ALIEN_HIT(ALIEN-3)=3
  4574.    Next ALIEN
  4575.    Move On 
  4576.    
  4577.    ' - Assign movement to aliens
  4578.    Amal 3,ALIEN_MOVE3$
  4579.    Amal 4,ALIEN_MOVE3$
  4580.    Amal 5,ALIEN_MOVE5$
  4581.    Amal 6,ALIEN_MOVE5$
  4582.    Amal 7,ALIEN_MOVE7$
  4583.    
  4584.    Gosub _START_NEW_WAVE
  4585.    ALIENS_ALIVE=5
  4586.    _MAX_KILL=ALIENS_ALIVE
  4587.    Return 
  4588.    
  4589.    
  4590.    
  4591.    _WAVE3:
  4592.    ' - Alien Wave 3 (Round balls - What other shape balls are there?) 
  4593.    Gosub _DEFINE_NEW_WAVE
  4594.    
  4595.    ' - Set colours
  4596.    Palette ,,,,$444,$777,$999,$CCC
  4597.    
  4598.    ' - Define wave movement 
  4599.    ALIEN_WAVE1$="(1,4,3)(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3)(1,-4,3) "
  4600.    ALIEN_WAVE1$=ALIEN_WAVE1$+"(1,-4,3)(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3)(1,4,3) L"
  4601.    
  4602.    ' - Define wave direction and speed
  4603.    ALIEN_MOVE3$="M 0,0,10 ; L : Let X=340 ; M -400,0,200 ; J L"
  4604.    ALIEN_MOVE4$="M 0,0,30 ; L : Let X=340 ; M -400,0,200 ; J L"
  4605.    ALIEN_MOVE5$="M 0,0,50 ; L : Let X=340 ; M -400,0,200 ; J L"
  4606.    ALIEN_MOVE6$="M 0,0,70 ; L : Let X=340 ; M -400,0,200 ; J L"
  4607.    ALIEN_MOVE7$="M 0,0,90 ; L : Let X=340 ; M -400,0,200 ; J L"
  4608.    
  4609.    ' - Position aliens and begin movement 
  4610.    For ALIEN=3 To 7
  4611.       Bob ALIEN,340,51,BALL
  4612.       Move Y ALIEN,ALIEN_WAVE1$
  4613.       Move On 
  4614.       Wait 5
  4615.       ALIEN_HIT(ALIEN-3)=3
  4616.    Next ALIEN
  4617.    
  4618.    ' - Assign amal strings to baddies 
  4619.    Amal 3,ALIEN_MOVE3$
  4620.    Amal 4,ALIEN_MOVE4$
  4621.    Amal 5,ALIEN_MOVE5$
  4622.    Amal 6,ALIEN_MOVE6$
  4623.    Amal 7,ALIEN_MOVE7$
  4624.    
  4625.    Gosub _START_NEW_WAVE
  4626.    ALIENS_ALIVE=5
  4627.    _MAX_KILL=ALIENS_ALIVE
  4628.    Return 
  4629.    
  4630.    
  4631.    
  4632.    _WAVE4:
  4633.    ' - Alien Wave 4 (Acid Men? - I was running out of ideas for aliens!)  
  4634.    Gosub _DEFINE_NEW_WAVE
  4635.    
  4636.    ' - Set colours
  4637.    Palette ,,,,,$330,$F00,$FF0
  4638.    
  4639.    ' - Define wave direction and speed
  4640.    ALIEN_MOVE4$="L : Let X=350 ; M -400,0,200 ; J L"
  4641.    
  4642.    ' - Define wave movement 
  4643.    ALIEN_WAVE1$="(1,4,3)(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3)(1,-4,3) "
  4644.    ALIEN_WAVE1$=ALIEN_WAVE1$+"(1,-4,3)(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3)(1,4,3) L"
  4645.    
  4646.    ' - Position aliens and begin movement 
  4647.    For ALIEN=3 To NUM_BOBS
  4648.       Bob ALIEN,350,60,ACID
  4649.       Move X ALIEN,ALIEN_WAVE1$
  4650.       Move On 
  4651.       Wait 6
  4652.       Move Y ALIEN,ALIEN_WAVE1$
  4653.       Move On 
  4654.       Amal ALIEN,ALIEN_MOVE4$
  4655.       ALIEN_HIT(ALIEN-3)=3
  4656.    Next ALIEN
  4657.    
  4658.    Gosub _START_NEW_WAVE
  4659.    ALIENS_ALIVE=5
  4660.    _MAX_KILL=ALIENS_ALIVE
  4661.    Return 
  4662.    
  4663.    
  4664.    
  4665.    _WAVE5:
  4666.    ' - Alien Wave 5 (Little Disk Dudes! - Now we're really getting desparate!)    
  4667.    Gosub _DEFINE_NEW_WAVE
  4668.    
  4669.    ' - Set colours
  4670.    Palette ,,,,$33F,$999,$111
  4671.    
  4672.    ' - Define wave direction and speed
  4673.    ALIEN_MOVE1$="M 0,0,80 ; L : Let X=340 ; M -400,0,200 ; J L"
  4674.    ALIEN_MOVE2$="M 0,0,80 ; L : Let X=-20 ; M 400,0,200 ; J L"
  4675.    
  4676.    ' - Define wave movement 
  4677.    ALIEN_WAVE1$="(1,5,3)(1,4,3)(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3)(1,-4,3)(1,-5,3) "
  4678.    ALIEN_WAVE1$=ALIEN_WAVE1$+"(1,-5,3)(1,-4,3)(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3)(1,4,3)(1,5,3) L"
  4679.    
  4680.    ' - Position aliens and begin movement 
  4681.    Bob 3,340,50,DISK
  4682.    Bob 4,340,50,DISK
  4683.    Bob 5,-20,50,DISK
  4684.    Bob 6,-20,50,DISK
  4685.    
  4686.    For ALIEN=3 To 6
  4687.       Move Y ALIEN,ALIEN_WAVE1$
  4688.       Move On 
  4689.       Wait 10
  4690.       ALIEN_HIT(ALIEN-3)=4
  4691.    Next ALIEN
  4692.    
  4693.    Amal 5,ALIEN_MOVE2$
  4694.    Amal 3,ALIEN_MOVE1$ : Amal On 
  4695.    Wait 10
  4696.    Amal 4,ALIEN_MOVE1$
  4697.    Amal 6,ALIEN_MOVE2$
  4698.    Amal On 
  4699.    
  4700.    Gosub _START_NEW_WAVE
  4701.    
  4702.    ' - Only four this time! - This is getting too easy! 
  4703.    ALIENS_ALIVE=4
  4704.    _MAX_KILL=ALIENS_ALIVE
  4705.    Return 
  4706.    
  4707.    
  4708.    
  4709.    _WAVE6:
  4710.    ' - Alien Wave 6 (Wasps)     
  4711.    Gosub _DEFINE_NEW_WAVE
  4712.    
  4713.    ' - Set colours
  4714.    Palette ,,,,$444,$875,$BA4,$FC0
  4715.    
  4716.    ' - Define wave direction and speed
  4717.    ALIEN_MOVE3$="M 0,0,140 ; L : Let X=380 ; M -115,50,20 ; M -230,-100,40 ; M -115,50,20 ; J L"
  4718.    
  4719.    ' - Define wave movement 
  4720.    ALIEN_WAVE1$="(1,5,3)(1,4,3)(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3)(1,-4,3)(1,-5,3) "
  4721.    ALIEN_WAVE1$=ALIEN_WAVE1$+"(1,-5,3)(1,-4,3)(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3)(1,4,3)(1,5,3) L"
  4722.    
  4723.    ' - Position aliens and begin movement 
  4724.    For ALIEN=3 To 7
  4725.       Bob ALIEN,370,50,WASP
  4726.       Move X ALIEN,ALIEN_WAVE1$
  4727.       Move On 
  4728.       Amal ALIEN,ALIEN_MOVE3$
  4729.       Amal On 
  4730.       Wait 5
  4731.       ALIEN_HIT(ALIEN-3)=4
  4732.    Next ALIEN
  4733.    
  4734.    Gosub _START_NEW_WAVE
  4735.    
  4736.    ' - Hooray! - Back to five aliens! 
  4737.    ALIENS_ALIVE=5
  4738.    _MAX_KILL=ALIENS_ALIVE
  4739.    Return 
  4740.    
  4741.    
  4742.    
  4743.    _WAVE7:
  4744.    ' - Alien Wave 7 (Asteroids / MeatBalls / Chappie / Dumps)   
  4745.    Gosub _DEFINE_NEW_WAVE
  4746.    
  4747.    ' - Set colours
  4748.    Palette ,,,,$431,$653,$764,$875
  4749.    
  4750.    ' - Define wave direction and speed
  4751.    ALIEN_MOVE1$="M 0,0,80 ; L : Let X=380 ; M -400,0,200 ; J L"
  4752.    ALIEN_MOVE2$="M 0,0,80 ; L : Let X=-60 ; M 400,0,200 ; J L"
  4753.    
  4754.    ' - Define wave movement 
  4755.    ALIEN_WAVE1$="(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3) "
  4756.    ALIEN_WAVE1$=ALIEN_WAVE1$+"(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3) L"
  4757.    
  4758.    ALIEN_WAVE2$="(1,2,3)(1,1,3)(1,-1,3)(1,-2,3) "
  4759.    ALIEN_WAVE2$=ALIEN_WAVE2$+"(1,-2,3)(1,-1,3)(1,1,3)(1,2,3) L"
  4760.    
  4761.    ' - Position aliens and begin movement 
  4762.    Bob 3,380,7,_AST1
  4763.    Bob 4,380,51,_AST2
  4764.    Bob 5,380,95,_AST3
  4765.    Bob 6,-60,29,_AST2
  4766.    Bob 7,-60,73,_AST1
  4767.    
  4768.    For ALIEN=3 To 7
  4769.       Move X ALIEN,ALIEN_WAVE1$
  4770.       Move Y ALIEN,ALIEN_WAVE2$
  4771.       Move On 
  4772.       ALIEN_HIT(ALIEN-3)=5
  4773.    Next ALIEN
  4774.    
  4775.    ' - Assign movement    
  4776.    Amal 3,ALIEN_MOVE1$
  4777.    Amal 4,ALIEN_MOVE1$
  4778.    Amal 5,ALIEN_MOVE1$
  4779.    Amal 6,ALIEN_MOVE2$
  4780.    Amal 7,ALIEN_MOVE2$
  4781.    Amal On 
  4782.    
  4783.    Gosub _START_NEW_WAVE
  4784.    ALIENS_ALIVE=5
  4785.    _MAX_KILL=ALIENS_ALIVE
  4786.    Return 
  4787.    
  4788.    
  4789.    
  4790.    _WAVE8:
  4791.    ' - Alien Wave 8 (Mine with bullets! - Now we're getting there!) 
  4792.    Gosub _DEFINE_NEW_WAVE
  4793.    
  4794.    ' - Set colours
  4795.    Palette ,,,,$444,$777,$999,$CCC
  4796.    
  4797.    ' - Define wave direction and speed
  4798.    ALIEN_MOVE1$="L : Let X=340 ; M -180,0,20 ; M 0,0,50 ; M -180,0,20 ;J L"
  4799.    SHOT_MOVE1$="L : M 0,0,45 ; Let X=167 ; Let Y=67 ; M 0,-70,20 ; M 0,0,25 ; J L"
  4800.    SHOT_MOVE2$="L : M 0,0,45 ; Let X=167 ; Let Y=67 ; M 0,70,20 ; M 0,0,25 ; J L"
  4801.    SHOT_MOVE3$="L : M 0,0,45 ; Let X=167 ; Let Y=67 ; M -180,0,20 ; M 0,0,25 ; J L"
  4802.    SHOT_MOVE4$="L : M 0,0,45 ; Let X=167 ; Let Y=67 ; M 180,0,20 ; M 0,0,25 ; J L"
  4803.    
  4804.    ' - Position aliens and begin movement 
  4805.    Bob 3,340,60,_MINE
  4806.    Bob 4,340,95,_MINE_SHOT
  4807.    Bob 5,340,95,_MINE_SHOT
  4808.    Bob 6,340,95,_MINE_SHOT
  4809.    Bob 7,340,95,_MINE_SHOT
  4810.    
  4811.    Amal 3,ALIEN_MOVE1$
  4812.    Amal 4,SHOT_MOVE1$
  4813.    Amal 5,SHOT_MOVE2$
  4814.    Amal 6,SHOT_MOVE3$
  4815.    Amal 7,SHOT_MOVE4$
  4816.    ALIEN_HIT(0)=20
  4817.    
  4818.    Gosub _START_NEW_WAVE
  4819.    
  4820.    ' - ONE!  ONE!  WHAT USE IS ONE! 
  4821.    ALIENS_ALIVE=1
  4822.    _MAX_KILL=ALIENS_ALIVE
  4823.    Return 
  4824.    
  4825.    
  4826.    
  4827.    _WAVE9:
  4828.    ' - Alien Wave 9 (Bat type things - Thanx Core!) 
  4829.    Gosub _DEFINE_NEW_WAVE
  4830.    
  4831.    ' - Set colours
  4832.    Palette ,,,,$444,$777,$999,$CCC
  4833.    
  4834.    ' - Define wave direction and speed
  4835.    ALIEN_MOVE1$="L : Let X=340 ; M -400,0,200 ; J L"
  4836.    
  4837.    ' - Define wave movement 
  4838.    ALIEN_WAVE1$="(1,5,3)(1,4,3)(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3)(1,-4,3)(1,-5,3) "
  4839.    ALIEN_WAVE1$=ALIEN_WAVE1$+"(1,-5,3)(1,-4,3)(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3)(1,4,3)(1,5,3) L"
  4840.    
  4841.    ALIEN_WAVE2$="(1,-5,3)(1,-4,3)(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3)(1,4,3)(1,5,3) "
  4842.    ALIEN_WAVE2$=ALIEN_WAVE2$+"(1,5,3)(1,4,3)(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3)(1,-4,3)(1,-5,3) L"
  4843.    
  4844.    ' - Position aliens and begin movement 
  4845.    Bob 3,340,7,BAT
  4846.    Bob 4,340,7,BAT
  4847.    Bob 5,340,95,BAT
  4848.    Bob 6,340,95,BAT
  4849.    
  4850.    Move Y 3,ALIEN_WAVE2$
  4851.    Move Y 6,ALIEN_WAVE1$
  4852.    Move On 
  4853.    Wait 20
  4854.    Move Y 4,ALIEN_WAVE2$
  4855.    Move Y 5,ALIEN_WAVE1$
  4856.    Move On 
  4857.    
  4858.    For ALIEN=3 To 6
  4859.       Amal ALIEN,ALIEN_MOVE1$
  4860.       ALIEN_HIT(ALIEN-3)=7
  4861.    Next ALIEN
  4862.    
  4863.    Gosub _START_NEW_WAVE
  4864.    ALIENS_ALIVE=4
  4865.    _MAX_KILL=ALIENS_ALIVE
  4866.    Return 
  4867.    
  4868.    
  4869.    
  4870.    _WAVE10:
  4871.    ' - Alien Wave 10 (Firey star thing)   
  4872.    Gosub _DEFINE_NEW_WAVE
  4873.    
  4874.    ' - Set colours
  4875.    Palette ,,,,$400,$720,$960,$CC0
  4876.    
  4877.    ' - Define wave direction and speed
  4878.    ALIEN_MOVE1$="L: M -50,-50,25 ; M 50,50,25 ;J L"
  4879.    ALIEN_MOVE2$="L: M 50,-50,25 ; M -50,50,25 ;J L"
  4880.    ALIEN_MOVE3$="L: M -50,50,25 ; M 50,-50,25 ;J L"
  4881.    ALIEN_MOVE4$="L: M 50,50,25 ; M -50,-50,25 ;J L"
  4882.    
  4883.    ' - Define wave movement 
  4884.    SPIKE_MOVE$="(1,-1,400)(1,400,1)L"
  4885.    
  4886.    ' - Position aliens and begin movement 
  4887.    Bob 3,340,47,SPIKE1
  4888.    Bob 4,355,47,SPIKE2
  4889.    Bob 5,340,62,SPIKE3
  4890.    Bob 6,355,62,SPIKE4
  4891.    
  4892.    Amal 3,ALIEN_MOVE1$
  4893.    Amal 4,ALIEN_MOVE2$
  4894.    Amal 5,ALIEN_MOVE3$
  4895.    Amal 6,ALIEN_MOVE4$
  4896.    
  4897.    For ALIEN=3 To 6
  4898.       Move X ALIEN,SPIKE_MOVE$
  4899.       ALIEN_HIT(ALIEN-3)=10
  4900.    Next ALIEN
  4901.    
  4902.    Gosub _START_NEW_WAVE
  4903.    ALIENS_ALIVE=4
  4904.    _MAX_KILL=ALIENS_ALIVE
  4905.    Move On 
  4906.    Return 
  4907.    
  4908.    
  4909.    
  4910.    _WAVE11:
  4911.    ' - Alien Wave 11 (Ammonite (scarf))   
  4912.    Gosub _DEFINE_NEW_WAVE
  4913.    
  4914.    ' - Set colours
  4915.    Palette ,,,,$420,$741,$974,$CA8
  4916.    
  4917.    ' - Define wave direction and speed
  4918.    ALIEN_MOVE1$="L: Let X=380 ; M -480,0,240 ; J L"
  4919.    ALIEN_MOVE2$="L: Let X=-80 ; M 480,0,240 ; J L"
  4920.    
  4921.    ' - Define wave movement 
  4922.    ALIEN_WAVE1$="(1,5,3)(1,4,3)(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3)(1,-4,3)(1,-5,3) "
  4923.    ALIEN_WAVE1$=ALIEN_WAVE1$+"(1,-5,3)(1,-4,3)(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3)(1,4,3)(1,5,3) L"
  4924.    
  4925.    ALIEN_WAVE2$="(1,-5,3)(1,-4,3)(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3)(1,4,3)(1,5,3) "
  4926.    ALIEN_WAVE2$=ALIEN_WAVE2$+"(1,5,3)(1,4,3)(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3)(1,-4,3)(1,-5,3) L"
  4927.    
  4928.    ' - Position aliens and begin movement 
  4929.    Bob 3,380,47,SCARF
  4930.    Bob 4,-80,47,SCARF
  4931.    
  4932.    Amal 3,ALIEN_MOVE1$
  4933.    Amal 4,ALIEN_MOVE2$
  4934.    
  4935.    Move X 3,ALIEN_WAVE1$
  4936.    Move X 4,ALIEN_WAVE2$
  4937.    Move On 
  4938.    Wait 15
  4939.    Move Y 3,ALIEN_WAVE1$
  4940.    Move Y 4,ALIEN_WAVE2$
  4941.    Move On 
  4942.    
  4943.    ALIEN_HIT(0)=10
  4944.    ALIEN_HIT(1)=10
  4945.    
  4946.    Gosub _START_NEW_WAVE
  4947.    ALIENS_ALIVE=2
  4948.    _MAX_KILL=ALIENS_ALIVE
  4949.    Return 
  4950.    
  4951.    
  4952.    
  4953.    _WAVE12:
  4954.    ' - Alien Wave 12 (Wasps and doughnuts!)   
  4955.    Gosub _DEFINE_NEW_WAVE
  4956.    
  4957.    ' - Set colours
  4958.    Palette ,,,,$444,$875,$BA4,$FC0
  4959.    
  4960.    ' - Define wave direction and speed
  4961.    ALIEN_MOVE1$="L: Let X=X+500 ; M -500,0,250 ; J L"
  4962.    
  4963.    ' - Define wave movement 
  4964.    ALIEN_WAVE1$="(1,7,3)(1,6,3)(1,5,3)(1,4,3)(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3)(1,-4,3)(1,-5,3)(1,-6,3)(1,-7,3) "
  4965.    ALIEN_WAVE1$=ALIEN_WAVE1$+"(1,-7,3)(1,-6,3)(1,-5,3)(1,-4,3)(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3)(1,4,3)(1,5,3)(1,6,3)(1,7,3) L"
  4966.    
  4967.    ' - Position aliens and begin movement 
  4968.    Bob 3,-120,51,WASP
  4969.    Bob 4,-120,51,_DONUT
  4970.    Bob 5,-120,51,_DONUT
  4971.    Bob 6,-120,51,_DONUT
  4972.    Bob 7,-120,51,_DONUT
  4973.    
  4974.    For ALIEN=3 To 7
  4975.       Amal ALIEN,ALIEN_MOVE1$
  4976.       ALIEN_HIT(ALIEN-3)=2
  4977.    Next ALIEN
  4978.    ALIEN_HIT(0)=6
  4979.    
  4980.    For ALIEN=4 To 7
  4981.       Move X ALIEN,ALIEN_WAVE1$
  4982.       Move On 
  4983.       Wait 28
  4984.       Move Y ALIEN,ALIEN_WAVE1$
  4985.       Move On 
  4986.       Wait 7
  4987.    Next ALIEN
  4988.    
  4989.    Gosub _START_NEW_WAVE
  4990.    ALIENS_ALIVE=5
  4991.    _MAX_KILL=ALIENS_ALIVE
  4992.    Return 
  4993.    
  4994.    
  4995.    
  4996.    _WAVE13:
  4997.    ' - Alien Wave 13 (Wheeeeeeeeel - Ya know what it is?)     
  4998.    Gosub _DEFINE_NEW_WAVE
  4999.    
  5000.    ' - Set colours
  5001.    Palette ,,,,$F,$33E,$66D,$88C
  5002.    
  5003.    ' - Define wave direction and speed
  5004.    ALIEN_MOVE1$="M 0,0,50 ; L: Let X=380 ; M -150,0,50 ; M 50,0,25 ; M -100,0,50 ; M 50,0,25  M -100,0,50 ; M 50,0,25  M -100,0,50 ; M 50,0,25  M -100,0,50 ; M 50,0,25  M -100,0,50 ; M 50,0,25  M -100,0,50 ; M 50,0,25 ; M -100,0,50 ; M 50,0,25 ; J L"
  5005.    ALIEN_MOVE2$="M 0,0,60 ; L: Let X=380 ; M -150,0,50 ; M 50,0,25 ; M -100,0,50 ; M 50,0,25  M -100,0,50 ; M 50,0,25  M -100,0,50 ; M 50,0,25  M -100,0,50 ; M 50,0,25  M -100,0,50 ; M 50,0,25  M -100,0,50 ; M 50,0,25 ; M -100,0,50 ; M 50,0,25 ; J L"
  5006.    ALIEN_MOVE3$="M 0,0,70 ; L: Let X=380 ; M -150,0,50 ; M 50,0,25 ; M -100,0,50 ; M 50,0,25  M -100,0,50 ; M 50,0,25  M -100,0,50 ; M 50,0,25  M -100,0,50 ; M 50,0,25  M -100,0,50 ; M 50,0,25  M -100,0,50 ; M 50,0,25 ; M -100,0,50 ; M 50,0,25 ; J L"
  5007.    
  5008.    ' - Define wave movement 
  5009.    ALIEN_WAVE1$="(1,8,3)(1,7,3)(1,6,3)(1,5,3)(1,4,3)(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3)(1,-4,3)(1,-5,3)(1,-6,3)(1,-7,3)(1,-8,3) L"
  5010.    
  5011.    ' - Position aliens and begin movement 
  5012.    Bob 3,380,0,WHEEL
  5013.    Bob 4,380,0,WHEEL
  5014.    Bob 5,380,0,WHEEL
  5015.    '
  5016.    Amal 3,ALIEN_MOVE1$
  5017.    Amal 4,ALIEN_MOVE2$
  5018.    Amal 5,ALIEN_MOVE3$
  5019.    
  5020.    For ALIEN=3 To 5
  5021.       ALIEN_HIT(ALIEN-3)=5
  5022.       Move Y ALIEN,ALIEN_WAVE1$
  5023.       Move On 
  5024.       Wait 10
  5025.    Next ALIEN
  5026.    ALIEN_HIT(0)=10
  5027.    
  5028.    Gosub _START_NEW_WAVE
  5029.    ALIENS_ALIVE=3
  5030.    _MAX_KILL=ALIENS_ALIVE
  5031.    Return 
  5032.    
  5033.    
  5034.    
  5035.    _WAVE14:
  5036.    ' - Alien Wave 14 (Ladybird)     
  5037.    Gosub _DEFINE_NEW_WAVE
  5038.    
  5039.    ' - Set colours
  5040.    Palette ,,,,$C44,$C11,$606,$222
  5041.    
  5042.    ' - Define wave direction and speed
  5043.    ALIEN_MOVE1$="L: Let X=380 ; Let Y=7 ; M 0,0,10 ; M -210,0,21 ; M 0,0,20 ; M -200,0,20 ; J L"
  5044.    ALIEN_MOVE2$="L: Let X=380 ; Let Y=29 ; M 0,0,20 ; M -230,0,23 ; M 0,0,20 ; M -180,0,18 ; J L"
  5045.    ALIEN_MOVE3$="L: Let X=380 ; Let Y=53 ; M 0,0,30 ; M -250,0,25 ; M 0,0,20 ; M -160,0,16 ; J L"
  5046.    ALIEN_MOVE4$="L: Let X=380 ; Let Y=75 ; M 0,0,20 ; M -230,0,23 ; M 0,0,20 ; M -180,0,18 ; J L"
  5047.    ALIEN_MOVE5$="L: Let X=380 ; Let Y=97 ; M 0,0,10 ; M -210,0,21 ; M 0,0,20 ; M -200,0,20 ; J L"
  5048.    
  5049.    ' - Position aliens and begin movement 
  5050.    For ALIEN=3 To 7
  5051.       Bob ALIEN,380,0,LADYBIRD
  5052.       ALIEN_HIT(ALIEN-3)=5
  5053.    Next ALIEN
  5054.    
  5055.    ' - Assign movement
  5056.    Amal 3,ALIEN_MOVE1$
  5057.    Amal 4,ALIEN_MOVE2$
  5058.    Amal 5,ALIEN_MOVE3$
  5059.    Amal 6,ALIEN_MOVE4$
  5060.    Amal 7,ALIEN_MOVE5$
  5061.    
  5062.    Gosub _START_NEW_WAVE
  5063.    ALIENS_ALIVE=5
  5064.    _MAX_KILL=ALIENS_ALIVE
  5065.    Return 
  5066.    
  5067.    
  5068.    
  5069.    _WAVE15:
  5070.    ' - Alien Wave 14 (Arrow)
  5071.    Gosub _DEFINE_NEW_WAVE
  5072.    
  5073.    ' - Set colours
  5074.    Palette ,,,,$830,$666,$CCC,$FB8
  5075.    
  5076.    ' - Define wave direction and speed
  5077.    ALIEN_MOVE1$="L: Let X=380 ; Let Y=7 ;  M -400,0,100 ; J L"
  5078.    ALIEN_MOVE2$="L: Let X=380 ; Let Y=29 ; M -400,0,100 ; J L"
  5079.    ALIEN_MOVE3$="L: Let X=380 ; Let Y=53 ; M -400,0,100 ; J L"
  5080.    ALIEN_MOVE4$="L: Let X=380 ; Let Y=75 ; M -400,0,100 ; J L"
  5081.    ALIEN_MOVE5$="L: Let X=380 ; Let Y=97 ; M -400,0,100 ; J L"
  5082.    
  5083.    ' - Position aliens and begin movement 
  5084.    ALIEN_WAVE1$="(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3) "
  5085.    ALIEN_WAVE1$=ALIEN_WAVE1$+"(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3) L"
  5086.    
  5087.    ALIEN_WAVE2$="(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3) "
  5088.    ALIEN_WAVE2$=ALIEN_WAVE2$+"(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3) L"
  5089.    
  5090.    ALIEN_WAVE3$="(1,5,3)(1,4,3)(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3)(1,-4,3)(1,-5,3) "
  5091.    ALIEN_WAVE3$=ALIEN_WAVE3$+"(1,-5,3)(1,-4,3)(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3)(1,4,3)(1,5,3) L"
  5092.    
  5093.    ALIEN_WAVE4$="(1,-5,3)(1,-4,3)(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3)(1,4,3)(1,5,3) "
  5094.    ALIEN_WAVE4$=ALIEN_WAVE4$+"(1,5,3)(1,4,3)(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3)(1,-4,3)(1,-5,3) L"
  5095.    
  5096.    For ALIEN=3 To 7
  5097.       Bob ALIEN,380,0,ARROW
  5098.       ALIEN_HIT(ALIEN-3)=4
  5099.    Next ALIEN
  5100.    
  5101.    Amal 3,ALIEN_MOVE1$
  5102.    Move Y 3,ALIEN_WAVE3$
  5103.    
  5104.    Amal 4,ALIEN_MOVE2$
  5105.    Move Y 4,ALIEN_WAVE1$
  5106.    
  5107.    Amal 5,ALIEN_MOVE3$
  5108.    Amal 6,ALIEN_MOVE4$
  5109.    Move Y 6,ALIEN_WAVE2$
  5110.    
  5111.    Amal 7,ALIEN_MOVE5$
  5112.    Move Y 7,ALIEN_WAVE4$
  5113.    
  5114.    Move On 
  5115.    
  5116.    Gosub _START_NEW_WAVE
  5117.    ALIENS_ALIVE=5
  5118.    _MAX_KILL=ALIENS_ALIVE
  5119.    Return 
  5120.    
  5121.    
  5122.    
  5123.    GUARD1:
  5124.    ' - 1st Guardian (Snake Thing) 
  5125.    Gosub _DEFINE_NEW_WAVE
  5126.    
  5127.    ' - Set colours
  5128.    Palette ,,,,$40,$60,$80,$A0
  5129.    
  5130.    ' - Define wave direction and speed
  5131.    GUARDIAN_ON$="M -130,0,26 "
  5132.    
  5133.    GUARD_SHOT1$="M 0,0,10 ; L : F R1=0 To Z(50) ; N R1 ; Let X=280 ; Let Y=80 ; M -320,-80,50 ; J L"
  5134.    GUARD_SHOT2$="M 0,0,10 ; L : F R1=0 To Z(50) ; N R1 ; Let X=280 ; Let Y=80 ; M -320,-50,50 ; J L"
  5135.    GUARD_SHOT3$="M 0,0,10 ; L : F R1=0 To Z(50) ; N R1 ; Let X=280 ; Let Y=80 ; M -320,-20,50 ; J L"
  5136.    
  5137.    SHOT_MOVE$="(1,2,3)(1,1,3)(1,-1,3)(1,-2,3) "
  5138.    SHOT_MOVE$=SHOT_MOVE$+"(1,-2,3)(1,-1,3)(1,1,3)(1,2,3) L"
  5139.    
  5140.    ' - Position aliens and begin movement 
  5141.    Bob 3,394,43,GUARDIAN1_EYE
  5142.    Bob 4,340,37,GUARDIAN1
  5143.    Bob 5,340,7,_MINE_SHOT
  5144.    Bob 6,340,95,_MINE_SHOT
  5145.    Bob 7,340,95,_MINE_SHOT
  5146.    
  5147.    Amal 3,GUARDIAN_ON$
  5148.    Amal 4,GUARDIAN_ON$
  5149.    Amal On 
  5150.    Wait 30
  5151.    Paste Bob 210,37,GUARDIAN1
  5152.    Bob Off 4
  5153.    Amal 5,GUARD_SHOT1$
  5154.    Amal 6,GUARD_SHOT2$
  5155.    Amal 7,GUARD_SHOT3$
  5156.    
  5157.    For ALIEN=5 To 7
  5158.       ' - Bullets
  5159.       Move Y ALIEN,SHOT_MOVE$
  5160.    Next ALIEN
  5161.    Move On 
  5162.    
  5163.    ' - The EYE is the only thing which can be hit!
  5164.    ALIEN_HIT(0)=10
  5165.    
  5166.    Gosub _START_NEW_WAVE
  5167.    ALIENS_ALIVE=1
  5168.    _MAX_KILL=ALIENS_ALIVE
  5169.    GUARDIAN_STAGE=True
  5170.    X_MAX=182
  5171.    Return 
  5172.    
  5173.    
  5174.    
  5175.    GUARD_SKULL:
  5176.    ' - 2nd Guardian (Skull - The big jerky one!)  
  5177.    Gosub _DEFINE_NEW_WAVE
  5178.    
  5179.    ' - Set colours
  5180.    Palette ,,,,$441,$773,$996,$CCA
  5181.    
  5182.    ' - Define wave direction and speed
  5183.    GUARDIAN_ON$="M -130,0,26 "
  5184.    
  5185.    GUARD_SHOT1$="M 0,0,50 ; L: Let X=216 ; M -250,0,40 ; J L"
  5186.    GUARD_SHOT2$="M 0,0,70 ; L: Let X=216 ; M -250,0,40 ; J L"
  5187.    
  5188.    SHOT_MOVE$="(1,2,3)(1,1,3)(1,-1,3)(1,-2,3) "
  5189.    SHOT_MOVE$=SHOT_MOVE$+"(1,-2,3)(1,-1,3)(1,1,3)(1,2,3) L"
  5190.    
  5191.    ' - Position aliens and begin movement 
  5192.    Bob 3,345,50,SKULL_EYE
  5193.    Bob 4,340,3,SKULL
  5194.    Bob 5,340,55,SKULL_SHOT
  5195.    Bob 6,340,55,SKULL_SHOT
  5196.    
  5197.    For ALIEN=5 To 6
  5198.       Move X ALIEN,SHOT_MOVE$
  5199.       Move On 
  5200.       Wait 2
  5201.       Move Y ALIEN,SHOT_MOVE$
  5202.       Move On 
  5203.    Next ALIEN
  5204.    
  5205.    Amal 3,GUARDIAN_ON$
  5206.    Amal 4,GUARDIAN_ON$
  5207.    Amal On 
  5208.    Wait 30
  5209.    Paste Bob 210,3,SKULL
  5210.    Bob Off 4
  5211.    Amal 5,GUARD_SHOT1$
  5212.    Amal 6,GUARD_SHOT2$
  5213.    
  5214.    
  5215.    ' - The EYE is the only thing which can be hit!
  5216.    ALIEN_HIT(0)=10
  5217.    
  5218.    ' -So they can't hit the skull image     
  5219.    X_MAX=180
  5220.    
  5221.    Gosub _START_NEW_WAVE
  5222.    ALIENS_ALIVE=1
  5223.    _MAX_KILL=ALIENS_ALIVE
  5224.    GUARDIAN_STAGE=True
  5225.    FINAL_STAGE=True
  5226.    
  5227.    Return 
  5228.    
  5229.    
  5230.    
  5231.    BEAST:
  5232.    ' - 3rd Guardian (Beast)   
  5233.    Gosub _DEFINE_NEW_WAVE
  5234.    
  5235.    ' - Set colours
  5236.    Palette ,,,,$AAA,$666,$444,$66F
  5237.    
  5238.    ' - Define wave direction and speed
  5239.    GUARDIAN_ON$="M -130,0,26 "
  5240.    
  5241.    GUARD_SHOT$="M 0,0,80 ; L: Let X=208 ; M -250,0,40 ; J L"
  5242.    
  5243.    GUN_MOVE$="(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3) "
  5244.    GUN_MOVE$=GUN_MOVE$+"(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3) L"
  5245.    
  5246.    ' - Position aliens and begin movement 
  5247.    Bob 3,410,61,BEAST_EYE
  5248.    Bob 4,380,40,BEAST_GUARD
  5249.    Bob 5,340,40,UPPER_GUN
  5250.    Bob 6,340,80,LOWER_GUN
  5251.    
  5252.    For ALIEN=3 To 6
  5253.       Amal ALIEN,GUARDIAN_ON$
  5254.    Next ALIEN
  5255.    Amal On 
  5256.    Wait 30
  5257.    
  5258.    Paste Bob 250,40,BEAST_GUARD
  5259.    
  5260.    Bob 4,340,44,BEAST_SHOT
  5261.    Bob 7,340,84,BEAST_SHOT
  5262.    
  5263.    For ALIEN=4 To 7
  5264.       Move Y ALIEN,GUN_MOVE$
  5265.    Next ALIEN
  5266.    Move On 
  5267.    
  5268.    Amal 4,GUARD_SHOT$
  5269.    Amal 7,GUARD_SHOT$
  5270.    Amal On 
  5271.    
  5272.    ' - The EYE is the only thing which can be hit!
  5273.    ALIEN_HIT(0)=10
  5274.    
  5275.    ' - So they can't hit the beast image    
  5276.    X_MAX=180
  5277.    
  5278.    Gosub _START_NEW_WAVE
  5279.    ALIENS_ALIVE=1
  5280.    _MAX_KILL=ALIENS_ALIVE
  5281.    GUARDIAN_STAGE=True
  5282.    
  5283.    Return 
  5284.    
  5285.    
  5286.    BONUS_WAVE:
  5287.    ' - This is just an interesting way of getting an extra life!
  5288.    _TEXT=BONUS_TEXT
  5289.    Gosub _DEFINE_NEW_WAVE
  5290.    BONUS_STAGE=True
  5291.    
  5292.    ' - Set colours
  5293.    Palette ,,,,$444,$777,$999,$F00
  5294.    
  5295.    ' - Define wave direction and speed
  5296.    BONUS_MOVE$="L : Let X=340 ; Let Y=Z(68)+30 ; M 0,0,Z(100)+50 ; M -400,0,200 ; J L"
  5297.    ALIEN_MOVE1$="L : Let X=340 ; Let Y=42 ; M -400,0,50 ; J L"
  5298.    ALIEN_MOVE2$="L : Let X=340 ; Let Y=84 ; M -400,0,50 ; J L"
  5299.    
  5300.    ' - Define movement strings
  5301.    ALIEN_WAVE1$="(1,4,3)(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3)(1,-4,3) "
  5302.    ALIEN_WAVE1$=ALIEN_WAVE1$+"(1,-4,3)(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3)(1,4,3) L"
  5303.    
  5304.    ALIEN_WAVE2$="(1,-4,3)(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3)(1,4,3) "
  5305.    ALIEN_WAVE2$=ALIEN_WAVE2$+"(1,4,3)(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3)(1,-4,3) L"
  5306.    
  5307.    BONUS_WAVE1$="(1,2,3)(1,1,3)(1,-1,3)(1,-2,3) "
  5308.    BONUS_WAVE1$=BONUS_WAVE1$+"(1,-2,3)(1,-1,3)(1,1,3)(1,2,3) L"
  5309.    
  5310.    
  5311.    ' - Position aliens and begin movement 
  5312.    Bob 3,340,0,_1UP
  5313.    Bob 4,340,0,_20_POINTS
  5314.    Bob 5,340,0,_10_POINTS
  5315.    Bob 6,340,0,_FIRE_BALL
  5316.    Bob 7,340,0,_FIRE_BALL
  5317.    
  5318.    Amal 3,BONUS_MOVE$
  5319.    Amal 4,BONUS_MOVE$
  5320.    Amal 5,BONUS_MOVE$
  5321.    Amal 6,ALIEN_MOVE1$
  5322.    Amal 7,ALIEN_MOVE2$
  5323.    
  5324.    For ALIEN=3 To 5
  5325.       Move Y ALIEN,BONUS_WAVE1$
  5326.    Next ALIEN
  5327.    Move Y 6,ALIEN_WAVE1$
  5328.    Move Y 7,ALIEN_WAVE2$
  5329.    Move On 
  5330.    
  5331.    ' - Two bad dudes
  5332.    ALIEN_HIT(3)=2
  5333.    ALIEN_HIT(4)=2
  5334.    
  5335.    Gosub _START_NEW_WAVE
  5336.    ALIENS_ALIVE=3
  5337.    _MAX_KILL=ALIENS_ALIVE
  5338.    Return 
  5339.    
  5340.    
  5341.    
  5342.    ' ----- Wave procedures -----
  5343.    
  5344.    _DEFINE_NEW_WAVE:
  5345.    ' - This should be called at the start of each wave definition!
  5346.    Gosub _KILL_ALL_ALIENS
  5347.    
  5348.    ' - Display Message  
  5349.    Bob _TEXT_BOB,40,-30,_TEXT
  5350.    Amal _TEXT_BOB,_TEXT_ON$
  5351.    Amal On _TEXT_BOB
  5352.    ' - Set text for next time 
  5353.    _TEXT=_WAVE_CLEAR
  5354.    Return 
  5355.    
  5356.    
  5357.    _START_NEW_WAVE:
  5358.    ' - This should be called at the END of each wave definition!
  5359.    ' - Remove text bob
  5360.    Wait TIME_BETWEEN_WAVES
  5361.    Amal _TEXT_BOB,_TEXT_OFF$
  5362.    Amal On _TEXT_BOB
  5363.    Wait 25 : Rem - Wait for text to dissappear
  5364.    Bob Off _TEXT_BOB
  5365.    ' - Go!
  5366.    Amal On 
  5367.    Return 
  5368.    
  5369.    
  5370.    _KILL_ALL_ALIENS:
  5371.    ' - Kills all aliens! - No! - Yes! - No! - Yes! - No! - Yes! - No! - Yes! - No! - Yes! - No! - Yes! - No! - Yes! - No! - Yes! - This could go on all night!
  5372.    For ALIEN=3 To 7
  5373.       Bob ALIEN,400,200,ALIEN_SHIP
  5374.       Amal Off ALIEN
  5375.       Move Off ALIEN
  5376.       Wait Vbl 
  5377.    Next ALIEN
  5378.    Return 
  5379.    
  5380.    
  5381.    ' ----- Dead Dude stuff -----
  5382.    
  5383.    AARRGH_THEY_GOT_ME:
  5384.    ' - Main ship death sequence 
  5385.    
  5386.    If Not BONUS_STAGE
  5387.       ' - Explode ship 
  5388.       Amal MAIN_SHIP,MAIN_DIE$
  5389.       Amal On MAIN_SHIP
  5390.       Sam Play %1001,MAIN_SHIP_BOOM,5000
  5391.       Wait 12
  5392.       Bob Off MAIN_SHIP
  5393.       
  5394.       If Not GUARDIAN_STAGE
  5395.          ' - Cos guardians use all eight colous! (Yes all EIGHT!) 
  5396.          ' - Fade aliens
  5397.          Fade 2,,,,,0,0,0,0
  5398.          Wait 30
  5399.       Else 
  5400.          If LIVES>0
  5401.             Fade 1 : Wait 15
  5402.             If BACKGROUND=6
  5403.                BACKGROUND=7
  5404.             Else 
  5405.                If BACKGROUND=10
  5406.                   BACKGROUND=6
  5407.                Else 
  5408.                   If BACKGROUND=7
  5409.                      BACKGROUND=10
  5410.                   End If 
  5411.                End If 
  5412.             End If 
  5413.             Gosub SETUP_BACKGROUND
  5414.          End If 
  5415.       End If 
  5416.       
  5417.       ' - Delete aliens
  5418.       Gosub _KILL_ALL_ALIENS
  5419.       
  5420.       If LIVES>0
  5421.          ' - Re-Start current wave
  5422.          If _WAVE_CTR>1
  5423.             Dec _WAVE_CTR
  5424.          Else 
  5425.             _WAVE_CTR=NUM_OF_WAVES
  5426.          End If 
  5427.          ALIENS_ALIVE=0
  5428.          _TEXT=_GET_READY
  5429.          
  5430.          ' - Position Main Ship 
  5431.          Amal Off MAIN_SHIP
  5432.          Bob MAIN_SHIP,60,60,MAIN_SHIP
  5433.          
  5434.          ' - Update life counter
  5435.          Dec LIVES
  5436.          Gosub _UPDATE_LIVES
  5437.          
  5438.          ' - Ensure that the background is not changed etc. 
  5439.          GUARDIAN_STAGE=False
  5440.       Else 
  5441.          ' - No lives left! 
  5442.          Gosub GAME_OVER_DUDE
  5443.       End If 
  5444.    Else 
  5445.       
  5446.       ' ----- Bonus Stage Stuff -----
  5447.       
  5448.       If I Bob(ALIEN)=_1UP
  5449.          ' - If they collected the Extra Life 
  5450.          Inc LIVES
  5451.          Sam Play %110,CHINK,10000
  5452.          Gosub _UPDATE_LIVES
  5453.          Dec ALIENS_ALIVE
  5454.          Bob Off 3
  5455.       Else 
  5456.          If I Bob(ALIEN)=_20_POINTS
  5457.             ' - If they collected a score bonus
  5458.             Add SCORE,20
  5459.             Sam Play %110,CHINK,10000
  5460.             Gosub _UPDATE_SCORE
  5461.             Dec ALIENS_ALIVE
  5462.             Bob Off 4
  5463.          Else 
  5464.             If I Bob(ALIEN)=_10_POINTS
  5465.                ' - If they collected a score bonus
  5466.                Add SCORE,10
  5467.                Sam Play %110,CHINK,10000
  5468.                Gosub _UPDATE_SCORE
  5469.                Dec ALIENS_ALIVE
  5470.                Bob Off 5
  5471.             Else 
  5472.                ' If I died! (Highly unlikely! - It's too easy!) 
  5473.                ALIENS_ALIVE=0
  5474.                BONUS_STAGE=False
  5475.                Inc _WAVE_CTR : Rem - So you don't repeat the bonus stage
  5476.                Inc LIVES : Rem - So you don't lose a life for dying here! 
  5477.                Gosub AARRGH_THEY_GOT_ME
  5478.             End If 
  5479.          End If 
  5480.       End If 
  5481.       If ALIENS_ALIVE=0
  5482.          ' - End of Bonus Stage!
  5483.          BONUS_STAGE=False
  5484.          Gosub _KILL_ALL_ALIENS
  5485.       End If 
  5486.    End If 
  5487.    Return 
  5488.    
  5489.    
  5490.    GAME_OVER_DUDE:
  5491.    
  5492.    ' - Remove aliens from screen... 
  5493.    Gosub _KILL_ALL_ALIENS
  5494.    ' - ...and the main ship 
  5495.    Bob Off MAIN_SHIP
  5496.    
  5497.    ' - Clear the screen   
  5498.    Fade 1 : Wait 15
  5499.    Cls 0
  5500.    ' - And again! 
  5501.    Bob Off 
  5502.    Palette 0,0,0,0,0,0,0,0
  5503.    Cls 0
  5504.    Wait Vbl 
  5505.    Get Sprite Palette 
  5506.    
  5507.    ' - Display game over text 
  5508.    Bob _TEXT_BOB,40,-30,GAME_OVER
  5509.    Amal _TEXT_BOB,_TEXT_ON$
  5510.    Amal On _TEXT_BOB
  5511.    
  5512.    '- Stop colour cycling. (I thought it was supposed to be animation!) 
  5513.    Screen 1 : Shift Off : Screen 0
  5514.    
  5515.    ' - Set appropriate stuff! (I do like meaningful variable names!)
  5516.    YOU_DIED_SCUMBAG=True
  5517.    _PLAYED_AND_DIED=True
  5518.    _TEXT=_GET_READY
  5519.    Return 
  5520.    
  5521.    
  5522.    YEAH_GOT_ONE:
  5523.    ' - They actually managed to hit an alien! - It's a miracle! 
  5524.    If Not BONUS_STAGE
  5525.       If ALIEN_HIT(ALIEN-3)=1
  5526.          ' - If the alien was on its last legs (poor soul)
  5527.          ' - Move an alien off the screen 
  5528.          Amal ALIEN,ALIEN_DIE$
  5529.          Amal On ALIEN
  5530.          Sam Play %110,ALIEN_BOOM,10000
  5531.          
  5532.          ' - Decrement alien counter
  5533.          Dec ALIENS_ALIVE
  5534.       Else 
  5535.          ' - Decrement alien hit counter (The shield is down!  Commence attack on the Death-Stars main reactor!)
  5536.          Dec ALIEN_HIT(ALIEN-3)
  5537.          Sam Play %110,CHINK,10000
  5538.       End If 
  5539.       
  5540.       ' - Increment the score
  5541.       Inc SCORE
  5542.       Gosub _UPDATE_SCORE
  5543.    End If 
  5544.    ' - If it's the Bonus Stage... Nothing happens!
  5545.    
  5546.    ' - Erase the bullet from the screen 
  5547.    Bob BULLET,540,-60,BULLET
  5548.    
  5549.    Return 
  5550.    
  5551.    
  5552.    ' ----- Status screen updates -----
  5553.    
  5554.    _UPDATE_LEVEL:
  5555.    ' - Hmmm, I wonder what this does? 
  5556.    TXT$=Str$(_WAVE_CTR)
  5557.    Screen 2
  5558.    Ink 0 : Bar 177,1 To 200,9
  5559.    Ink 1 : Text 177,8,TXT$
  5560.    Screen 0
  5561.    Return 
  5562.    
  5563.    
  5564.    _UPDATE_LIVES:
  5565.    ' - They either died or they got an Extra! 
  5566.    TXT$=Str$(LIVES)
  5567.    Screen 2
  5568.    Ink 0 : Bar 70,1 To 85,9
  5569.    Ink 1 : Text 70,8,TXT$
  5570.    Screen 0
  5571.    Return 
  5572.    
  5573.    
  5574.    _UPDATE_SCORE:
  5575.    ' - Re-draw the score (Look at the size of that sausage!)
  5576.    TXT$=Str$(SCORE)
  5577.    Screen 2
  5578.    Ink 0 : Bar 280,1 To 320,9
  5579.    Ink 1 : Text 285,8,TXT$
  5580.    Screen 0
  5581.    Return 
  5582.    
  5583.    
  5584.    ' ----- Pause Mode Code (Woah! Freud Dude!) -----
  5585.    
  5586.    PAUSE:
  5587.    ' - Stop animation and cycling (ah! so it is cycling!) 
  5588.    Amal Freeze 
  5589.    Move Freeze 
  5590.    Screen 1 : Shift Off : Screen 0
  5591.    Bob _TEXT_BOB,120,50,PAUSED_IMAGE
  5592.    Wait 5
  5593.    
  5594.    Repeat 
  5595.       ' - Wait until they release the P key - Depending on key-repeat time 
  5596.    Until Not Key State(25)
  5597.    
  5598.    Repeat 
  5599.       ' - Wait for them to press P, Fire or Escape (or for hell to freeze over!) 
  5600.       Wait Vbl 
  5601.       If Key State(69)
  5602.          ' - They pressed Escape - That wasn't very polite! 
  5603.          YOU_DIED_SCUMBAG=True
  5604.       End If 
  5605.    Until Key State(25) or YOU_DIED_SCUMBAG or Fire(1)
  5606.    
  5607.    Repeat 
  5608.       ' - Wait until they release the P key - Depending on key-repeat time 
  5609.    Until Not Key State(25)
  5610.    
  5611.    ' - Re-start it all - Weeeeee... 
  5612.    Bob Off _TEXT_BOB
  5613.    Screen 1 : Shift Down 1,2,7,1 : Screen 0
  5614.    Amal On 
  5615.    Move On 
  5616.    Return 
  5617.    
  5618.    
  5619.    ' ----- BACKGROUND SETUP ----- 
  5620.    
  5621.    SETUP_BACKGROUND:
  5622.    ' - This should be called after each guardian to fade it 
  5623.    ' - and set new the background picture.
  5624.    
  5625.    Fade 1 : Wait 15
  5626.    
  5627.    ' - Unpack appropriate background
  5628.    Unpack BACKGROUND To 0
  5629.    Screen Display 0,,86,,125
  5630.    Palette 0,0,0,0,0,0,0,0
  5631.    Double Buffer 
  5632.    
  5633.    ' - Fade it on 
  5634.    Fade 1,0,$CCC,$888,$22F,,,
  5635.    Wait 15
  5636.    
  5637.    ' - Set next background bank 
  5638.    If BACKGROUND=7
  5639.       BACKGROUND=6
  5640.       ' - Change scrolly colour (Yellow and Black) 
  5641.       Screen 1
  5642.       Shift Off 
  5643.       Fade 1,,,$FF0,$FF0,$FF0,$222,$222,$222 : Wait 15
  5644.       Shift Down 1,2,7,1
  5645.       ' - Flash bar on border  
  5646.       Flash 1,"(f00,20)(c00,5)(900,5)(500,5)(200,40)(500,5)(900,5)(c00,5)"
  5647.       Screen 0
  5648.    Else 
  5649.       If BACKGROUND=6
  5650.          BACKGROUND=10
  5651.          ' - Change scrolly colour (Red and Blue) 
  5652.          Screen 1
  5653.          Shift Off 
  5654.          Fade 1,,,$F00,$F00,$F00,$225,$225,$225 : Wait 15
  5655.          Shift Down 1,2,7,1
  5656.          ' - Flash bar on border  
  5657.          Flash 1,"(ff0,20)(cc0,5)(990,5)(550,5)(220,40)(550,5)(990,5)(cc0,5)"
  5658.          Screen 0
  5659.       Else 
  5660.          If BACKGROUND=10
  5661.             BACKGROUND=7
  5662.             ' - Change scrolly colour (Pink and Green) (nice!)   
  5663.             Screen 1
  5664.             Shift Off 
  5665.             Fade 1,,,$FC0,$FC0,$FC0,$252,$252,$252 : Wait 15
  5666.             Shift Down 1,2,7,1
  5667.             ' - Flash bar on border  
  5668.             Flash 1,"(00f,20)(00c,5)(009,5)(005,5)(002,40)(005,5)(009,5)(00c,5)"
  5669.             Screen 0
  5670.          End If 
  5671.       End If 
  5672.    End If 
  5673.    
  5674.    ' - Re-initialise all bobs on new screen 
  5675.    Gosub INIT_BOBS
  5676.    Return 
  5677.    
  5678.    
  5679.    ' ----- Initialise Bobs -----
  5680.    
  5681.    INIT_BOBS:
  5682.    ' - Needs to be called each time a new background is used! 
  5683.    
  5684.    ' - Define channels for ship, bullet and aliens
  5685.    For CTR=1 To NUM_BOBS
  5686.       Channel CTR To Bob CTR
  5687.    Next CTR
  5688.    
  5689.    ' - Position baddies off screen for starters 
  5690.    For ALIEN=3 To NUM_OF_BOBS
  5691.       Bob ALIEN,340,240,ALIEN_SHIP
  5692.    Next ALIEN
  5693.    
  5694.    ' - Define Bullet movement and position initial bullet 
  5695.    BULLET$="M 340,0,40 : Let X=800 : Let Y=500"
  5696.    Bob BULLET,540,-60,BULLET
  5697.    
  5698.    ' - Define Alien death movement
  5699.    ALIEN_DIE$="M 0,330,30"
  5700.    
  5701.    ' - Define Main Ship death animation 
  5702.    MAIN_DIE$="A 1,(15,3)(16,3)(17,3)(18,3)"
  5703.    
  5704.    ' - Define Text bob
  5705.    Channel _TEXT_BOB To Bob _TEXT_BOB
  5706.    _TEXT_ON$="M 0,50,25 ;"
  5707.    _TEXT_OFF$="M 0,-50,25 ;"
  5708.    Bob _TEXT_BOB,40,-30,_TEXT
  5709.    
  5710.    ' - Play or Quit text
  5711.    Channel P_Q To Bob P_Q
  5712.    P_Q_ON$="M 0,-50,25 ;"
  5713.    P_Q_OFF$="M 0,50,25 ;"
  5714.    
  5715.    ' - Position Main Ship 
  5716.    Bob MAIN_SHIP,60,60,MAIN_SHIP
  5717.    
  5718.    Return 
  5719.    
  5720.    
  5721.    
  5722.    WELL_DONE:
  5723.    ' - Display Message  
  5724.    Fade 1 : Wait 15
  5725.    Bob Off 
  5726.    Cls 0
  5727.    Get Sprite Palette 
  5728.    Bob _TEXT_BOB,60,-30,CON_TEXT
  5729.    Amal _TEXT_BOB,_TEXT_ON$
  5730.    Amal On _TEXT_BOB
  5731.    Wait 100
  5732.    
  5733.    Fade 1 : Wait 15 : Cls 0
  5734.    ' - Set text for next time 
  5735.    _TEXT=_GET_READY
  5736.    Return 
  5737.    
  5738. End Proc
  5739. Procedure RESET_DEMO
  5740.    ' - Re-load the music and continue the demo
  5741.    INSERT_DISK_ONE
  5742.    SETUP_FONT
  5743.    NEW_TEXT_SCREEN["page14"]
  5744.    Track Load "no-refund!:stuff/music",3
  5745.    Track Loop On 
  5746.    Track Play 3
  5747.    CLEAR_TEXT_SCREEN
  5748.    SHUT_TEXT_SCREENS
  5749.    INSERT_DISK_TWO
  5750. End Proc
  5751.  
  5752. ' - Vectorballs bit
  5753. Procedure VECTOR_BALLS
  5754.    SETUP_FONT
  5755.    NEW_TEXT_SCREEN["page11"]
  5756.    Load "no-refund2!:stuff/pyramid",6
  5757.    Load "no-refund2!:stuff/cross",7
  5758.    Load "no-refund2!:stuff/box",8
  5759.    Load "no-refund2!:stuff/plane",9
  5760.    Load "no-refund2!:stuff/green_ball",1
  5761.    CLEAR_TEXT_SCREEN
  5762.    SHUT_TEXT_SCREENS
  5763.    
  5764.    SHADOW_3D
  5765.    Erase 1
  5766.    
  5767.    Load "no-refund2!:stuff/vecball",1
  5768.    _PLAY_ANIM[54,1,6,$C00,$900,$500]
  5769.    _PLAY_ANIM[53,1,7,$C,$9,$5]
  5770.    _PLAY_ANIM[43,1,8,$CC0,$990,$550]
  5771.    _PLAY_ANIM[24,1,9,$C0C,$909,$505]
  5772.    Erase 1
  5773.    
  5774. End Proc
  5775. Procedure SHADOW_3D
  5776.    ' - Code - Dug 
  5777.    
  5778.    Screen Open 0,320,256,4,Lowres
  5779.    Flash Off : Curs Off : Cls 0 : Hide 
  5780.    Double Buffer 
  5781.    Autoback 0
  5782.    For C=0 To 31 : Colour C,0 : Next C
  5783.    Limit Mouse 0,0 To 320,320
  5784.    Clip 0,0 To 320,255
  5785.    
  5786.    
  5787.    MP=4
  5788.    NP=MP*2-1
  5789.    Dim FX(MP-1),FY(MP-1),FZ(MP-1)
  5790.    Dim X(NP),Y(NP),Z(NP),SX(NP),SY(NP)
  5791.    
  5792.    
  5793.    Gosub _SETUP_PLATE
  5794.    
  5795.    
  5796.    X_ORG=160
  5797.    Y_ORG=150
  5798.    DVP=-200
  5799.    FLOOR=-50 : Rem Y coord of floor (or sea level)
  5800.    SUNX=0
  5801.    SUNY=50
  5802.    SUNZ=0
  5803.    
  5804.    
  5805.    OBJX=30
  5806.    OBJY=80
  5807.    OBJZ=-181
  5808.    
  5809.    TIME=70
  5810.    S=5
  5811.    Sprite 1,X Hard(140),Y Hard(50),1
  5812.    Fade S,1,$454,$2,$4,,,,,,,,,,,,,,$FF0,$880,$330
  5813.    
  5814.    For SHADOW=1 To TIME
  5815.       Screen Swap : Wait Vbl 
  5816.       Cls 0
  5817.       Add OBJZ,2
  5818.       Add OBJX,-2
  5819.       Add OBJY,-1
  5820.       Gosub _DRW_SEA
  5821.       Gosub _MOVE_PLATE
  5822.       Gosub _CALCULATE_SHADOW
  5823.       Gosub _CONV_DRW_COORDS
  5824.       If SHADOW>TIME-15 Then Fade 4
  5825.    Next SHADOW
  5826.    
  5827.    Autoback 2
  5828.    Sprite Off 1
  5829.    Screen Close 0
  5830.    
  5831.    Pop Proc
  5832.    
  5833.    
  5834.    _DRW_SEA:
  5835.    Ink 3 : Bar 0,Y_ORG To Screen Width,Screen Height
  5836.    Return 
  5837.    
  5838.    
  5839.    _MOVE_PLATE:
  5840.    For L=0 To NUMP-1
  5841.       X(L)=FX(L)+OBJX
  5842.       Y(L)=FY(L)+OBJY
  5843.       Z(L)=FZ(L)+OBJZ
  5844.    Next L
  5845.    Return 
  5846.    
  5847.    
  5848.    _CALCULATE_SHADOW:
  5849.    For L=0 To NUMP-1
  5850.       SCALE#=Max(Abs(5.0-Y(L)/20.0),1)
  5851.       X(L+NUMP)=X(L)*SCALE#
  5852.       Y(L+NUMP)=FLOOR
  5853.       Z(L+NUMP)=Z(L)*SCALE#
  5854.    Next L
  5855.    Return 
  5856.    
  5857.    
  5858.    _CONV_DRW_COORDS:
  5859.    For L=0 To NP
  5860.       ZF=DVP+Z(L)
  5861.       SX(L)=X_ORG+(X(L)*DVP)/ZF
  5862.       SY(L)=Y_ORG-(Y(L)*DVP)/ZF
  5863.    Next L
  5864.    Gosub _DRW_PLATE
  5865.    Gosub _DRW_SHADOW
  5866.    Return 
  5867.    
  5868.    
  5869.    _DRW_PLATE:
  5870.    Ink 1
  5871.    Polygon SX(0),SY(0) To SX(1),SY(1) To SX(2),SY(2) To SX(3),SY(3) To SX(0),SY(0)
  5872.    Return 
  5873.    
  5874.    
  5875.    _DRW_SHADOW:
  5876.    Ink 2
  5877.    Polygon SX(4),SY(4) To SX(5),SY(5) To SX(6),SY(6) To SX(7),SY(7) To SX(4),SY(4)
  5878.    Return 
  5879.    
  5880.    
  5881.    _SETUP_PLATE:
  5882.    Restore PLATE
  5883.    Read NUMP
  5884.    For L=0 To NUMP-1
  5885.       Read FX(L),FY(L),FZ(L)
  5886.       X(L)=FX(L)
  5887.       Y(L)=FY(L)
  5888.       Z(L)=FZ(L)
  5889.    Next L
  5890.    Return 
  5891.    
  5892.    
  5893.    PLATE:
  5894.    Data 4
  5895.    Data -30,0,20
  5896.    Data 30,0,20
  5897.    Data 30,0,40
  5898.    Data -30,0,40
  5899.    
  5900.    
  5901. End Proc
  5902. Procedure _PLAY_ANIM[NUM_POINTS,_REPEAT,_BANK,C1,C2,C3]
  5903.    ' - Code - Dug 
  5904.    ' - GFX - Rob
  5905.    ' - Movement - Matt & Dug
  5906.    
  5907.    
  5908.    ' == Vector bob screen ==
  5909.    Screen Open 2,320,256,4,Lowres
  5910.    Flash Off : Curs Off : Cls 0 : Hide 
  5911.    Palette 0,C1,C2,C3
  5912.    Double Buffer 
  5913.    Autoback 0
  5914.    Screen To Front 2
  5915.    ' =======================
  5916.    
  5917.    
  5918.    ' ==  Play animation   ==  
  5919.    
  5920.    
  5921.    Gosub _READ_ITEM
  5922.    NUM_FRAMES=ITEM
  5923.    
  5924.    If NUM_FRAMES>0
  5925.       For R=1 To _REPEAT
  5926.          _BANK_OFFSET=8
  5927.          For F=1 To NUM_FRAMES
  5928.             Screen Swap : Wait Vbl 
  5929.             Cls 0
  5930.             Gosub _PLAY_ANIM
  5931.             If Mouse Key=1 : Fade 2 : Wait 30 : Exit 2 : End If 
  5932.          Next F
  5933.       Next R
  5934.    End If 
  5935.    
  5936.    ' =======================
  5937.    Erase _BANK
  5938.    Screen Close 2
  5939.    Pop Proc
  5940.    ' =======================
  5941.    
  5942.    
  5943.    _PLAY_ANIM:
  5944.    For L=0 To NUM_POINTS
  5945.       Gosub _READ_ITEM : X=ITEM
  5946.       Gosub _READ_ITEM : Y=ITEM
  5947.       Gosub _READ_ITEM : IMAGE=ITEM
  5948.       Paste Bob X,Y,IMAGE
  5949.    Next L
  5950.    Return 
  5951.    
  5952.    _READ_ITEM:
  5953.    ITEM=Leek(Start(_BANK)+_BANK_OFFSET)
  5954.    Add _BANK_OFFSET,4
  5955.    Return 
  5956.    ' =======================  
  5957.    
  5958.    
  5959. End Proc
  5960.  
  5961. ' - Green Jello & Duck part
  5962. Procedure JELLO_DUCK
  5963.    
  5964.    ' - Calling procedure for the duck and jello vector
  5965.    
  5966.    SETUP_FONT
  5967.    NEW_TEXT_SCREEN["page16"]
  5968.    ' - Load plasma stuff
  5969.    Load "no-refund2!:stuff/duck",8
  5970.    Wait 50
  5971.    CLEAR_TEXT_SCREEN
  5972.    SHUT_TEXT_SCREENS
  5973.    
  5974.    ' - Call me Al!
  5975.    JELLY_SHAPE[200]
  5976.    DUCK
  5977. End Proc
  5978. Procedure JELLY_SHAPE[TIME]
  5979.    ' - Dug - Code 
  5980.    
  5981.    
  5982.    ' ===================================================================
  5983.    
  5984.    Screen Open 0,320,256,8,Lowres
  5985.    Flash Off : Curs Off : Cls 0 : Hide 
  5986.    Double Buffer 
  5987.    Autoback 0
  5988.    Palette 1,1,1,1,1,1,1,1
  5989.    Limit Mouse 0,0 To 320,320
  5990.    
  5991.    
  5992.    ' ===================================================================
  5993.    ' -- Screen's palette
  5994.    Dim RGB(Screen Colour-1)
  5995.    For C=0 To Screen Colour-1
  5996.       RGB(C)=$1+(C*$120)
  5997.    Next C
  5998.    
  5999.    ' ===================================================================
  6000.    
  6001.    NICE_RAINBOW:
  6002.    Set Rainbow 0,0,4096,"","",""
  6003.    RY=0
  6004.    For LOP=0 To 10
  6005.       For LOP2=0 To 1
  6006.          Rain(0,RY)=LOP*$110
  6007.          Inc RY
  6008.       Next LOP2
  6009.    Next LOP
  6010.    For LOP=1 To 135
  6011.       Rain(0,RY)=$BB0
  6012.       Inc RY
  6013.    Next LOP
  6014.    Rainbow 0,0,Y Hard(140),120
  6015.    
  6016.    
  6017.    ' ===================================================================
  6018.    
  6019.    
  6020.    NP=7 : Rem Max no. of points
  6021.    NS=5 : Rem Max no. of surfaces per object 
  6022.    NN=3 : Rem Max no. of nodes within a surface
  6023.    Dim FX(NP),FY(NP),FZ(NP) : Rem - Object's frame 
  6024.    Dim X(NP),Y(NP),Z(NP) : Rem    - Coords of manipulated points
  6025.    Dim SX(NN),SY(NN) : Rem        - Screen coords of the points to be drawn 
  6026.    Dim CONNECT(NS,NN) : Rem       - How to connect the object's points 
  6027.    Dim PADD(NP,2) : Rem           - X/Y/Z/ movements 
  6028.    Dim _DIR(NP,2) : Rem        - Direction of point's components (0=x,1=y,2=z) 
  6029.    
  6030.    
  6031.    DVP=-200 : Rem       - Z coord of the vanishing point 
  6032.    X_ORG=160 : Rem      - Screen coords of the axes' origin   
  6033.    Y_ORG=140
  6034.    
  6035.    
  6036.    SHAPE_NUMBER=1 : Rem - No. of shape to be used
  6037.    NUM_OBJECTS=1 : Rem  - No. of objects to go through  
  6038.    
  6039.    NUM_POINTS=0 : Rem   - No. of points to the shape 
  6040.    NUM_CONNECTS=0 : Rem - No. of connections to make in this object
  6041.    
  6042.    
  6043.    OBJX=0 : Rem         - Coords of the 3d shape itself
  6044.    OBJY=0
  6045.    OBJZ=0
  6046.    OBJ_YMAX=10
  6047.    OBJ_YADD=0
  6048.    OBJ_DELAY=0
  6049.    
  6050.    
  6051.    ' ===================================================================
  6052.    
  6053.    Gosub SETUP_SHAPE
  6054.    For OBJECT=1 To NUM_OBJECTS
  6055.       For MAIN_LOOP=1 To TIME : Rem Manipulate objects for specified TIME
  6056.          Screen Swap : Wait Vbl 
  6057.          Cls 0
  6058.          Gosub _DRAW_JELLY_VECTOR
  6059.       Next MAIN_LOOP
  6060.    Next OBJECT
  6061.    For DEL=0 To 20
  6062.       Screen Swap : Wait Vbl 
  6063.       Cls 0
  6064.       Gosub _DRAW_JELLY_VECTOR
  6065.       Add OBJY,-4
  6066.    Next DEL
  6067.    
  6068.    
  6069.    ' ===================================================================
  6070.    
  6071.    Rem -- End Of Part --
  6072.    Fade 2,1,$BB0,$BB0,$BB0,$BB0,$BB0,$BB0,$BB0 : Wait 30
  6073.    Autoback 2
  6074.    Cls 0
  6075.    RY=Y Hard(140)
  6076.    Repeat 
  6077.       Rainbow 0,,RY,
  6078.       Inc RY
  6079.       Wait Vbl 
  6080.    Until Y Screen(RY)>260
  6081.    Rainbow Del 0
  6082.    Screen Close 0
  6083.    Pop Proc
  6084.    
  6085.    
  6086.    ' ===================================================================
  6087.    
  6088.    _DRAW_JELLY_VECTOR:
  6089.    Gosub _MOVE_JELLY_VECTOR : Rem Move the jelly vector
  6090.    
  6091.    I=1
  6092.    For CJV=0 To 5 : Rem Draw one surface at a time 
  6093.       Gosub _CONV_COORDS : Rem Only SX(0),SY(0) - SX(3),SY(3) are used
  6094.       
  6095.       Ink I
  6096.       Inc I
  6097.       Polygon SX(0),SY(0) To SX(1),SY(1) To SX(2),SY(2) To SX(3),SY(3) To SX(0),SY(0)
  6098.    Next CJV
  6099.    Return 
  6100.    
  6101.    
  6102.    _CONV_COORDS:
  6103.    For L=0 To NN
  6104.       Rem CJV is used in above For.. Next loop 
  6105.       P=CONNECT(CJV,L) : Rem Surface CJV, node L
  6106.       
  6107.       ZF=Z(P)+DVP
  6108.       SX(L)=X_ORG+(X(P)*DVP)/ZF : Rem Convert 3D to 2D screen coords 
  6109.       SY(L)=Y_ORG-(Y(P)*DVP)/ZF
  6110.       
  6111.    Next L
  6112.    Return 
  6113.    
  6114.    
  6115.    ' ===================================================================
  6116.    
  6117.    _MOVE_JELLY_VECTOR:
  6118.    Add OBJY,OBJ_YADD
  6119.    Add OBJ_YADD,-1,-OBJ_YMAX To OBJ_YMAX
  6120.    If OBJ_YADD=-OBJ_MAX Then Dec OBJ_YMAX
  6121.    
  6122.    For P=0 To NUM_POINTS
  6123.       Add FX(P),PADD(P,0) : Rem Add movements to the point's coords
  6124.       Add FY(P),PADD(P,1)
  6125.       Add FZ(P),PADD(P,2)
  6126.       ' - Do X direction 
  6127.       Add PADD(P,0),_DIR(P,0) : Rem Add direction
  6128.       If PADD(P,0)=2 Then _DIR(P,0)=-1
  6129.       If PADD(P,0)=-2 Then _DIR(P,0)=1
  6130.       
  6131.       ' - Do Y direction 
  6132.       Add PADD(P,1),_DIR(P,1) : Rem Add direction
  6133.       If PADD(P,1)=2 Then _DIR(P,1)=-1
  6134.       If PADD(P,1)=-2 Then _DIR(P,1)=1
  6135.       
  6136.       ' - Do Z direction 
  6137.       Add PADD(P,2),_DIR(P,2) : Rem Add direction
  6138.       If PADD(P,2)=2 Then _DIR(P,2)=-1
  6139.       If PADD(P,2)=-2 Then _DIR(P,2)=1
  6140.       
  6141.       X(P)=FX(P)+OBJX : Y(P)=FY(P)+OBJY : Z(P)=FZ(P)+OBJZ
  6142.       If Y(P)<-40
  6143.          Y(P)=-40
  6144.          Add X(P),X(P)/Abs(X(P))*3
  6145.          Add Y(P),Y(P)/Abs(Y(P))*3
  6146.       End If 
  6147.    Next P
  6148.    Return 
  6149.    
  6150.    
  6151.    ' ===================================================================
  6152.    
  6153.    SETUP_SHAPE:
  6154.    Fade 1,RGB(0),RGB(0),RGB(0),RGB(0),RGB(0),RGB(0),RGB(0),RGB(0) : Wait 15
  6155.    Restore "SHAPE_"+Str$(SHAPE_NUMBER)-" " : Rem - Read next object's points
  6156.    Read NUM_POINTS
  6157.    For P=0 To NUM_POINTS
  6158.       Read FX(P),FY(P),FZ(P)
  6159.       X(P)=FX(P)
  6160.       Y(P)=FY(P)
  6161.       Z(P)=FZ(P)
  6162.       A=Rnd(1)
  6163.       B=Rnd(1)
  6164.       C=Rnd(1)
  6165.       _DIR(P,0)=-1 : Rem X Add  
  6166.       If A=1 Then _DIR(P,0)=1
  6167.       _DIR(P,1)=-1 : Rem Y Add  
  6168.       If B=1 Then _DIR(P,1)=1
  6169.       _DIR(P,2)=-1 : Rem Z Add  
  6170.       If C=1 Then _DIR(P,2)=1
  6171.       PADD(P,0)=-1+Rnd(2)
  6172.       PADD(P,1)=-1+Rnd(2)
  6173.       PADD(P,2)=-1+Rnd(2)
  6174.    Next P
  6175.    
  6176.    Restore "SHAPE_CONNECT_"+Str$(SHAPE_NUMBER)-" "
  6177.    Read NUM_CONNECTS
  6178.    For C=0 To NUM_CONNECTS
  6179.       Read CONNECT(C,0),CONNECT(C,1),CONNECT(C,2),CONNECT(C,3)
  6180.    Next C
  6181.    
  6182.    Fade 1,RGB(0),RGB(1),RGB(2),RGB(3),RGB(4),RGB(5),RGB(6),RGB(7)
  6183.    Return 
  6184.    
  6185.    
  6186.    ' -- Coords of the points relative to the object's coords -- 
  6187.    SHAPE_1:
  6188.    Data 7
  6189.    Data -30,30,-30
  6190.    Data 30,30,-30
  6191.    Data 30,-30,-30
  6192.    Data -30,-30,-30
  6193.    Data -30,30,30
  6194.    Data 30,30,30
  6195.    Data 30,-30,30
  6196.    Data -30,-30,30
  6197.    
  6198.    
  6199.    ' -- How to connect the points --
  6200.    SHAPE_CONNECT_1:
  6201.    Data 5
  6202.    Data 0,1,2,3
  6203.    Data 4,5,6,7
  6204.    Data 0,1,5,4
  6205.    Data 2,3,7,6
  6206.    Data 1,5,6,2
  6207.    Data 0,4,7,3
  6208.    
  6209.    
  6210. End Proc
  6211. Procedure DUCK
  6212.    ' - Code - Matt
  6213.    ' - GFX - Matt 
  6214.    
  6215.    Screen Open 1,100,100,16,Lowres
  6216.    Curs Off : Cls 0 : Hide : Flash Off 
  6217.    Screen Hide 1
  6218.    
  6219.    Unpack 8 To 0
  6220.    Screen Hide 0
  6221.    Erase 8
  6222.    
  6223.    Screen 1
  6224.    Get Palette 0
  6225.    Screen 0
  6226.    Palette 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  6227.    Screen Show 0
  6228.    Fade 2 To 1 : Wait 15*2
  6229.    Screen Close 1
  6230.    
  6231.    Autoback 0
  6232.    
  6233.    Channel 0 To Screen Offset 0
  6234.    
  6235.    Amal 0,"M -610,0,30 ;"
  6236.    Amal On 
  6237.    
  6238.    COUNTER=0
  6239.    Repeat 
  6240.       Screen Swap : Wait Vbl 
  6241.       Inc COUNTER
  6242.    Until COUNTER=30 or Mouse Key=1
  6243.    
  6244.    Amal Off 
  6245.    
  6246.    Wait 30
  6247.    Fade 2 : Wait 15*2
  6248.    Autoback 2
  6249.    Screen Close 0
  6250.    
  6251. End Proc
  6252.  
  6253. ' - Aerosol bit
  6254. Procedure KANO_TEXT_AEROSOL
  6255.    SETUP_FONT
  6256.    NEW_TEXT_SCREEN["page12"]
  6257.    Load "no-refund2!:stuff/aerosol_pic",8
  6258.    Load "no-refund2!:stuff/rdfsm",5
  6259.    Load "no-refund2!:stuff/kano_pic",9
  6260.    Load "no-refund2!:stuff/clrscrbob",1
  6261.    Load "no-refund2!:stuff/pattern_font",7
  6262.    CLEAR_TEXT_SCREEN
  6263.    SHUT_TEXT_SCREENS
  6264.    
  6265.    ' - Start the stuff
  6266.    CLR_SCREEN
  6267.    THE_TEXT_SCREENS
  6268.    AEROSOL
  6269. End Proc
  6270. Procedure CLR_SCREEN
  6271.    ' - Code - Matt
  6272.    ' - GFX - Rob
  6273.    
  6274.    ' - Open screen to display bobs
  6275.    Screen Open 0,400,256,8,Lowres
  6276.    Curs Off : Cls 0 : Hide : Flash Off 
  6277.    Screen Display 0,100,,,
  6278.    
  6279.    ' - Open screen to store palette 
  6280.    Screen Open 2,60,60,16,Lowres
  6281.    Curs Off : Cls 0 : Flash Off : Hide 
  6282.    Screen Hide 2
  6283.    
  6284.    ' - Unpack picture to hidden screen
  6285.    Unpack 9 To 1
  6286.    Screen To Front 0
  6287.    
  6288.    ' - Store pictures palette in another screen 
  6289.    Screen 2
  6290.    Get Palette 1
  6291.    
  6292.    ' - Set picture to totally white 
  6293.    Screen 1
  6294.    W=$FFF
  6295.    Palette W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W
  6296.    
  6297.    ' - Start the bob stuff
  6298.    Screen 0
  6299.    Colour 1,W
  6300.    For C=2 To 7
  6301.       Colour C,$0
  6302.    Next C
  6303.    
  6304.    ' - Paste a column of bobs 
  6305.    For X=0 To 400 Step 15
  6306.       Paste Bob X,0,1
  6307.    Next X
  6308.    
  6309.    ' - Paste lots of columns
  6310.    Get Block 1,0,1,400,15
  6311.    For Y=0 To 256 Step 15
  6312.       Put Block 1,0,Y
  6313.    Next Y
  6314.    
  6315.    ' - Cycle the colours
  6316.    Shift Up 2,1,7,0
  6317.    Wait 15
  6318.    
  6319.    ' - Display the picture
  6320.    Screen Close 0
  6321.    Screen To Front 1
  6322.    Screen 1
  6323.    Wait Vbl 
  6324.    Fade 1 To 2 : Wait 15
  6325.    
  6326.    ' - Wait for a while (or a mouse key)
  6327.    TIME=0
  6328.    Repeat 
  6329.       Inc TIME
  6330.       Wait Vbl 
  6331.    Until Mouse Key=1 or TIME=350
  6332.    
  6333.    ' - Clean up 
  6334.    Fade 1 : Wait 15
  6335.    Screen Close 1
  6336.    Screen Close 2
  6337.    Erase 9
  6338.    Erase 1
  6339.    
  6340. End Proc
  6341. Procedure THE_TEXT_SCREENS
  6342.    ' - Code - Rob 
  6343.    ' - GFX - Matt (font)
  6344.    ' - Text - Matt & Rob
  6345.    
  6346.    ' - Open text screen   
  6347.    Screen Open 0,320,255,4,Lowres
  6348.    Curs Off : Cls 0 : Flash Off : Hide 
  6349.    
  6350.    ' - Open pattern screen
  6351.    Screen Open 2,320,256,4,Lowres
  6352.    Curs Off : Cls 0 : Flash Off : Hide 
  6353.    
  6354.    ' - Unpack font
  6355.    Unpack 7 To 1
  6356.    Screen Hide 1
  6357.    Erase 7
  6358.    Screen 0
  6359.    Get Palette 1
  6360.    
  6361.    ' - Setup dual playfield 
  6362.    Screen To Front 2
  6363.    Screen 0
  6364.    Wait Vbl 
  6365.    Dual Playfield 0,2
  6366.    Wait Vbl 
  6367.    
  6368.    ' - Set colours to black to begin with 
  6369.    Screen 0
  6370.    Palette 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  6371.    
  6372.    ' - Main loop    
  6373.    NUM_PATTERNS=7
  6374.    COUNTER=1
  6375.    Restore MESSAGES
  6376.    Repeat 
  6377.       Read MSG$,YCOORD
  6378.       If Left$(MSG$,1)<>"%"
  6379.          TXT[MSG$,YCOORD]
  6380.       Else 
  6381.          If MSG$="%CLEAR"
  6382.             NEW_PATTERN[COUNTER]
  6383.             Add COUNTER,1,1 To NUM_PATTERNS
  6384.             Gosub CLRDWN
  6385.          End If 
  6386.       End If 
  6387.    Until MSG$="%END"
  6388.    
  6389.    ' - Clean up 
  6390.    Erase 9
  6391.    Screen Close 1
  6392.    Screen Close 0
  6393.    Screen Close 2
  6394.    
  6395.    Pop Proc
  6396.    
  6397.    
  6398.    
  6399.    CLRDWN:
  6400.    
  6401.    ' - Fade everything off
  6402.    Screen 0
  6403.    Fade 1
  6404.    Wait 15
  6405.    Cls 0
  6406.    
  6407.    ' - Clear the pattern and turn off the movement
  6408.    Screen 2
  6409.    Cls 0
  6410.    Move Off 
  6411.    Amal Off 
  6412.    
  6413.    Screen 0
  6414.    Return 
  6415.    
  6416.    
  6417.    
  6418.    ' ----- Text Pages -----   
  6419.    
  6420.    
  6421.    ' %COMMANDS:   
  6422.    ' %CLEAR=CLEAR Screen( Using CLRDWN) 
  6423.    ' %END   = End of messages.
  6424.    
  6425.    '     |-------------------------------------|    
  6426.    MESSAGES:
  6427.    Data "welcome to the aftermath......",15
  6428.    Data "well, you certainly have patience, as",45
  6429.    Data "this is our biggest demo yet!",60
  6430.    Data "this part was inspired by the hidden",90
  6431.    Data "text printer in >how 2 skin a cat< by",105
  6432.    Data "melon, & we thought it was a cool idea!",120
  6433.    Data "we're making this stuff up on the spot",150
  6434.    Data "so don't take it too seriously...",165
  6435.    Data "left button for next page $",200
  6436.    Data "%CLEAR",$FFFF
  6437.    
  6438.    '     |-------------------------------------|    
  6439.    Data "credits waffle -",15
  6440.    Data "the sample sources were.......",45
  6441.    Data "1) rage against the machine",60
  6442.    Data "   - >bullet in the head< (single)",75
  6443.    Data "2) young guns 2 - the soundtrack",90
  6444.    Data "3) manga video - >akira<",105
  6445.    Data "4) tomato sfx - rob & stew",120
  6446.    Data "5) monty python - >the meaning of life<",135
  6447.    Data "6) channel 4 t.v. - mr. drums",150
  6448.    Data "7) nuke 'em sfx - rob & matt",165
  6449.    Data "8) backwards speech - rob",180
  6450.    Data "as usual, most demo code was by dug",210
  6451.    Data "with contributions from rob and matt.",225
  6452.    Data "%CLEAR",$FFFF
  6453.    
  6454.    '     |-------------------------------------|    
  6455.    Data "now for individual talkie bits.....",15
  6456.    Data "right then this is matt bashing the",30
  6457.    Data "keys -",45
  6458.    Data "well i'm afraid i will have to start",75
  6459.    Data "with a grumble (grumble), why do we",90
  6460.    Data "have to use the god awful amos logo at",105
  6461.    Data "the start of our programs?",120
  6462.    Data "when dug writes anything in c, he",135
  6463.    Data "doesn't have to slap a <this program",150
  6464.    Data "was written in sas c v6.0> poster",165
  6465.    Data "at the start!",180
  6466.    Data "is europress feeling insecure? 'coz it",195
  6467.    Data "ain't hard to spot an amos program!",210
  6468.    Data "%CLEAR",$FFFF
  6469.    
  6470.    '     |-------------------------------------|    
  6471.    Data "the shoot 'em up >nuke 'em< was written",10
  6472.    Data "as a disk filler, after we realised",25
  6473.    Data "that >no-refund!< would have to be a",40
  6474.    Data "2 disk demo. it was done entirely by",55
  6475.    Data "rob and i (my gfx, robs' code), while",70
  6476.    Data "dug got on with the vector routines.",85
  6477.    Data "as you may or may not have discovered",115
  6478.    Data "you can boot the second disk straight",130
  6479.    Data "to nuke 'em.",145
  6480.    Data "any funny jerking or bobs with trailing",175
  6481.    Data "images means you are running out of",190
  6482.    Data "chip mem! i've got a 1200 and it runs",205
  6483.    Data "like project x on steroids (tough if",220
  6484.    Data "you're using a 500(+) or 600!)",235
  6485.    Data "%CLEAR",$FFFF
  6486.    
  6487.    '     |-------------------------------------|    
  6488.    Data "hmm, that's it from him! now your stuck",15
  6489.    Data "with me (rob) for a while!",30
  6490.    Data "first up, i have got to explain about",60
  6491.    Data "a few un-documented features (ok! so",75
  6492.    Data "they're bugs!) in >nuke 'em<.",90
  6493.    Data "the first has come to be known as >free",105
  6494.    Data "alien syndrome<.  i'm positive that",120
  6495.    Data "this is just the intelligent aliens",135
  6496.    Data "giving you a hand when you need it, but",150
  6497.    Data "really they sometimes just disappear!",165
  6498.    Data "secondly, you can't actually collide",180
  6499.    Data "with the guardians.  i did have them",195
  6500.    Data "as bobs but it struggled so badly i",210
  6501.    Data "had to scrap it! (it's not my fault!)",225
  6502.    Data "%CLEAR",$FFFF
  6503.    
  6504.    '     |-------------------------------------|    
  6505.    Data "arrrgghhh! not more complaints....",15
  6506.    Data "the first thing is matt!  when we were",45
  6507.    Data "doing the samples for the tomato anim",60
  6508.    Data "he had me sitting in the bathroom with",75
  6509.    Data "my head in the sink, slurping! (it got",90
  6510.    Data "the right effect didn't it? stop",105
  6511.    Data "whinging! - matt)  it's not that i",120
  6512.    Data "didn't enjoy it, i just got a bit wet!",135
  6513.    Data "matt also drew some really nice gfx",150
  6514.    Data "which we never actually used because",165
  6515.    Data "he decided to low-level partition his",180
  6516.    Data "hard disk without backing them up!",195
  6517.    Data "not to worry though 'cos now he's got",210
  6518.    Data "his hard disk taped into his machine!",225
  6519.    Data "%CLEAR",$FFFF
  6520.    
  6521.    '     |-------------------------------------|    
  6522.    Data "if you want to contact us then don't",15
  6523.    Data "delay.  we really are nice people and",30
  6524.    Data "we're always interested to hear from",45
  6525.    Data "other amos users or just demo freaks!,",60
  6526.    Data "the address to write to was shown",75
  6527.    Data "earlier next to the kano pic which was",90
  6528.    Data "inspired by 2000ad.  come to think of",105
  6529.    Data "it, most of the gfx in this demo were",120
  6530.    Data "inspired by 2000ad!!!.",135
  6531.    Data "anyway, in case you missed the address",150
  6532.    Data "here it is again -",165
  6533.    Data "            cybornetics (rob),",180
  6534.    Data "            14 buckingham drive,",195
  6535.    Data "            ely, cambs",210
  6536.    Data "            cb6 1dr.  (england) ",225
  6537.    Data "%CLEAR",$FFFF
  6538.    
  6539.    '     |-------------------------------------|    
  6540.    Data "now for the definitive cybornetics",15
  6541.    Data "greeting list....",30
  6542.    Data "rob, matt and dug all send greetz to -",60
  6543.    Data "overdose - enhance, mike - solo p.d.,",90
  6544.    Data "andy - amos programmers user group,",105
  6545.    Data "lloyd & flynn - quartz productions,",120
  6546.    Data "andy - kick-start amiga (bbs),",135
  6547.    Data "roy (hemel hempstead), dr. john foley,",150
  6548.    Data "anne and len - amos p.d., steve (devon),",165
  6549.    Data "and we can't forget those nice people",180
  6550.    Data "at >amiga mart< who reviewed our last",195
  6551.    Data "demo so well. (we thought so anyway!)",210
  6552.    Data "%CLEAR",$FFFF
  6553.    
  6554.    '     |-------------------------------------|    
  6555.    Data "i'm realy getting in to this list lark",15
  6556.    Data "now so here is some technical info....",30
  6557.    Data "the demo was written while we were all",60
  6558.    Data "on holiday from college.  we used two",75
  6559.    Data "bog standard amiga 500s and a 1200.",90
  6560.    Data "the source code weighs in at over 7000",105
  6561.    Data "lines and there are over 1meg of data",120
  6562.    Data "banks spread over the two disks!",135
  6563.    Data "the music is a stonking 130k and took",150
  6564.    Data "stew about 3 months to finally complete",165
  6565.    Data "the demo was compiled using the new",180
  6566.    Data "amos pro compiler and this gave us",195
  6567.    Data "hell once it got over 5000 lines!",210
  6568.    Data "hmmm, so much for the amos help-line!",225
  6569.    Data "%CLEAR",$FFFF
  6570.    
  6571.    '     |-------------------------------------|    
  6572.    Data "....and finally,",15
  6573.    Data "has anyone actullay got blitz basic?",30
  6574.    Data "we were thinking about using that for",45
  6575.    Data "our next release but we don't have a",60
  6576.    Data "clue what it's like!",75
  6577.    Data "if you've got it, write and let us know",90
  6578.    Data "how you think it compares to little",105
  6579.    Data "old amos professional.",120
  6580.    Data "finally, finally... (pack that in now!)",150
  6581.    Data "it could well be some time before our",165
  6582.    Data "next release coz we all go back to",180
  6583.    Data "skool soon and the non-stop partying",195
  6584.    Data "will have to start again!!!",210
  6585.    Data "life's hard when you're a student...",225
  6586.    Data "%CLEAR",$FFFF
  6587.    
  6588.    Data "%END",$FFFF
  6589.    
  6590. End Proc
  6591. Procedure TXT[_TEXT$,Y_COORD]
  6592.    
  6593.    ' - Initialise Constants.
  6594.    ' fntxsize should be fntxsize + 1
  6595.    _FNTXSIZE=8
  6596.    _FNTYSIZE=14
  6597.    XACCROSS=1
  6598.    
  6599.    ' - Writes the next line of text.
  6600.    For _LOOP=1 To Len(_TEXT$)
  6601.       _CHAR$=Mid$(_TEXT$,_LOOP,1)
  6602.       If _CHAR$<>" "
  6603.          If Asc(_CHAR$)<58
  6604.             If Asc(_CHAR$)=46
  6605.                Restore "GFS"
  6606.             Else 
  6607.                If Asc(_CHAR$)=44
  6608.                   Restore "GCM"
  6609.                Else 
  6610.                   If Asc(_CHAR$)=33
  6611.                      Restore "GEX"
  6612.                   Else 
  6613.                      If Asc(_CHAR$)=45
  6614.                         Restore "GDA"
  6615.                      Else 
  6616.                         If Asc(_CHAR$)=40
  6617.                            Restore "GLB"
  6618.                         Else 
  6619.                            If Asc(_CHAR$)=41
  6620.                               Restore "GRB"
  6621.                            Else 
  6622.                               If Asc(_CHAR$)=43
  6623.                                  Restore "GPL"
  6624.                               Else 
  6625.                                  If Asc(_CHAR$)=39
  6626.                                     Restore "GAP"
  6627.                                  Else 
  6628.                                     If Asc(_CHAR$)=42
  6629.                                        Restore "GCR"
  6630.                                     Else 
  6631.                                        If Asc(_CHAR$)=38
  6632.                                           Restore "GAA"
  6633.                                        Else 
  6634.                                           If Asc(_CHAR$)=36
  6635.                                              Restore "GRT"
  6636.                                           Else 
  6637.                                              ' - Numbers
  6638.                                              Restore "N"+_CHAR$
  6639.                                           End If 
  6640.                                        End If 
  6641.                                     End If 
  6642.                                  End If 
  6643.                               End If 
  6644.                            End If 
  6645.                         End If 
  6646.                      End If 
  6647.                   End If 
  6648.                End If 
  6649.             End If 
  6650.          Else 
  6651.             If Asc(_CHAR$)=63
  6652.                Restore "GQM"
  6653.             Else 
  6654.                If Asc(_CHAR$)=62
  6655.                   Restore "GGT"
  6656.                Else 
  6657.                   If Asc(_CHAR$)=60
  6658.                      Restore "GST"
  6659.                   Else 
  6660.                      ' - Letters
  6661.                      Restore "LL"+_CHAR$
  6662.                   End If 
  6663.                End If 
  6664.             End If 
  6665.          End If 
  6666.          
  6667.          ' - Read font position         
  6668.          Read X99,Y99
  6669.          ' - Translate to coordinates 
  6670.          X99=X99*_FNTXSIZE : Y99=Y99*_FNTYSIZE
  6671.          ' - Paste the letter 
  6672.          Screen Copy 1,X99,Y99,X99+_FNTXSIZE,Y99+_FNTYSIZE To 0,XACCROSS,Y_COORD
  6673.       End If 
  6674.       Add XACCROSS,_FNTXSIZE
  6675.    Next _LOOP
  6676.    
  6677.    
  6678.    ' -  Font Data.  
  6679.    
  6680.    ' - Letters ( - and why not?)
  6681.    LLA:
  6682.    Data 0,0
  6683.    LLB:
  6684.    Data 1,0
  6685.    LLC:
  6686.    Data 2,0
  6687.    LLD:
  6688.    Data 3,0
  6689.    LLE:
  6690.    Data 4,0
  6691.    LLF:
  6692.    Data 5,0
  6693.    LLG:
  6694.    Data 6,0
  6695.    LLH:
  6696.    Data 7,0
  6697.    LLI:
  6698.    Data 8,0
  6699.    LLJ:
  6700.    Data 9,0
  6701.    LLK:
  6702.    Data 10,0
  6703.    LLL:
  6704.    Data 11,0
  6705.    LLM:
  6706.    Data 12,0
  6707.    LLN:
  6708.    Data 13,0
  6709.    LLO:
  6710.    Data 14,0
  6711.    LLP:
  6712.    Data 15,0
  6713.    LLQ:
  6714.    Data 16,0
  6715.    LLR:
  6716.    Data 17,0
  6717.    LLS:
  6718.    Data 18,0
  6719.    LLT:
  6720.    Data 19,0
  6721.    LLU:
  6722.    Data 20,0
  6723.    LLV:
  6724.    Data 21,0
  6725.    LLW:
  6726.    Data 22,0
  6727.    LLX:
  6728.    Data 23,0
  6729.    LLY:
  6730.    Data 24,0
  6731.    LLZ:
  6732.    Data 25,0
  6733.    
  6734.    ' - Punctuation (graphics) 
  6735.    ' - GEX - Exclamation mark   
  6736.    GEX:
  6737.    Data 28,0
  6738.    ' - GFS - Full stop
  6739.    GFS:
  6740.    Data 26,0
  6741.    ' - GCM - Comma (BABY!)
  6742.    GCM:
  6743.    Data 27,0
  6744.    ' - GLB - Left bracket (Parenthesis) 
  6745.    GLB:
  6746.    Data 30,0
  6747.    ' - GRB - Right bracket
  6748.    GRB:
  6749.    Data 31,0
  6750.    ' - GQM - Question Mark
  6751.    GQM:
  6752.    Data 29,0
  6753.    ' - GDA - Dash (Minus sign)
  6754.    GDA:
  6755.    Data 33,0
  6756.    ' - GPL - Plus sign
  6757.    GPL:
  6758.    Data 32,0
  6759.    ' - GAP - Apost. 
  6760.    GAP:
  6761.    Data 34,0
  6762.    ' - GCR - Copyright
  6763.    GCR:
  6764.    Data 35,0
  6765.    ' - GAA - Ampersand
  6766.    GAA:
  6767.    Data 36,0
  6768.    ' - GGT - Greater than 
  6769.    GGT:
  6770.    Data 37,0
  6771.    ' - GST - Smaller than 
  6772.    GST:
  6773.    Data 38,0
  6774.    ' - GRT - Return 
  6775.    GRT:
  6776.    Data 39,0
  6777.    '
  6778.    '
  6779.    ' - Numbers
  6780.    N1:
  6781.    Data 0,1
  6782.    N2:
  6783.    Data 1,1
  6784.    N3:
  6785.    Data 2,1
  6786.    N4:
  6787.    Data 3,1
  6788.    N5:
  6789.    Data 4,1
  6790.    N6:
  6791.    Data 5,1
  6792.    N7:
  6793.    Data 6,1
  6794.    N8:
  6795.    Data 7,1
  6796.    N9:
  6797.    Data 8,1
  6798.    N0:
  6799.    Data 9,1
  6800. End Proc
  6801. Procedure NEW_PATTERN[COUNTER]
  6802.    
  6803.    Screen 2
  6804.    
  6805.    ' - Define bob channels
  6806.    For CTR=1 To 2
  6807.       Channel CTR To Bob CTR
  6808.    Next CTR
  6809.    
  6810.    ' - Select next pattern    
  6811.    On COUNTER Gosub PATTERN1,PATTERN2,PATTERN3,PATTERN4,PATTERN5,PATTERN6,PATTERN7
  6812.    
  6813.    ' - Show the text
  6814.    Screen 0
  6815.    Fade 1,0,$FFF,$999,$444,,,,,,,CUL
  6816.    Screen 2
  6817.    
  6818.    ' - Main loop
  6819.    Repeat 
  6820.       Draw X Bob(1),Y Bob(1) To X Bob(2),Y Bob(2)
  6821.    Until Mouse Key=1
  6822.    
  6823.    Pop Proc
  6824.    
  6825.    
  6826.    PATTERN1:
  6827.    
  6828.    ' - Define movement strings
  6829.    M1$="(1,6,2)(1,5,2)(1,4,2)(1,3,2)(1,2,2)(1,1,2)(1,-1,2)(1,-2,2)(1,-3,2)(1,-4,2)(1,-5,2)(1,-6,2) "
  6830.    M1$=M1$+"(1,-6,2)(1,-5,2)(1,-4,2)(1,-3,2)(1,-2,2)(1,-1,2)(1,1,2)(1,2,2)(1,3,2)(1,4,2)(1,5,2)(1,6,2) L"
  6831.    
  6832.    M2$="(3,9,3)(3,8,3)(3,7,3)(3,6,3)(3,5,3)(3,4,3)(3,3,3)(3,2,3)(3,1,3)(3,-1,3)(3,-2,3)(3,-3,3)(3,-4,3)(3,-5,3)(3,-6,3)(3,-7,3)(3,-8,3)(3,-9,3) "
  6833.    M2$=M2$+"(3,-9,3)(3,-8,3)(3,-7,3)(3,-6,3)(3,-5,3)(3,-4,3)(3,-3,3)(3,-2,3)(3,-1,3)(3,1,3)(3,2,3)(3,3,3)(3,4,3)(3,5,3)(3,6,3)(3,7,3)(3,8,3)(3,9,3) L"
  6834.    
  6835.    ' - Position bobs
  6836.    Bob 1,160,125,0
  6837.    Bob 2,160,125,0
  6838.    
  6839.    ' - Begin movement 
  6840.    Move X 1,M1$
  6841.    Move On 
  6842.    Wait 12
  6843.    Move Y 1,M1$
  6844.    Move On 
  6845.    
  6846.    Move X 2,M2$
  6847.    Move On 
  6848.    Wait 70
  6849.    Move Y 2,M2$
  6850.    Move On 
  6851.    
  6852.    ' - Set colours
  6853.    CUL=$300
  6854.    Return 
  6855.    
  6856.    
  6857.    PATTERN2:
  6858.    
  6859.    ' - Define movement strings
  6860.    M1$="(1,8,3)(1,7,3)(1,6,3)(1,5,3)(1,4,3)(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3)(1,-4,3)(1,-5,3)(1,-6,3)(1,-7,3)(1,-8,3) "
  6861.    M1$=M1$+"(1,-8,3)(1,-7,3)(1,-6,3)(1,-5,3)(1,-4,3)(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3)(1,4,3)(1,5,3)(1,6,3)(1,7,3)(1,8,3) L"
  6862.    
  6863.    ' - Position bobs
  6864.    Bob 1,160,125,0
  6865.    Bob 2,160,125,0
  6866.    
  6867.    ' - Begin movement 
  6868.    Move X 1,M1$
  6869.    Move On 
  6870.    Wait 25
  6871.    Move Y 2,M1$
  6872.    Move On 
  6873.    
  6874.    ' - Set colours
  6875.    CUL=$30
  6876.    Return 
  6877.    
  6878.    
  6879.    PATTERN3:
  6880.    
  6881.    ' - Define movement strings
  6882.    M1$="(1,8,3)(1,7,3)(1,6,3)(1,5,3)(1,4,3)(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3)(1,-4,3)(1,-5,3)(1,-6,3)(1,-7,3)(1,-8,3) "
  6883.    M1$=M1$+"(1,-8,3)(1,-7,3)(1,-6,3)(1,-5,3)(1,-4,3)(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3)(1,4,3)(1,5,3)(1,6,3)(1,7,3)(1,8,3) L"
  6884.    
  6885.    M2$="(3,9,3)(3,8,3)(3,7,3)(3,6,3)(3,5,3)(3,4,3)(3,3,3)(3,2,3)(3,1,3)(3,-1,3)(3,-2,3)(3,-3,3)(3,-4,3)(3,-5,3)(3,-6,3)(3,-7,3)(3,-8,3)(3,-9,3) "
  6886.    M2$=M2$+"(3,-9,3)(3,-8,3)(3,-7,3)(3,-6,3)(3,-5,3)(3,-4,3)(3,-3,3)(3,-2,3)(3,-1,3)(3,1,3)(3,2,3)(3,3,3)(3,4,3)(3,5,3)(3,6,3)(3,7,3)(3,8,3)(3,9,3) L"
  6887.    
  6888.    ' - Position bobs
  6889.    Bob 1,160,125,0
  6890.    Bob 2,160,125,0
  6891.    
  6892.    ' - Begin movement 
  6893.    Move X 1,M1$
  6894.    Move Y 2,M2$
  6895.    Move On 
  6896.    Wait 30
  6897.    Move X 2,M1$
  6898.    Move On 
  6899.    
  6900.    ' - Set colours
  6901.    CUL=$3
  6902.    Return 
  6903.    
  6904.    
  6905.    PATTERN4:
  6906.    
  6907.    ' - Define movement strings
  6908.    M1$="(1,8,3)(1,7,3)(1,6,3)(1,5,3)(1,4,3)(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3)(1,-4,3)(1,-5,3)(1,-6,3)(1,-7,3)(1,-8,3) "
  6909.    M1$=M1$+"(1,-8,3)(1,-7,3)(1,-6,3)(1,-5,3)(1,-4,3)(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3)(1,4,3)(1,5,3)(1,6,3)(1,7,3)(1,8,3) L"
  6910.    
  6911.    M2$="(3,9,3)(3,8,3)(3,7,3)(3,6,3)(3,5,3)(3,4,3)(3,3,3)(3,2,3)(3,1,3)(3,-1,3)(3,-2,3)(3,-3,3)(3,-4,3)(3,-5,3)(3,-6,3)(3,-7,3)(3,-8,3)(3,-9,3) "
  6912.    M2$=M2$+"(3,-9,3)(3,-8,3)(3,-7,3)(3,-6,3)(3,-5,3)(3,-4,3)(3,-3,3)(3,-2,3)(3,-1,3)(3,1,3)(3,2,3)(3,3,3)(3,4,3)(3,5,3)(3,6,3)(3,7,3)(3,8,3)(3,9,3) L"
  6913.    
  6914.    ' - Position bobs
  6915.    Bob 1,60,125,0
  6916.    Bob 2,260,125,0
  6917.    
  6918.    ' - Begin movement 
  6919.    Move X 1,M2$
  6920.    Move Y 2,M1$
  6921.    Move On 
  6922.    Wait 10
  6923.    Move X 2,M2$
  6924.    Move Y 1,M1$
  6925.    Move On 
  6926.    
  6927.    ' - Set colours
  6928.    CUL=$303
  6929.    Return 
  6930.    
  6931.    
  6932.    PATTERN5:
  6933.    
  6934.    ' - Define movement strings
  6935.    M1$="(1,6,2)(1,5,2)(1,4,2)(1,3,2)(1,2,2)(1,1,2)(1,-1,2)(1,-2,2)(1,-3,2)(1,-4,2)(1,-5,2)(1,-6,2) "
  6936.    M1$=M1$+"(1,-6,2)(1,-5,2)(1,-4,2)(1,-3,2)(1,-2,2)(1,-1,2)(1,1,2)(1,2,2)(1,3,2)(1,4,2)(1,5,2)(1,6,2) L"
  6937.    
  6938.    M2$="(3,9,3)(3,8,3)(3,7,3)(3,6,3)(3,5,3)(3,4,3)(3,3,3)(3,2,3)(3,1,3)(3,-1,3)(3,-2,3)(3,-3,3)(3,-4,3)(3,-5,3)(3,-6,3)(3,-7,3)(3,-8,3)(3,-9,3) "
  6939.    M2$=M2$+"(3,-9,3)(3,-8,3)(3,-7,3)(3,-6,3)(3,-5,3)(3,-4,3)(3,-3,3)(3,-2,3)(3,-1,3)(3,1,3)(3,2,3)(3,3,3)(3,4,3)(3,5,3)(3,6,3)(3,7,3)(3,8,3)(3,9,3) L"
  6940.    
  6941.    ' - Position bobs
  6942.    Bob 1,60,125,0
  6943.    Bob 2,260,125,0
  6944.    
  6945.    ' - Begin movement 
  6946.    Move Y 2,M2$
  6947.    Move X 1,M2$
  6948.    Move On 
  6949.    Wait 30
  6950.    Move Y 1,M2$
  6951.    Move X 2,M1$
  6952.    Move On 
  6953.    
  6954.    ' - Set colours
  6955.    CUL=$33
  6956.    Return 
  6957.    
  6958.    
  6959.    PATTERN6:
  6960.    
  6961.    ' - Define movement strings
  6962.    M1$="(1,8,3)(1,7,3)(1,6,3)(1,5,3)(1,4,3)(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3)(1,-4,3)(1,-5,3)(1,-6,3)(1,-7,3)(1,-8,3) "
  6963.    M1$=M1$+"(1,-8,3)(1,-7,3)(1,-6,3)(1,-5,3)(1,-4,3)(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3)(1,4,3)(1,5,3)(1,6,3)(1,7,3)(1,8,3) L"
  6964.    
  6965.    AM1$="L : M 300,0,300 ; M -300,0,300 ; J L"
  6966.    
  6967.    ' - Position bobs
  6968.    Bob 1,10,125,0
  6969.    Bob 2,160,125,0
  6970.    
  6971.    ' - Begin movement 
  6972.    Move X 2,M1$
  6973.    Move On 
  6974.    Wait 25
  6975.    Move Y 2,M1$
  6976.    Move On 
  6977.    
  6978.    Amal 1,AM1$
  6979.    Amal On 1
  6980.    
  6981.    ' - Set colours
  6982.    CUL=$330
  6983.    Return 
  6984.    
  6985.    
  6986.    PATTERN7:
  6987.    
  6988.    ' - Define movement strings
  6989.    M1$="(1,8,3)(1,7,3)(1,6,3)(1,5,3)(1,4,3)(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3)(1,-4,3)(1,-5,3)(1,-6,3)(1,-7,3)(1,-8,3) "
  6990.    M1$=M1$+"(1,-8,3)(1,-7,3)(1,-6,3)(1,-5,3)(1,-4,3)(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3)(1,4,3)(1,5,3)(1,6,3)(1,7,3)(1,8,3) L"
  6991.    
  6992.    M2$="(1,3,3)(1,2,3)(1,1,3)(1,-1,3)(1,-2,3)(1,-3,3) "
  6993.    M2$=M2$+"(1,-3,3)(1,-2,3)(1,-1,3)(1,1,3)(1,2,3)(1,3,3) L"
  6994.    
  6995.    AM1$="L : M 300,200,250 ; M -300,-200,250 ; J L"
  6996.    AM2$="L : M -300,0,300 ; M 300,0,300 ; J L"
  6997.    
  6998.    ' - Position bobs
  6999.    Bob 1,10,25,0
  7000.    Bob 2,310,125,0
  7001.    
  7002.    ' - Begin movement 
  7003.    Move X 2,M1$
  7004.    Move X 1,M2$
  7005.    Move On 
  7006.    Wait 25
  7007.    Move Y 2,M1$
  7008.    Move Y 1,M2$
  7009.    Move On 
  7010.    
  7011.    Amal 1,AM1$
  7012.    Amal 2,AM2$
  7013.    Amal On 
  7014.    
  7015.    ' - Set colours
  7016.    CUL=$33
  7017.    Return 
  7018.    
  7019.    
  7020. End Proc
  7021. Procedure AEROSOL
  7022.    ' - Code - Matt & Rob
  7023.    ' - GFX - Matt 
  7024.    
  7025.    Screen Open 1,100,100,32,Lowres
  7026.    Curs Off : Cls 0 : Hide : Flash Off 
  7027.    
  7028.    Unpack 8 To 0
  7029.    Screen Hide 0
  7030.    Erase 8
  7031.    Double Buffer 
  7032.    Screen 1 : Get Palette 0
  7033.    
  7034.    Ink 15 : Plot 10,10
  7035.    Get Bob 1,10,10 To 11,11
  7036.    
  7037.    Screen 0 : Palette 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  7038.    Screen Show 0
  7039.    
  7040.    Fade 2 To 1 : Wait 15
  7041.    Screen Close 1
  7042.    
  7043.    Wait 30
  7044.    
  7045.    M1$="M 300,1,50"
  7046.    M2$="M 300,8,50"
  7047.    M3$="M 300,-8,50"
  7048.    M4$="M 300,-1,50"
  7049.    
  7050.    For X=16 To 28
  7051.       
  7052.       For C=0 To 15
  7053.          Bob C,63,97,1
  7054.          Channel C To Bob C
  7055.       Next C
  7056.       
  7057.       Amal 0,M1$
  7058.       Amal 1,M1$
  7059.       Amal 2,M1$
  7060.       Amal 3,M1$
  7061.       Amal 4,M2$
  7062.       Amal 5,M2$
  7063.       Amal 6,M2$
  7064.       Amal 7,M2$
  7065.       Amal 8,M3$
  7066.       Amal 9,M3$
  7067.       Amal 10,M3$
  7068.       Amal 11,M3$
  7069.       Amal 12,M4$
  7070.       Amal 13,M4$
  7071.       Amal 14,M4$
  7072.       Amal 15,M4$
  7073.       
  7074.       Amal On 7
  7075.       Amal On 11
  7076.       Amal On 3
  7077.       Amal On 15
  7078.       
  7079.       Wait Vbl 
  7080.       
  7081.       Amal On 10
  7082.       Amal On 6
  7083.       Amal On 2
  7084.       Amal On 14
  7085.       
  7086.       Wait Vbl 
  7087.       
  7088.       Amal On 9
  7089.       Amal On 5
  7090.       Amal On 1
  7091.       Amal On 13
  7092.       
  7093.       Wait Vbl 
  7094.       
  7095.       Amal On 8
  7096.       Amal On 4
  7097.       Amal On 0
  7098.       Amal On 12
  7099.       
  7100.       Wait X-12
  7101.       Colour X,$467
  7102.       Wait X/10
  7103.       Amal Off 
  7104.       
  7105.    Next X
  7106.    
  7107.    Bob Off 
  7108.    Wait 20
  7109.    
  7110.    W=$FFF
  7111.    Fade 1,,,,,,,,,,,,,,,,,W,W,W,W,W,W,W,W,W,W,W,W,W
  7112.    Wait 50
  7113.    Fade 5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,W
  7114.    Wait 15
  7115.    Fade 5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,W,W
  7116.    Wait 15
  7117.    Fade 5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,W,W,W
  7118.    
  7119.    Erase 1
  7120.    
  7121.    Wait 150
  7122.    
  7123.    ' - Fade off main picture
  7124.    Fade 3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,W,W,W
  7125.    Wait 150
  7126.    
  7127.    ' - End music
  7128.    Track Stop 
  7129.    Sam Play 2
  7130.    Wait 150
  7131.    
  7132.    ' - Play sample (But what does it say?)
  7133.    Sam Play 1
  7134.    Wait 100
  7135.    
  7136.    ' - Clean up 
  7137.    FINISH_DEMO
  7138.    Wait 1000
  7139.    Fade 1 : Wait 15
  7140.    Screen Close 0
  7141. End Proc
  7142.  
  7143. ' - The end of an era! (Good ridance, that's what I say matey!)
  7144. Procedure FINISH_DEMO
  7145.    ' - Erase any leftover banks 
  7146.    Erase 3
  7147.    Erase 5
  7148.    Erase 14
  7149.    Erase 13
  7150. End Proc