home *** CD-ROM | disk | FTP | other *** search
/ Esprit de Apple Corps / EDAC-2.iso / Graphics / Apps / Programs / SuperMagic / Real.Time / S320.ASM next >
Encoding:
Assembly Source File  |  1991-08-23  |  26.6 KB  |  1,435 lines

  1. *------------------------------------------------------
  2. *
  3. * *** Super Magic 320 Demo ***
  4. *
  5. * This program is written by Lim Thye Chean to
  6. * demonstrate the capability of Super Magic 320,
  7. * the library routines to release the full power of
  8. * 320 x 200 Super Hires.
  9. *
  10. *------------------------------------------------------
  11.  
  12.  
  13.          mcopy SM.macros
  14.  
  15.          copy  SM.header
  16.  
  17. *------------------------------------------------------
  18. *
  19. * Variables
  20. *
  21.  
  22. T1       gequ  $0
  23. T2       gequ  $2
  24.  
  25. GX       gequ  $10
  26. GY       gequ  $12
  27. SX       gequ  $14
  28. SY       gequ  $16
  29. OldGX    gequ  $18
  30. OldGY    gequ  $1A
  31. OldSX    gequ  $1C
  32. OldSY    gequ  $1E
  33. GXDir    gequ  $20
  34. GYDir    gequ  $22
  35. SXDir    gequ  $24
  36. SYDir    gequ  $26
  37. LoveX    gequ  $30
  38. LoveY    gequ  $32
  39. OldLoveX gequ  $34
  40. OldLoveY gequ  $36
  41. LoveYDir gequ  $38
  42. TextClr  gequ  $40
  43. TextCDir gequ  $42
  44. TextAddr gequ  $44
  45. MsgCount gequ  $46
  46. ShineCnt gequ  $48
  47.  
  48. *------------------------------------------------------
  49. *
  50. * Main Program
  51. *
  52.  
  53. Main     start
  54.          using MainData
  55.          using SMData
  56.  
  57. *
  58. * Initializing data
  59. *
  60.  
  61.          lda   #150                     Set up 'G', 'S' and heart shapes
  62.          sta   GX
  63.          lda   #102
  64.          sta   GY
  65.          lda   #160
  66.          sta   SX
  67.          lda   #103
  68.          sta   SY
  69.          stz   LoveX
  70.          lda   #100
  71.          sta   LoveY
  72.  
  73.          lda   #1
  74.          sta   GXDir
  75.          sta   GYDir
  76.          stz   SXDir
  77.          stz   SYDir
  78.  
  79.          lda   #20
  80.          sta   Length
  81.          lda   #21
  82.          sta   Height
  83.  
  84.          lda   #$FF0
  85.          sta   TextClr
  86.          stz   TextCDir
  87.  
  88.          jsr   Startup                  Start Super Hires
  89.  
  90. *
  91. * Setup stars
  92. *
  93.  
  94.          ldx   #78
  95.          ldy   #4
  96.          clc
  97.  
  98. SS1      tya
  99.          sta   StarX,x
  100.          adc   #8
  101.          sta   StarX-2,x
  102.          adc   #8
  103.          tay
  104.  
  105.          lda   #0
  106.          sta   StarClr,x
  107.          sta   StarClr-2,x
  108.  
  109.          lda   #3
  110.          sta   StarMove,x
  111.          lda   #5
  112.          sta   StarMove-2,x
  113.  
  114.          lda   #25
  115.          sta   StarTop,x
  116.          inc   a
  117.          sta   StarTop-2,x
  118.  
  119.          dex
  120.          dex
  121.          dex
  122.          dex
  123.          bpl   SS1
  124.  
  125. *
  126. * Introduction screen
  127. *
  128.  
  129.          stz   Palette                  Set up the palettes for
  130.          stz   RGB                        introduction screen
  131.          lda   #7
  132.          sta   ClrNum
  133.          jsr   SetClr
  134.  
  135.          lda   #1
  136.          sta   Palette
  137.          sta   ClrNum
  138.  
  139.          lda   #0
  140.          sta   RGB
  141.          jsr   SetClr
  142.          inc   ClrNum
  143.  
  144.          stz   RGB
  145.          jsr   SetClr
  146.          inc   ClrNum
  147.  
  148.          stz   RGB
  149.          jsr   SetClr
  150.          inc   ClrNum
  151.  
  152.          stz   RGB
  153.          jsr   SetClr
  154.          inc   ClrNum
  155.  
  156.          stz   RGB
  157.          jsr   SetClr
  158.          inc   ClrNum
  159.  
  160.          stz   RGB
  161.          jsr   SetClr
  162.  
  163.          lda   #65
  164.          sta   Y
  165.  
  166. IS1      jsr   SetSCB                   Draw background
  167.          inc   Y
  168.          lda   Y
  169.          cmp   #200
  170.          bcc   IS1
  171.  
  172.          stz   X1
  173.          lda   #319
  174.          sta   X2
  175.  
  176.          lda   #65
  177.          sta   Y
  178.          lda   #$1111
  179.          sta   Colour
  180.          lda   #1
  181.          sta   T1
  182.  
  183. IS2      ldx   #0
  184.  
  185. IS3      jsr   HorLine
  186.          inc   Y
  187.          inx
  188.          cpx   T1
  189.          bcc   IS3
  190.  
  191.          lda   Colour
  192.          clc
  193.          adc   #$1111
  194.          cmp   #$7777
  195.          bcc   IS4
  196.  
  197.          lda   #$1111
  198. IS4      sta   Colour
  199.  
  200.          inc   T1
  201.          lda   T1
  202.          cmp   #16
  203.          bcc   IS2
  204.  
  205.          lda   #Red
  206.          sta   Colour
  207.          lda   #20
  208.          sta   X
  209.          lda   #35
  210.          sta   Y
  211.          ph2   #Intro
  212.          jsr   Print2
  213.  
  214.          lda   #$FFFF
  215.          sta   Time
  216.  
  217.          stz   Palette
  218.          stz   RGB
  219.          lda   #7
  220.          sta   ClrNum
  221.          clc
  222.  
  223.          ldx   #$D
  224.  
  225. IS5      jsr   Delay
  226.          lda   RGB
  227.          adc   #$100
  228.          sta   RGB
  229.          jsr   SetClr
  230.  
  231.          dex
  232.          bne   IS5
  233.  
  234.          jsr   Delay
  235.  
  236. *
  237. * Display title
  238. *
  239.  
  240.          stz   T1
  241.          inc   Palette
  242.  
  243.          ldx   #0
  244.          ldy   #11
  245.  
  246. DT1      jsr   Delay
  247.  
  248.          cpx   #$80
  249.          bcs   DT2
  250.          lda   #1
  251.          sta   ClrNum
  252.          stx   RGB
  253.          jsr   SetClr
  254.  
  255. DT2      cpx   #$90
  256.          bcs   DT3
  257.          lda   #2
  258.          sta   ClrNum
  259.          stx   RGB
  260.          jsr   SetClr
  261.  
  262. DT3      cpx   #$A0
  263.          bcs   DT4
  264.          lda   #3
  265.          sta   ClrNum
  266.          stx   RGB
  267.          jsr   SetClr
  268.  
  269. DT4      cpx   #$B0
  270.          bcs   DT5
  271.          lda   #4
  272.          sta   ClrNum
  273.          stx   RGB
  274.          jsr   SetClr
  275.  
  276. DT5      cpx   #$A0
  277.          bcs   DT6
  278.          lda   #5
  279.          sta   ClrNum
  280.          stx   RGB
  281.          jsr   SetClr
  282.  
  283. DT6      cpx   #$90
  284.          bcs   DT7
  285.          lda   #6
  286.          sta   ClrNum
  287.          stx   RGB
  288.          jsr   SetClr
  289.  
  290. DT7      txa
  291.          clc
  292.          adc   #$10
  293.          tax
  294.  
  295.          dey
  296.          bne   DT1
  297.  
  298. *
  299. * Play Music
  300. *
  301.  
  302.          jsr   StartMsT                 Start music tool
  303.  
  304.          ph4   #Song                    Load song 'ToolBox'
  305.          jsr   LoadSong
  306.  
  307.          lda   #True                    Play song continuously
  308.          sta   Loop
  309.          jsr   PlaySong
  310.  
  311. *
  312. * Change SCB
  313. *
  314.  
  315.          lda   #1
  316.          sta   Palette
  317.          ldx   #100
  318.          lda   #36000
  319.          sta   Time
  320.          lda   #1
  321.          sta   ClrNum1
  322.          lda   #6
  323.          sta   ClrNum2
  324.  
  325. CS1      jsr   PCycRight
  326.          jsr   Delay
  327.          dex
  328.          bne   CS1
  329.  
  330.          stz   X1
  331.          lda   #319
  332.          sta   X2
  333.          lda   #65
  334.          sta   Y
  335.          stz   Colour
  336.          lda   #1000
  337.          sta   Time
  338.  
  339. CS2      jsr   HorLine
  340.          jsr   Delay
  341.          lda   Time
  342.  
  343.          inc   Y
  344.          lda   Y
  345.          cmp   #200
  346.          bcc   CS2
  347.  
  348.          lda   #$FFFF
  349.          sta   Time
  350.  
  351.          stz   Palette
  352.  
  353.          jsr   SetSCB0
  354.  
  355.          ldx   #5
  356.  
  357. CS3      jsr   Delay
  358.          dex
  359.          bne   CS3
  360.  
  361.          lda   #Green
  362.          sta   Colour
  363.          lda   #14
  364.          sta   X
  365.          lda   #120
  366.          sta   Y
  367.          ph2   #Credit1
  368.          jsr   Print2
  369.  
  370.          ldx   #5
  371.  
  372. CS4      jsr   Delay
  373.          dex
  374.          bne   CS4
  375.  
  376.          lda   #Blue
  377.          sta   Colour
  378.          lda   #18
  379.          sta   X
  380.          lda   #150
  381.          sta   Y
  382.          ph2   #Credit2
  383.          jsr   Print2
  384.  
  385.          ldx   #20
  386.  
  387. CS5      jsr   Delay
  388.          dex
  389.          bne   CS5
  390.  
  391.          stz   Colour
  392.          jsr   ClrScrn
  393.  
  394.          lda   #7                       Set the title message to a palette
  395.          sta   Y                          for fade in/out effect
  396.          lda   #1
  397.          sta   Palette
  398.  
  399.          ldx   #0
  400.  
  401. CS6      jsr   SetSCB
  402.          inc   Y
  403.          lda   Y
  404.          cmp   #17
  405.          bcc   CS6
  406.  
  407.          lda   #187                     Set the name to different palette
  408.          sta   Y                          to produce shading effect
  409.          lda   #2
  410.          sta   Palette
  411.  
  412.          lda   #$33F
  413.          sta   RGB
  414.          lda   #4
  415.          sta   ClrNum
  416.          jsr   SetClr
  417.          lda   #$F00
  418.          sta   RGB
  419.          lda   #15
  420.          sta   ClrNum
  421.          jsr   SetClr
  422.          jsr   SetSCB
  423.  
  424.          inc   Y
  425.          inc   Palette
  426.  
  427.          lda   #$66F
  428.          sta   RGB
  429.          lda   #4
  430.          sta   ClrNum
  431.          jsr   SetClr
  432.          lda   #$F20
  433.          sta   RGB
  434.          lda   #15
  435.          sta   ClrNum
  436.          jsr   SetClr
  437.          jsr   SetSCB
  438.  
  439.          inc   Y
  440.          inc   Palette
  441.  
  442.          lda   #$99F
  443.          sta   RGB
  444.          lda   #4
  445.          sta   ClrNum
  446.          jsr   SetClr
  447.          lda   #$F40
  448.          sta   RGB
  449.          lda   #15
  450.          sta   ClrNum
  451.          jsr   SetClr
  452.          jsr   SetSCB
  453.  
  454.          inc   Y
  455.          inc   Palette
  456.  
  457.          lda   #$CCF
  458.          sta   RGB
  459.          lda   #4
  460.          sta   ClrNum
  461.          jsr   SetClr
  462.          lda   #$F60
  463.          sta   RGB
  464.          lda   #15
  465.          sta   ClrNum
  466.          jsr   SetClr
  467.          jsr   SetSCB
  468.  
  469.          inc   Y
  470.          inc   Palette
  471.  
  472.          lda   #$99F
  473.          sta   RGB
  474.          lda   #4
  475.          sta   ClrNum
  476.          jsr   SetClr
  477.          lda   #$F80
  478.          sta   RGB
  479.          lda   #15
  480.          sta   ClrNum
  481.          jsr   SetClr
  482.          jsr   SetSCB
  483.  
  484.          inc   Y
  485.          inc   Palette
  486.  
  487.          lda   #$66F
  488.          sta   RGB
  489.          lda   #4
  490.          sta   ClrNum
  491.          jsr   SetClr
  492.          lda   #$FA0
  493.          sta   RGB
  494.          lda   #15
  495.          sta   ClrNum
  496.          jsr   SetClr
  497.          jsr   SetSCB
  498.  
  499.          inc   Y
  500.          inc   Palette
  501.  
  502.          lda   #$33F
  503.          sta   RGB
  504.          lda   #4
  505.          sta   ClrNum
  506.          jsr   SetClr
  507.          lda   #$FC0
  508.          sta   RGB
  509.          lda   #15
  510.          sta   ClrNum
  511.          jsr   SetClr
  512.          jsr   SetSCB
  513.  
  514. *
  515. * Draw background
  516. *
  517.  
  518.          stz   Palette                  Change the colour in standard palette
  519.          lda   #$F44                      for the love to shine
  520.          sta   RGB
  521.          lda   #8
  522.          sta   ClrNum
  523.          jsr   SetClr
  524.          lda   #$F88
  525.          sta   RGB
  526.          inc   ClrNum
  527.          jsr   SetClr
  528.          lda   #$F44
  529.          sta   RGB
  530.          inc   ClrNum
  531.          jsr   SetClr
  532.  
  533.          lda   #$80                     Change the colour in standard palette
  534.          sta   RGB                        for the colour of the stars
  535.          lda   #1
  536.          sta   ClrNum
  537.          jsr   SetClr
  538.  
  539.          lda   #$800
  540.          sta   RGB
  541.          lda   #$D
  542.          sta   ClrNum
  543.          jsr   SetClr
  544.  
  545.          lda   #10
  546.          sta   ShineCnt
  547.  
  548.          lda   #7
  549.          sta   ClrNum1
  550.          lda   #10
  551.          sta   ClrNum2
  552.  
  553.          lda   #Blue
  554.          sta   Colour
  555.          stz   X1
  556.          lda   #319
  557.          sta   X2
  558.          lda   #0
  559.          sta   Y
  560.          jsr   HorLine
  561.  
  562.          lda   #24
  563.          sta   Y
  564.          jsr   HorLine
  565.  
  566.          lda   #LBlue
  567.          sta   Colour
  568.          lda   #1
  569.          sta   Y
  570.          jsr   HorLine
  571.  
  572.          lda   #23
  573.          sta   Y
  574.          jsr   HorLine
  575.  
  576.          lda   #White
  577.          sta   Colour
  578.          lda   #2
  579.          sta   Y
  580.          jsr   HorLine
  581.  
  582.          lda   #22
  583.          sta   Y
  584.          jsr   HorLine
  585.  
  586.          lda   #182
  587.          sta   Y1
  588.          lda   #199
  589.          sta   Y2
  590.          lda   #Blue
  591.          sta   Colour
  592.          jsr   ClrArea
  593.  
  594.          lda   #22
  595.          sta   Y1
  596.          lda   #181
  597.          sta   Y2
  598.  
  599.          lda   #White
  600.          sta   Colour
  601.          lda   #19
  602.          sta   X
  603.          lda   #187
  604.          sta   Y
  605.          ph2   #Name
  606.          jsr   Print
  607.  
  608.          stz   Time
  609.  
  610.          lda   #310
  611.          sta   T1
  612.  
  613. DB1      jsr   ShadowOff                Rotate stars
  614.          jsr   RotStar
  615.  
  616.          lda   Time
  617.          clc
  618.          adc   #10
  619.          sta   Time
  620.          jsr   Delay
  621.  
  622.          jsr   ShadowOn                 Display stars
  623.          jsr   DsplStar
  624.  
  625.          lda   KeyBrd
  626.          and   #$FF
  627.          cmp   #155
  628.          bne   DB2
  629.          brl   Done
  630.  
  631. DB2      jsr   MoveStar
  632.          dec   T1
  633.          bne   DB1
  634.  
  635.          jsr   MoveGS
  636.  
  637. *
  638. * Print message
  639. *
  640.  
  641.          lda   #1
  642.          sta   Palette
  643.  
  644.          stz   MsgCount
  645.  
  646.          lda   #0
  647.          sta   KeyStrb
  648.  
  649. PrintMsg lda   #7
  650.          sta   Y1
  651.          lda   #16
  652.          sta   Y2
  653.          stz   Colour
  654.          jsr   ClrArea
  655.  
  656.          lda   MsgCount
  657.          bne   P1
  658.          inc   MsgCount
  659.  
  660.          ldx   #50
  661.  
  662. Wait     jsr   Animate
  663.          dex
  664.          bne   Wait
  665.  
  666.          lda   #GYellow
  667.          sta   GColour
  668.          jsr   GrdFill
  669.  
  670.          ldy   #12
  671.          ph2   #Msg1
  672.  
  673.          brl   Cycle
  674.  
  675. P1       cmp   #1
  676.          bne   P2
  677.          inc   MsgCount
  678.  
  679.          lda   #GGreen
  680.          sta   GColour
  681.          jsr   GrdFill
  682.  
  683.          ldy   #20
  684.          ph2   #Msg2
  685.          brl   Cycle
  686.  
  687. P2       cmp   #2
  688.          bne   P3
  689.          inc   MsgCount
  690.  
  691.          lda   #GRed
  692.          sta   GColour
  693.          jsr   GrdFill
  694.  
  695.          ldy   #25
  696.          ph2   #Msg3
  697.          brl   Cycle
  698.  
  699. P3       cmp   #3
  700.          bne   P4
  701.          inc   MsgCount
  702.  
  703.          lda   #GGreen
  704.          sta   GColour
  705.          jsr   GrdFill
  706.  
  707.          ldy   #12
  708.          ph2   #Msg4
  709.  
  710.          brl   Cycle
  711.  
  712. P4       cmp   #4
  713.          bne   P5
  714.          inc   MsgCount
  715.  
  716.          lda   #GRed
  717.          sta   GColour
  718.          jsr   GrdFill
  719.  
  720.          ldy   #24
  721.          ph2   #Msg5
  722.  
  723.          brl   Cycle
  724.  
  725. P5       cmp   #5
  726.          bne   P6
  727.          inc   MsgCount
  728.  
  729.          ldy   #13
  730.          ph2   #Msg6
  731.          brl   Scroll
  732.  
  733. P6       cmp   #6
  734.          bne   P7
  735.          inc   MsgCount
  736.  
  737.          ldy   #6
  738.          ph2   #Msg7
  739.          brl   Scroll
  740.  
  741. P7       cmp   #7
  742.          bne   P8
  743.          inc   MsgCount
  744.  
  745.          ldy   #22
  746.          ph2   #Msg8
  747.          brl   Scroll
  748.  
  749. P8       cmp   #8
  750.          bne   P9
  751.          inc   MsgCount
  752.  
  753.          ldy   #7
  754.          ph2   #Msg9
  755.          brl   Scroll
  756.  
  757. P9       stz   MsgCount
  758.  
  759.          ldy   #9
  760.          ph2   #Msg10
  761.          brl   Scroll
  762.  
  763. *
  764. * Colour cycle message
  765. *
  766.  
  767. Cycle    ldx   #14
  768.  
  769. Fade     jsr   CycRight
  770.          jsr   Animate
  771.          dex
  772.          bne   Fade
  773.  
  774.          lda   #White
  775.          sta   Colour
  776.          sty   X
  777.          lda   #9
  778.          sta   Y
  779.          jsr   Print2
  780.  
  781.          ldx   #14
  782.  
  783. C1       jsr   CycLeft
  784.          jsr   Animate
  785.          dex
  786.          bne   C1
  787.  
  788.          ldx   #85
  789.  
  790. Wait1    jsr   Animate
  791.          dex
  792.          bne   Wait1
  793.  
  794.          ldx   #14
  795.  
  796. C2       jsr   CycRight
  797.          jsr   Animate
  798.          dex
  799.          bne   C2
  800.  
  801.          brl   PrintMsg
  802.  
  803. *
  804. * Scroll text
  805. *
  806.  
  807. Scroll   pl2   TextAddr
  808.  
  809.          lda   #GCyan
  810.          sta   GColour
  811.          jsr   GrdFill
  812.  
  813.          sty   T1
  814.  
  815.          ldx   #78
  816.  
  817. S1       jsr   Animate
  818.  
  819.          stx   X
  820.          lda   #9
  821.          sta   Y
  822.          lda   #White
  823.          sta   Colour
  824.          ph2   TextAddr
  825.          jsr   Print2
  826.  
  827.          ldy   #4
  828.  
  829. S2       jsr   Animate
  830.          dey
  831.          bne   S2
  832.  
  833.          dex
  834.          cpx   T1
  835.          bcs   S1
  836.  
  837.          ldx   #85
  838.  
  839. S3       jsr   Animate
  840.          dex
  841.          bne   S3
  842.  
  843.          ldx   #14
  844.  
  845. S4       jsr   CycRight
  846.          jsr   Animate
  847.          dex
  848.          bne   S4
  849.  
  850.          brl   PrintMsg
  851.  
  852.          end
  853.  
  854. *------------------------------------------------------
  855. *
  856. * Animate stars and GS shapes
  857. *
  858.  
  859. Animate  start
  860.          using SMData
  861.  
  862.          phx
  863.          phy
  864.  
  865.          jsr   ShadowOff                Plot/Erase the sprites
  866.          jsr   EraseGS
  867.          jsr   RotStar
  868.          jsr   PlotGS
  869.  
  870.          jsr   ShadowOn                 Display the sprites
  871.          jsr   DsplGS
  872.          jsr   DsplStar
  873.  
  874.          dec   ShineCnt
  875.          bne   A1
  876.          lda   #10
  877.          sta   ShineCnt
  878.  
  879.          stz   Palette                  Glow the heart
  880.          jsr   PCycLeft
  881.          inc   Palette
  882.  
  883. A1       jsr   MoveGS                   Move the sprites
  884.          jsr   MoveStar
  885.  
  886.          lda   KeyBrd
  887.          and   #$FF
  888.          cmp   #155
  889.          bne   A2
  890.          brl   Done
  891.  
  892. A2       ply
  893.          plx
  894.  
  895.          rts
  896.  
  897.          end
  898.  
  899. *------------------------------------------------------
  900. *
  901. * Quit program
  902. *
  903.  
  904. Done     start
  905.          using SMData
  906.  
  907.          lda   #0
  908.          sta   KeyStrb
  909.  
  910.          jsr   StopSong                 Stop the song
  911.          jsr   ShutDMsT                 Shut down music tool
  912.  
  913.          jsr   Text
  914.          jsr   Shutdown                 Shut down
  915.  
  916.          lda   #0                       Indicates no error
  917.  
  918.          Quit  QuitData
  919.  
  920.          end
  921.  
  922. *------------------------------------------------------
  923. *
  924. * Rotate stars
  925. *
  926.  
  927. RotStar  start
  928.          using MainData
  929.  
  930.          ldx   #78
  931.  
  932. RS1      lda   StarX,x                  Erase old stars
  933.          sta   X
  934.          lda   OldStarY,x
  935.          sta   Y
  936.          jsr   Erase2
  937.  
  938.          lda   StarY,x                  Plot new stars
  939.          sta   Y
  940.          lda   StarClr,x
  941.          sta   Colour
  942.          jsr   Plot
  943.  
  944.          dex
  945.          dex
  946.          bpl   RS1
  947.  
  948.          rts
  949.  
  950.          end
  951.  
  952. *
  953. * Display stars
  954. *
  955.  
  956. DsplStar start
  957.          using MainData
  958.  
  959.          ldx   #78
  960.  
  961. DS1      lda   StarX,x                  Display old stars
  962.          sta   X
  963.          lda   OldStarY,x
  964.          sta   Y
  965.          jsr   Display
  966.  
  967.          lda   StarY,x                  Display new stars
  968.          sta   Y
  969.          jsr   Display
  970.  
  971.          dex
  972.          dex
  973.          bpl   DS1
  974.  
  975.          rts
  976.  
  977.          end
  978.  
  979. *
  980. * Move stars
  981. *
  982.  
  983. MoveStar start
  984.          using MainData
  985.          using SMData
  986.  
  987.          ldx   #78
  988.  
  989. MS1      lda   StarY,x
  990.          sta   OldStarY,x
  991.          clc
  992.          adc   StarMove,x
  993.          cmp   #181
  994.          bcc   MS4
  995.  
  996.          ldy   #3
  997.          stz   T2
  998.          jsr   Random                   Reposition the star, and randomize
  999.          lda   RndFlag                    the star movement
  1000.          bne   MS2
  1001.          iny
  1002.          iny
  1003.  
  1004.          lda   #4
  1005.          sta   T2
  1006.  
  1007. MS2      tya
  1008.          sta   StarMove,x
  1009.  
  1010.          ldy   T2
  1011.          lda   ClrTable,y
  1012.          tay
  1013.          jsr   Random
  1014.          lda   RndFlag
  1015.          bne   MS3
  1016.  
  1017.          ldy   T2
  1018.          lda   ClrTable+2,y
  1019.          tay
  1020.  
  1021. MS3      tya
  1022.          sta   StarClr,x
  1023.  
  1024.          lda   StarTop,x
  1025.  
  1026. MS4      sta   StarY,x
  1027.          dex
  1028.          dex
  1029.          bpl   MS1
  1030.  
  1031.          rts
  1032.  
  1033.          end
  1034.  
  1035. *------------------------------------------------------
  1036. *
  1037. * Animate GS shape
  1038. *
  1039.  
  1040. *
  1041. * Plot GS
  1042. *
  1043.  
  1044. PlotGS   start
  1045.          using MainData
  1046.  
  1047. PlotS    lda   SX                       Plot a 'S'
  1048.          sta   X
  1049.          lda   SY
  1050.          sta   Y
  1051.          ph2   #S
  1052.          ph2   #SMask
  1053.          jsr   PlotShp2
  1054.  
  1055. PlotG    lda   GX                       Plot a 'G'
  1056.          sta   X
  1057.          lda   GY
  1058.          sta   Y
  1059.          ph2   #G
  1060.          ph2   #GMask
  1061.          ph2   #GBackGrd
  1062.          jsr   PlotShp
  1063.  
  1064. PlotLove lda   LoveX
  1065.          sta   X
  1066.          lda   LoveY
  1067.          sta   Y
  1068.          ph2   #Love
  1069.          ph2   #LoveMask
  1070.          ph2   #LoveBGrd
  1071.          jsr   PlotShp
  1072.  
  1073.          rts
  1074.  
  1075.          end
  1076.  
  1077. *
  1078. * Erase GS
  1079. *
  1080.  
  1081. EraseGS  start
  1082.          using MainData
  1083.  
  1084.          lda   OldLoveX                 Erase Love
  1085.          sta   X
  1086.          lda   OldLoveY
  1087.          sta   Y
  1088.          ph2   #LoveBGrd
  1089.          jsr   ErsShp
  1090.  
  1091.          lda   OldGX                    Erase 'G'
  1092.          sta   X
  1093.          lda   OldGY
  1094.          sta   Y
  1095.          ph2   #GBackGrd
  1096.          jsr   ErsShp
  1097.  
  1098.          lda   OldSX                    Erase 'S'
  1099.          sta   X
  1100.          lda   OldSY
  1101.          sta   Y
  1102.          jsr   ErsShp2
  1103.  
  1104.          rts
  1105.  
  1106.          end
  1107.  
  1108. *
  1109. * Display GS
  1110. *
  1111.  
  1112. DsplGS   start
  1113.          using MainData
  1114.  
  1115.          lda   GX                       Display 'G'
  1116.          sta   X
  1117.          lda   GY
  1118.          sta   Y
  1119.          jsr   DsplShp2
  1120.  
  1121.          lda   SX                       Display 'S'
  1122.          sta   X
  1123.          lda   SY
  1124.          sta   Y
  1125.          jsr   DsplShp2
  1126.  
  1127.          lda   LoveX                    Display heart
  1128.          sta   X
  1129.          lda   LoveY
  1130.          sta   Y
  1131.          jsr   DsplShp2
  1132.  
  1133.          rts
  1134.  
  1135.          end
  1136.  
  1137. *
  1138. * Move GS shape
  1139. *
  1140.  
  1141. MoveGS   start
  1142.          using MainData
  1143.  
  1144. MoveG    lda   GX                       Move 'G'
  1145.          sta   OldGX
  1146.          lda   GY
  1147.          sta   OldGY
  1148.  
  1149.          lda   GXDir
  1150.          beq   MG1
  1151.  
  1152.          dec   GX
  1153.          dec   GX
  1154.          lda   GX
  1155.          cmp   #4
  1156.          bcs   MG2
  1157.          stz   GXDir
  1158.          bra   MG2
  1159.  
  1160. MG1      inc   GX
  1161.          inc   GX
  1162.          lda   GX
  1163.          cmp   #300
  1164.          bcc   MG2
  1165.          inc   GXDir
  1166.  
  1167. MG2      lda   GYDir
  1168.          beq   MG3
  1169.  
  1170.          dec   GY
  1171.          dec   GY
  1172.          lda   GY
  1173.          cmp   #27
  1174.          bcs   MoveS
  1175.          stz   GYDir
  1176.          bra   MoveS
  1177.  
  1178. MG3      inc   GY
  1179.          inc   GY
  1180.          lda   GY
  1181.          cmp   #160
  1182.          bcc   MoveS
  1183.          inc   GYDir
  1184.  
  1185. MoveS    lda   SX                       Move 'S'
  1186.          sta   OldSX
  1187.          lda   SY
  1188.          sta   OldSY
  1189.  
  1190.          lda   SXDir
  1191.          beq   MS1
  1192.  
  1193.          dec   SX
  1194.          dec   SX
  1195.          lda   SX
  1196.          cmp   #4
  1197.          bcs   MS2
  1198.          stz   SXDir
  1199.          bra   MS2
  1200.  
  1201. MS1      inc   SX
  1202.          inc   SX
  1203.          lda   SX
  1204.          cmp   #300
  1205.          bcc   MS2
  1206.          inc   SXDir
  1207.  
  1208. MS2      lda   SYDir
  1209.          beq   MS3
  1210.  
  1211.          dec   SY
  1212.          lda   SY
  1213.          cmp   #26
  1214.          bcs   MoveLove
  1215.          stz   SYDir
  1216.          bra   MoveLove
  1217.  
  1218. MS3      inc   SY
  1219.          lda   SY
  1220.          cmp   #160
  1221.          bcc   MoveLove
  1222.          inc   SYDir
  1223.  
  1224. MoveLove lda   LoveX                    Move heart
  1225.          sta   OldLoveX
  1226.          lda   LoveY
  1227.          sta   OldLoveY
  1228.  
  1229.          inc   LoveX
  1230.          inc   LoveX
  1231.          lda   LoveX
  1232.          cmp   #320
  1233.          bcc   ML1
  1234.          stz   LoveX
  1235.  
  1236. ML1      lda   LoveYDir
  1237.          beq   ML2
  1238.  
  1239.          dec   LoveY
  1240.          lda   LoveY
  1241.          cmp   #22
  1242.          bcs   Done
  1243.          stz   LoveYDir
  1244.          bra   Done
  1245.  
  1246. ML2      inc   LoveY
  1247.          lda   LoveY
  1248.          cmp   #162
  1249.          bcc   Done
  1250.          inc   LoveYDir
  1251.  
  1252. Done     rts
  1253.  
  1254.          end
  1255.  
  1256.          copy  SM.Lib
  1257.  
  1258. *------------------------------------------------------
  1259. *
  1260. * Main program data
  1261. *
  1262.  
  1263. MainData data
  1264.  
  1265. Song     dc    h'0D',c'Music/Toolbox'
  1266.  
  1267. Intro    dc    c'Super Magic 320 Demo',h'00'
  1268. Credit1  dc    c'Graphics by Lim Thye Chean',h'00'
  1269. Credit2  dc    c'Music (ToolBox) by FTA',h'00'
  1270. Msg1     dc    c'Lim Thye Chean, the GS Lover',h'00'
  1271. Msg2     dc    c'proudly presents...',h'00'
  1272. Msg3     dc    c'SUPER MAGIC 320',h'00'
  1273. Msg4     dc    c'Release the power of your GS',h'00'
  1274. Msg5     dc    c'Apple II Forever',h'00'
  1275. Msg6     dc    c'Introducing Super Magic 320 ',h'00'
  1276. Msg7     dc    c'The graphics and animation library ',h'00'
  1277. Msg8     dc    c'for the rest of us ',h'00'
  1278. Msg9     dc    c'If you like this cool little demo ',h'00'
  1279. Msg10    dc    c'You can write one yourself now! ',h'00'
  1280.  
  1281. Name     dc    c'LIM THYE CHEAN (1991)',h'00'
  1282.  
  1283. G        dc    h'000FFFFFFFFFFFFFFE00'
  1284.          dc    h'00444444444444444FE0'
  1285.          dc    h'044444444444444444E0'
  1286.          dc    h'044444444444444444F0'
  1287.          dc    h'044444444444444444F0'
  1288.          dc    h'0BBBBF00000000BBBBF0'
  1289.          dc    h'0BBBBF00000000000000'
  1290.          dc    h'0BBBBF00000000000000'
  1291.          dc    h'0BBBBF00000000000000'
  1292.          dc    h'0EEEEF0000FFFFFFFFF0'
  1293.          dc    h'0EEEEF0000EEEEEEEEF0'
  1294.          dc    h'0EEEEF0000EEEEEEEEF0'
  1295.          dc    h'0EEEEE0000EEEEEEEEF0'
  1296.          dc    h'02222E000022222222F0'
  1297.          dc    h'02222E000000002222F0'
  1298.          dc    h'02222E000000002222F0'
  1299.          dc    h'022222EEEEEEE22222E0'
  1300.          dc    h'066666666666666666E0'
  1301.          dc    h'06666666666666666610'
  1302.          dc    h'00666666666666666600'
  1303.          dc    h'00066666666666666000'
  1304.  
  1305. GMask    dc    h'FFF000000000000000FF'
  1306.          dc    h'FF00000000000000000F'
  1307.          dc    h'F000000000000000000F'
  1308.          dc    h'F000000000000000000F'
  1309.          dc    h'F000000000000000000F'
  1310.          dc    h'F00000FFFFFFFF00000F'
  1311.          dc    h'F00000FFFFFFFFFFFFFF'
  1312.          dc    h'F00000FFFFFFFFFFFFFF'
  1313.          dc    h'F00000FFFFFFFFFFFFFF'
  1314.          dc    h'F00000FFFF000000000F'
  1315.          dc    h'F00000FFFF000000000F'
  1316.          dc    h'F00000FFFF000000000F'
  1317.          dc    h'F00000FFFF000000000F'
  1318.          dc    h'F00000FFFF000000000F'
  1319.          dc    h'F00000FFFFFFFF00000F'
  1320.          dc    h'F00000FFFFFFFF00000F'
  1321.          dc    h'F000000000000000000F'
  1322.          dc    h'F000000000000000000F'
  1323.          dc    h'F000000000000000000F'
  1324.          dc    h'FF0000000000000000FF'
  1325.          dc    h'FFF00000000000000FFF'
  1326.  
  1327. GBackGrd ds    210
  1328.  
  1329. S        dc    h'000FFFFFFFFFFFFFFE00'
  1330.          dc    h'00444444444444444FE0'
  1331.          dc    h'044444444444444444E0'
  1332.          dc    h'044444444444444444F0'
  1333.          dc    h'044444444444444444F0'
  1334.          dc    h'0BBBBF00000000BBBBF0'
  1335.          dc    h'0BBBBE00000000000000'
  1336.          dc    h'0BBBBB10000000000000'
  1337.          dc    h'0BBBBBBBBBBBBBBBE100'
  1338.          dc    h'0EEEEEEEEEEEEEEEEF10'
  1339.          dc    h'0EEEEEEEEEEEEEEEEEF0'
  1340.          dc    h'01EEEEEEEEEEEEEEEEE0'
  1341.          dc    h'001EEEEEEEEEEEEEEEF0'
  1342.          dc    h'000000000000002222F0'
  1343.          dc    h'0EEEEE000000002222F0'
  1344.          dc    h'02222E000000002222F0'
  1345.          dc    h'022222EEEEEEEE2222F0'
  1346.          dc    h'066666666666666666F0'
  1347.          dc    h'066666666666666666E0'
  1348.          dc    h'00666666666666666600'
  1349.          dc    h'00066666666666666000'
  1350.  
  1351. SMask    dc    h'FFF000000000000000FF'
  1352.          dc    h'FF00000000000000000F'
  1353.          dc    h'F000000000000000000F'
  1354.          dc    h'F000000000000000000F'
  1355.          dc    h'F000000000000000000F'
  1356.          dc    h'F00000FFFFFFFF00000F'
  1357.          dc    h'F00000FFFFFFFFFFFFFF'
  1358.          dc    h'F000000FFFFFFFFFFFFF'
  1359.          dc    h'F00000000000000000FF'
  1360.          dc    h'F000000000000000000F'
  1361.          dc    h'F000000000000000000F'
  1362.          dc    h'F000000000000000000F'
  1363.          dc    h'FF00000000000000000F'
  1364.          dc    h'FFFFFFFFFFFFFF00000F'
  1365.          dc    h'F00000FFFFFFFF00000F'
  1366.          dc    h'F00000FFFFFFFF00000F'
  1367.          dc    h'F000000000000000000F'
  1368.          dc    h'F000000000000000000F'
  1369.          dc    h'F000000000000000000F'
  1370.          dc    h'FF0000000000000000FF'
  1371.          dc    h'FFF00000000000000FFF'
  1372.  
  1373. Love     dc    h'00000000000000000000'
  1374.          dc    h'00000000000000000000'
  1375.          dc    h'00000000000000000000'
  1376.          dc    h'00077770000007777000'
  1377.          dc    h'07FF777700007FF77770'
  1378.          dc    h'7F7777777777F7777777'
  1379.          dc    h'77777777777777777777'
  1380.          dc    h'77777777777777777777'
  1381.          dc    h'77777777777777777777'
  1382.          dc    h'77777777777777777777'
  1383.          dc    h'77777777777777777777'
  1384.          dc    h'07777777777777777770'
  1385.          dc    h'07777777777777777770'
  1386.          dc    h'00777777777777777700'
  1387.          dc    h'00077777777777777000'
  1388.          dc    h'00007777777777770000'
  1389.          dc    h'00000777777777700000'
  1390.          dc    h'00000007777770000000'
  1391.          dc    h'00000000777700000000'
  1392.          dc    h'00000000000000000000'
  1393.          dc    h'00000000000000000000'
  1394.  
  1395. LoveMask dc    h'FFFFFFFFFFFFFFFFFFFF'
  1396.          dc    h'FFFFFFFFFFFFFFFFFFFF'
  1397.          dc    h'FFFFFFFFFFFFFFFFFFFF'
  1398.          dc    h'FFF0000FFFFFF0000FFF'
  1399.          dc    h'F0000000FFFF0000000F'
  1400.          dc    h'00000000000000000000'
  1401.          dc    h'00000000000000000000'
  1402.          dc    h'00000000000000000000'
  1403.          dc    h'00000000000000000000'
  1404.          dc    h'00000000000000000000'
  1405.          dc    h'00000000000000000000'
  1406.          dc    h'F000000000000000000F'
  1407.          dc    h'F000000000000000000F'
  1408.          dc    h'FF0000000000000000FF'
  1409.          dc    h'FFF00000000000000FFF'
  1410.          dc    h'FFFF000000000000FFFF'
  1411.          dc    h'FFFFF0000000000FFFFF'
  1412.          dc    h'FFFFFFF000000FFFFFFF'
  1413.          dc    h'FFFFFFFF0000FFFFFFFF'
  1414.          dc    h'FFFFFFFFFFFFFFFFFFFF'
  1415.          dc    h'FFFFFFFFFFFFFFFFFFFF'
  1416.  
  1417. LoveBGrd ds    210
  1418.  
  1419. StarX    ds    80
  1420. StarY    dc    h'61002E0059005100980021003B0058003F007B00'
  1421.          dc    h'320043008F007100620036008D002C0042005A00'
  1422.          dc    h'28002300510068009900580084003A0073004100'
  1423.          dc    h'9900390034005600780090001F00230045006700'
  1424. OldStarY dc    h'61002E0059005100980021003B0058003F007B00'
  1425.          dc    h'320043008F007100620036008D002C0042005A00'
  1426.          dc    h'28002300510068009900580084003A0073004100'
  1427.          dc    h'9900390034005600780090001F00230045006700'
  1428. StarTop  ds    80
  1429. StarMove ds    80
  1430. StarClr  ds    80
  1431.  
  1432. ClrTable dc    h'1111DDDDFFFF4444'
  1433.  
  1434.          end
  1435.