home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 1 / LSD Compendium Deluxe 1.iso / a / programming / assembly / dcintro.lha / SA_Intro / DC_intro032+.s
Encoding:
Text File  |  1992-09-02  |  25.9 KB  |  1,278 lines

  1.  
  2.     ******************************************
  3.     *                     *
  4.     *        © Dual Crew 1993          *
  5.     *                     *
  6.     ******************************************
  7.  
  8. *************>  Cøde :    Nzø
  9. *************>    GFX  :    Red Devil
  10. *************>    Music:    MutLeY
  11.  
  12.         Section    'Get ¥Er faRKin MuSiC iN nØw!',Code_C
  13.  
  14.         opt    c-,o+,w+
  15.  
  16. lines1        equ    180
  17. lines2        equ    46
  18. lines3        equ    17
  19. lines4        equ    31
  20.  
  21. charhi        equ    16
  22.  
  23. music        equ    1
  24.         
  25.         incdir "dh1:SA_intro/"
  26.         include    data/Blitter_E.s
  27.  
  28.         jmp     program
  29.  
  30.         dc.b    10,10,10,10,'Thats it.. get the fuckin file editor '
  31.         dc.b    'out.. by a book and learn to code shitty intros!! '
  32.         dc.b    10,10,10,10,10
  33.         cnop    0,4
  34.  
  35. program        lea    $dff000,a5
  36.         
  37.         bsr    killsysx
  38.  
  39.         bsr    init_copper1
  40.  
  41.         IFNE    music
  42.         moveq    #0,d0            ;0-8
  43.         bsr    mt_init
  44.         ENDC
  45.  
  46.         lea    newlevel3(pc),a1
  47.         lea    $6c.w,a2
  48.         move.l    a1,(a2)
  49.         
  50.         move    #$c020,$9a(a5)
  51.         
  52.         bsr    routines
  53.         bsr    intro
  54.  
  55.         lea    copperlist(pc),a0
  56.         move.l    a0,$80(a5)
  57.  
  58.         move    #1,allow_wr
  59.         move    #1,allow_sc
  60.  
  61. beam0        move.l    4(a5),d7
  62.         and.l    #$1ff00,d7
  63.         cmp.l    #$12000,d7
  64.         bne.s    beam0
  65.  
  66.         bsr.s    routines
  67.  
  68.         btst    #6,$bfe001
  69.         bne.s    beam0
  70.  
  71.         lea    systemsave(pc),a4
  72.         move.l    12(a4),$68.w
  73.         move.l    16(a4),$6c.w
  74.         move    8(a4),$9a(a5)
  75.         move    10(a4),$96(a5)
  76.         move.l    (a4),$80(a5)
  77.         move.l    4(a4),$84(a5)
  78.  
  79. fadecli2    move.l    4(a5),d7
  80.         and.l    #$1ff00,d7
  81.         cmp.l    #$13000,d7
  82.         bne.s    fadecli2
  83.         moveq    #1,d5
  84.         bsr    mt_music
  85.         lea    systemsave(pc),a4
  86.         move.l    4(a4),a0
  87.         lea    6(a0),a1
  88.         lea    savepal(pc),a0
  89.         moveq    #4-1,d7
  90.         moveq    #6,d6
  91.         bsr    fader
  92.         tst    d1
  93.         beq.s    fadecli2
  94.  
  95.         IFNE    music
  96.         bsr    mt_end
  97.         ENDC
  98.  
  99.         moveq    #0,d0
  100.         rts
  101.  
  102. routines    bsr    wave
  103.         bsr    manager
  104.         bsr    animate_spr        
  105.         bsr    writer
  106.         bsr    copy
  107.         bsr    clear
  108.         rts
  109.  
  110. *****************************************************************************
  111.  
  112. newlevel3    move    sr,-(sp)        ;sr onto stack
  113.         movem.l    d0-d7/a0-a6,-(sp)    ;all regs to stack
  114.         lea    $dff000,a5
  115.         move     #$20,$9c(a5)
  116.  
  117.         bsr    scroll        
  118.  
  119.         IFNE    music
  120.         moveq    #0,d5
  121.         bsr    mt_music
  122.         ENDC
  123.     
  124.         movem.l    (sp)+,d0-d7/a0-a6
  125.         move    (sp)+,sr
  126.         rte
  127.  
  128. init_copper1    lea    systemsave(pc),a4
  129.         move.l    4(a4),a0
  130.         lea    6(a0),a1
  131.         lea    savepal(pc),a0
  132.         move    (a1),(a0)+
  133.         move    4(a1),(a0)+
  134.         move    8(a1),(a0)+
  135.         move    12(a1),(a0)+
  136.         bsr    update3
  137.         lea    multable(pc),a0
  138.         move    #144-1,d1
  139.         moveq    #0,d0
  140. multab        move    d0,(a0)+
  141.         add    #44,d0
  142.         dbf    d1,multab
  143.         lea    screen,a2
  144. kccp        clr.l    (a2)+
  145.         cmp.l    #screen+$10000,a2
  146.         bne.s    kccp        
  147.         lea    logo,a0
  148.         lea    screen+((44*4)*6),a1
  149. rtt        move    (a0)+,(a1)+
  150.         cmp.l    #logoend,a0
  151.         blo.s    rtt
  152.         lea    sprxpos(pc),a4        ;initialise sonic
  153.         move.l    #$017000d0,(a4)
  154.         lea    sprframe(pc),a4
  155.         clr    (a4)
  156.         lea    screen,a0
  157.         lea    bits1(pc),a1
  158.         lea    bits1_1(pc),a2
  159.         moveq    #4-1,d1
  160.         move.l    a0,d0
  161. setloop1    move    d0,6(a1)
  162.         move    d0,6(a2)
  163.         swap    d0
  164.         move    d0,2(a1)
  165.         move    d0,2(a2)
  166.         swap    d0
  167.         lea    8(a1),a1
  168.         lea    8(a2),a2
  169.         add.l    #44,d0
  170.         dbf    d1,setloop1
  171.         lea    scrollbuffer+2,a0
  172.         lea    bits2(pc),a1
  173.         moveq    #2-1,d1
  174.         move.l    a0,d0
  175. setloop2    move    d0,6(a1)
  176.         swap    d0
  177.         move    d0,2(a1)
  178.         swap    d0
  179.         lea    8(a1),a1
  180.         add.l    #48*30,d0
  181.         dbf    d1,setloop2
  182.         lea    pal(pc),a0
  183.         lea    palette(pc),a1
  184.         lea    p16(pc),a2
  185.         moveq    #16-1,d0
  186. setp1        move    (a0),2(a1)
  187.         move    (a0)+,2(a2)
  188.         lea    4(a1),a1
  189.         lea    4(a2),a2
  190.         dbf    d0,setp1
  191.         lea    block1(pc),a0
  192.         move    #lines1-1,d1
  193.         move.l    #$1c09fffe,d2
  194. insert1        move.l    d2,(a0)+
  195.         move.l    #$00f00000,(a0)+
  196.         move.l    #$00f20000,(a0)+
  197.         move.l    #$01a00000,(a0)+        
  198.         add.l    #$01000000,d2
  199.         dbf    d1,insert1
  200.         lea    block2(pc),a0
  201.         moveq    #lines2-1,d1
  202.         move.l    #$d209fffe,d2
  203. insert2        move.l    d2,(a0)+
  204.         move.l    #$00e00000,(a0)+
  205.         move.l    #$00e20000,(a0)+
  206.         move.l    #$01820000,(a0)+        
  207.         add.l    #$01000000,d2
  208.         dbf    d1,insert2
  209.         lea    block3(pc),a0
  210.         moveq    #lines3-1,d1
  211.         move.l    #$2109fffe,d2
  212. insert3        move.l    d2,(a0)+
  213.         move.l    #$00e00000,(a0)+
  214.         move.l    #$00e20000,(a0)+
  215.         move.l    #$01800015,(a0)+
  216.         move.l    #$01820000,(a0)+
  217.         add.l    #$01000000,d2
  218.         dbf    d1,insert3
  219.         lea    blockblur(pc),a0
  220.         moveq    #lines4-1,d1
  221.         move.l    #$0209fffe,d2
  222. insert4        move.l    #$00e40000,(a0)+
  223.         move.l    #$00e60000,(a0)+
  224.         move.l    d2,(a0)+
  225.         add.l    #$01000000,d2
  226.         dbf    d1,insert4
  227.         lea    cline(pc),a0
  228.         move.l    #$01800015,d0
  229.         moveq    #59-1,d1
  230. setcline    move.l    d0,(a0)+
  231.         dbf    d1,setcline
  232.         move.l    #$01800015,d0
  233.         move.l    d0,(a0)
  234.         bset    #1,$bfe001
  235.         rts    
  236.  
  237. *****************************************************************************
  238.  
  239. *    Intro part
  240.  
  241. *****************************************************************************
  242.  
  243. intro        move.l    #250-1,d6    
  244. intro1        move.l    4(a5),d7
  245.         and.l    #$1ff00,d7
  246.         cmp.l    #$13000,d7
  247.         bne.s    intro1
  248.         dbf    d6,intro1
  249.  
  250.         bsr    fadecli
  251.         lea    copperlist2(pc),a0
  252.         move.l    a0,$80(a5)
  253.         clr    $88(a5)
  254.         move    #$83e0,$96(a5)
  255.         bsr.s    makeline
  256.         bsr.s    moveline
  257.         addq    #1,allow_so
  258.         bsr    fadelogoup
  259.  
  260.         move.l    #250-1,d6    
  261. intro2        move.l    4(a5),d7
  262.         and.l    #$1ff00,d7
  263.         cmp.l    #$13000,d7
  264.         bne.s    intro2
  265.         dbf    d6,intro2
  266.  
  267. frame        movem.l    d6/d7,-(sp)
  268.         moveq    #5,d6
  269. frame1        move.l    4(a5),d7
  270.         and.l    #$1ff00,d7
  271.         cmp.l    #$12000,d7
  272.         bne.s    frame1
  273.         dbf    d6,frame1
  274.         movem.l    (sp)+,d6/d7
  275.         rts
  276.  
  277. makeline    lea    cline(pc),a0
  278.         moveq    #59-1,d0
  279. lineup        move    #$fff,2(a0)
  280.         lea    4(a0),a0
  281.         bsr.s    frame
  282.         dbf    d0,lineup
  283.         rts
  284.  
  285. moveline    lea    upline(pc),a0
  286.         move    #$100,d0
  287.         move    #$fff,6(a0)
  288.         move    #$004,14(a0)
  289. bump        sub    d0,(a0)
  290.         sub    d0,8(a0)
  291.         bsr.s    frame
  292.         cmp    #9,(a0)
  293.         bne.s    bump
  294.         rts
  295.  
  296. fadecli        move.l    4(a5),d7
  297.         and.l    #$1ff00,d7
  298.         cmp.l    #$13000,d7
  299.         bne.s    fadecli
  300.         lea    systemsave(pc),a4
  301.         move.l    4(a4),a0
  302.         lea    6(a0),a1
  303.         lea    blank(pc),a0
  304.         moveq    #4-1,d7
  305.         moveq    #6,d6
  306.         bsr.s    fader
  307.         tst    d1
  308.         beq.s    fadecli
  309.         rts
  310.  
  311. fadelogoup    move.l    4(a5),d7
  312.         and.l    #$1ff00,d7
  313.         cmp.l    #$13000,d7
  314.         bne.s    fadelogoup
  315.         lea    pal(pc),a0
  316.         lea    logopal+2(pc),a1
  317.         moveq    #16-1,d7
  318.         moveq    #6,d6
  319.         bsr.s    fader
  320.         tst    d1
  321.         beq.s    fadelogoup
  322.         rts
  323.  
  324. fader        movem.l    a0-a2/d0/d2-d7,-(sp)    
  325.         lea    fadebits(pc),a2
  326.         addq.b    #1,(a2)
  327.         cmp.b    (a2),d6
  328.         bne.s    ntt1
  329.         clr.b    (a2)
  330.         addq.b    #1,1(a2)
  331.         cmp.b    #16,1(a2)
  332.         bne.s    floop1
  333.         moveq    #-1,d1
  334.         clr.w    (a2)
  335.         bra.s    ntt2
  336. floop1        move    (a0)+,d6
  337.         move    (a1),d5
  338.         cmp    d5,d6
  339.         beq.s    nextc
  340.         bsr.s    mask        
  341.         cmp    d2,d3
  342.         blt.s    minus
  343.         neg    d4
  344. minus        sub    d4,(a1)
  345. nextc        lea    4(a1),a1
  346.         dbf    d7,floop1
  347. ntt1        moveq    #0,d1
  348. ntt2        movem.l    (sp)+,a0-a2/d0/d2-d7
  349.         rts
  350.  
  351.  
  352. mask        moveq    #0,d4
  353.         move    d6,d3
  354.         move    d5,d2
  355.         and    #$f,d6
  356.         and    #$f,d5
  357.         cmp.b    d5,d6
  358.         beq.s    okblue
  359.         addq    #1,d4
  360. okblue        move    d3,d6
  361.         move    d2,d5
  362.         and    #$f0,d6
  363.         and    #$f0,d5
  364.         cmp.b    d5,d6
  365.         beq.s    okgreen
  366.         add    #$10,d4
  367. okgreen        move    d3,d6
  368.         move    d2,d5
  369.         and    #$f00,d6
  370.         and    #$f00,d5
  371.         cmp    d5,d6
  372.         beq.s    okred
  373.         add    #$100,d4
  374. okred        rts
  375.  
  376. *****************************************************************************
  377.  
  378. *    Main part
  379.  
  380. *****************************************************************************
  381.  
  382. manager        tst    changing
  383.         beq.s    working
  384.         cmp    #1,changing
  385.         beq.s    colzdown
  386.         bra.s    colzup
  387.  
  388. working        lea    pauser(pc),a0
  389.         cmp    #50*5,(a0)
  390.         bne.s    not_ready
  391.         clr    (a0)
  392.         addq    #1,changing
  393.         bra.s    there
  394. not_ready    addq    #1,(a0)
  395. there        rts
  396.  
  397. colzdown    lea    gfx_offset(pc),a0
  398.         add.l    #44,(a0)
  399.         cmp.l    #44*144,(a0)
  400.         bne.s    waitamo
  401.         bsr.s    update3
  402.         addq    #1,changing
  403. waitamo        rts
  404.  
  405. colzup        lea    gfx_offset(pc),a0
  406.         sub.l    #44,(a0)
  407.         tst.l    (a0)
  408.         bne.s    waitamo2
  409.         clr    changing
  410. waitamo2    rts
  411.  
  412. update3        moveq    #4-1,d7                ;fetch sinedata
  413.         lea    vbar_datalist2(pc),a1
  414.         lea    wave_chan1(pc),a2
  415.         move    (a1),d0
  416.         cmp    #33,2(a1,d0.w)
  417.         bne.s    ok_v91
  418.         clr    (a1)
  419.         bra.s    update3
  420. ok_v91        addq    #8,(a1)
  421.         lea    2(a1,d0.w),a1
  422. setx        move    (a1)+,(a2)+
  423.         dbf    d7,setx
  424. update4        moveq    #0,d0
  425.         lea    which_gfx(pc),a0
  426.         lea    fx_gfx(pc),a1
  427.         move.b    (a0),d0
  428.         tst.b    1(a0,d0.w)
  429.         bpl.s    ok_v92
  430.         clr.b    (a0)
  431.         bra.s    update4
  432. ok_v92        move.b    1(a0,d0.w),d0
  433.         addq.b    #1,(a0)
  434.         tst.b    d0
  435.         bne.s    set1
  436.         move.l    #fx_gfx1,(a1)
  437.         bra.s    update5
  438. set1        move.l    #fx_gfx2,(a1)
  439. update5        moveq    #0,d0
  440.         lea    which_offset(pc),a0
  441.         lea    offset(pc),a1
  442.         move.b    (a0),d0
  443.         tst.b    1(a0,d0.w)
  444.         bpl.s    ok_v93
  445.         clr.b    (a0)
  446.         bra.s    update5
  447. ok_v93        move.b    1(a0,d0.w),1(a1)
  448.         addq.b    #1,(a0)
  449.         lea    col_offsets1(pc),a0
  450.         lea    clist_offset1(pc),a1
  451.         bsr.s    update6
  452.         lea    col_offsets2(pc),a0
  453.         lea    clist_offset2(pc),a1
  454.         bsr.s    update6
  455.         rts
  456.  
  457. update6        moveq    #0,d0
  458.         move    (a0),d0
  459.         tst    2(a0,d0.w)
  460.         bpl.s    ok_v94
  461.         clr    (a0)
  462.         bra.s    update6
  463. ok_v94        move    2(a0,d0.w),d0
  464.         move.l    d0,(a1)
  465.         addq    #2,(a0)
  466.         rts
  467.  
  468. wave        lea    block1(pc),a1
  469.         lea    wavecols(pc),a6
  470.         move.l    gfx_offset(pc),d4
  471.         move.l    (a6),a4
  472.         move.l    4(a6),a6
  473.         add.l    clist_offset1(pc),a4
  474.         add.l    clist_offset2(pc),a6
  475.         lea    sine,a3
  476.         lea    wave_crp(pc),a2
  477.         move    (a2),d6
  478.         move    wave_chan1(pc),d7
  479.         add    d7,(a2)
  480.         move    2(a2),d5
  481.         move    wave_chan2(pc),d7
  482.         add    d7,2(a2)
  483.         move    #lines1-1,d7
  484. loop55        move    d6,d0
  485.         add    wave_freq1(pc),d6
  486.         and    #$1ff,d0
  487.         add    d0,d0
  488.         move    (a3,d0.w),d0
  489.         move    d5,d2
  490.         add    wave_freq2(pc),d5
  491.         and    #$1ff,d2
  492.         add    d2,d2
  493.         add    (a3,d2.w),d0
  494.         move    (a3,d2.w),d2
  495.         add    d2,d0
  496.         lsr    #3,d0
  497.         movem.l    d0/d5/d6,-(sp)
  498.         bsr    blob
  499.         movem.l    (sp)+,d0/d5/d6
  500.         dbf    d7,loop55
  501.  
  502.         lea    fake(pc),a1
  503.         moveq    #2-1,d7
  504. adjust1        move    d6,d0
  505.         add    wave_freq1(pc),d6
  506.         and    #$1ff,d0
  507.         add    d0,d0
  508.         move    (a3,d0.w),d0
  509.         move    d5,d2
  510.         add    wave_freq2(pc),d5
  511.         and    #$1ff,d2
  512.         add    d2,d2
  513.         add    (a3,d2.w),d0
  514.         move    (a3,d2.w),d2
  515.         add    d2,d0
  516.         lsr    #3,d0
  517.         movem.l    d0/d5/d6,-(sp)
  518.         bsr    blob2
  519.         movem.l    (sp)+,d0/d5/d6
  520.         dbf    d7,adjust1
  521.  
  522.         lea    block2(pc),a1
  523.         move    #lines2-1,d7
  524. loop45        move    d6,d0
  525.         add    wave_freq1(pc),d6
  526.         and    #$1ff,d0
  527.         add    d0,d0
  528.         move    (a3,d0.w),d0
  529.         move    d5,d2
  530.         add    wave_freq2(pc),d5
  531.         and    #$1ff,d2
  532.         add    d2,d2
  533.         add    (a3,d2.w),d0
  534.         move    (a3,d2.w),d2
  535.         add    d2,d0
  536.         lsr    #3,d0
  537.         movem.l    d0/d5/d6,-(sp)
  538.         bsr    blob
  539.         movem.l    (sp)+,d0/d5/d6
  540.         dbf    d7,loop45
  541.  
  542.         lea    blockblur(pc),a1
  543.         move    #lines4-1,d7
  544. adjust2        move    d6,d0
  545.         add    wave_freq1(pc),d6
  546.         and    #$1ff,d0
  547.         add    d0,d0
  548.         move    (a3,d0.w),d0
  549.         move    d5,d2
  550.         add    wave_freq2(pc),d5
  551.         and    #$1ff,d2
  552.         add    d2,d2
  553.         add    (a3,d2.w),d0
  554.         move    (a3,d2.w),d2
  555.         add    d2,d0
  556.         lsr    #3,d0
  557.         movem.l    d0/d5/d6,-(sp)
  558.         bsr    blob3
  559.         movem.l    (sp)+,d0/d5/d6
  560.         dbf    d7,adjust2
  561.  
  562.         lea    block3(pc),a1
  563.         move    #lines3-1,d7
  564. loop56        move    d6,d0
  565.         add    wave_freq1(pc),d6
  566.         and    #$1ff,d0
  567.         add    d0,d0
  568.         move    (a3,d0.w),d0
  569.         move    d5,d2
  570.         add    wave_freq2(pc),d5
  571.         and    #$1ff,d2
  572.         add    d2,d2
  573.         add    (a3,d2.w),d0
  574.         move    (a3,d2.w),d2
  575.         add    d2,d0
  576.         lsr    #3,d0
  577.         movem.l    a0/d0/d5/d6,-(sp)
  578.         lea    multable(pc),a0
  579.         bsr.s    blob4
  580.         movem.l    (sp)+,a0/d0/d5/d6
  581.         dbf    d7,loop56
  582.         rts
  583.  
  584. blob4        move    d0,d6
  585.         move    offset(pc),d3
  586.         beq.s    skip_lsr4
  587.         lsr    d3,d6
  588. skip_lsr4    add    d6,d6
  589.         add    d0,d0
  590.         move.l    fx_gfx(pc),d5
  591.         add    (a0,d0.w),d5
  592.         sub.l    d4,d5
  593.         move    d5,10(a1)
  594.         swap    d5
  595.         move    d5,6(a1)    
  596.         move    (a6,d6.w),18(a1)
  597.         lea    20(a1),a1
  598.         rts
  599.  
  600. blob        move    d0,d6
  601.         move    offset(pc),d3
  602.         beq.s    skip_lsr
  603.         lsr    d3,d6
  604. skip_lsr    add    d6,d6
  605.         add    d0,d0
  606.         move.l    fx_gfx(pc),d5
  607.         add    multable(pc,d0.w),d5
  608.         sub.l    d4,d5
  609.         move    d5,10(a1)
  610.         swap    d5
  611.         move    d5,6(a1)    
  612.         move    (a6,d6.w),14(a1)
  613.         lea    16(a1),a1
  614.         rts
  615.         
  616. blob2        move    d0,d6
  617.         move    offset(pc),d3
  618.         beq.s    skip_lsr2
  619.         lsr    d3,d6
  620. skip_lsr2    add    d0,d0
  621.         add    d6,d6
  622.         move.l    fx_gfx(pc),d5
  623.         add    multable(pc,d0.w),d5
  624.         sub.l    d4,d5
  625.         move    d5,14(a1)
  626.         swap    d5
  627.         move    d5,10(a1)    
  628.         move    (a6,d6.w),18(a1)
  629.         lea    52(a1),a1
  630.         rts
  631.  
  632. blob3        add    d0,d0
  633.         move.l    fx_gfx(pc),d5
  634.         add    multable(pc,d0.w),d5
  635.         sub.l    d4,d5
  636.         move    d5,6(a1)
  637.         swap    d5
  638.         move    d5,2(a1)    
  639.         lea    12(a1),a1
  640.         rts
  641.  
  642. multable    ds.w    144
  643.  
  644.  
  645. writer        tst    allow_wr
  646.         beq    skip_wr
  647.         tst    npause
  648.         beq.s    cont1
  649.         subq    #1,npause
  650.         bra    skip_wr
  651. cont1        movem.l    a0-a4/d0-d7,-(sp)
  652.         move.l    textptr(pc),a2
  653.         lea    textpos(pc),a3
  654. next        cmp.b    #-2,(a2)
  655.         bne.s    not_page
  656.         moveq    #0,d0
  657.         move.b    1(a2),d0
  658.         mulu    #50,d0
  659.         move    d0,npausetemp
  660.         clr.l    (a3)
  661.         clr    allow_wr
  662.         move    #1,allow_co
  663.         lea    text(pc),a2    
  664.         bra    done
  665. not_page    cmp.b    #-1,(a2)
  666.         bne.s    not_looped
  667.         moveq    #0,d0
  668.         move.b    1(a2),d0
  669.         mulu    #50,d0
  670.         move    d0,npausetemp
  671.         clr.l    (a3)
  672.         clr    allow_wr
  673.         move    #1,allow_co
  674.         lea    2(a2),a2    
  675.         bra.s    done
  676. not_looped    cmp.b    #13,(a2)
  677.         bne.s    no_return
  678.         clr    (a3)
  679.         add    #(44*4)*charhi,2(a3)
  680.         lea    1(a2),a2
  681.         bra.s    next
  682. no_return    move.b    (a2)+,d0
  683.         sub.b    #32,d0
  684.         and    #$ff,d0
  685.         add    d0,d0
  686.         lea    font2,a0
  687.         lea    charbuffer,a1
  688.         lea    (a0,d0.w),a0
  689.         move    (a3),d5
  690.         move    2(a3),d6
  691.         lea    (a1,d5.w),a1
  692.         lea    (a1,d6.w),a1
  693.         move.l    #-1,bltafwm(a5)
  694.         move.l    #$09f00000,bltcon0(a5)
  695.         move    #(944/8)-2,bltamod(a5)
  696.         move    #44-2,bltdmod(a5)
  697.         move.l    a0,bltapth(a5)
  698.         move.l    a1,bltdpth(a5)
  699.         move    #(64*(16*4))+1,bltsize(a5)
  700.         bsr    waitbli
  701.         addq    #2,(a3)
  702. done        move.l    a2,textptr
  703.         movem.l    (sp)+,a0-a4/d0-d7
  704. skip_wr        rts
  705.  
  706. copy        tst    allow_co
  707.         beq    skip_co
  708.         tst    npause
  709.         beq.s    cont2
  710.         subq    #1,npause
  711.         bra    skip_co
  712. cont2        moveq    #5-1,d7
  713.         moveq    #0,d6
  714. blinds1        lea    charbuffer,a0
  715.         lea    screen+(176*100),a1
  716.         lea    copy_offset(pc),a2
  717.         move.l    (a2),d0
  718.         lea    (a0,d0.l),a0
  719.         lea    (a1,d0.l),a1
  720.         lea    (a0,d6.l),a0
  721.         lea    (a1,d6.l),a1
  722.         move.l    #-1,bltafwm(a5)
  723.         move.l    #$09f00000,bltcon0(a5)
  724.         moveq    #0,d0
  725.         move    d0,bltamod(a5)
  726.         move    d0,bltdmod(a5)
  727.         move.l    a0,bltapth(a5)
  728.         move.l    a1,bltdpth(a5)
  729.         move    #(64*(1*4))+22,bltsize(a5)
  730.         bsr    waitbli
  731.         add.l    #(44*4)*16,d6
  732.         dbf    d7,blinds1
  733.         add.l    #44*4,(a2)
  734.         cmp.l    #(44*4)*16,(a2)
  735.         bne.s    skip_co
  736.         clr.l    (a2)
  737.         clr    allow_co
  738.         move    #1,allow_cl
  739.         move    npausetemp(pc),npause        ;onscreen
  740. skip_co        rts
  741.  
  742. clear        tst    allow_cl
  743.         beq.s    skip_cl
  744.         tst    npause
  745.         beq.s    cont3
  746.         subq    #1,npause
  747.         bra.s    skip_cl
  748. cont3        move    #1,allow_wr
  749.         moveq    #5-1,d7
  750.         moveq    #0,d6
  751. blinds2        lea    screen+(176*100),a1
  752.         lea    (a1,d6.l),a1
  753.         lea    copy_offset(pc),a2
  754.         move.l    (a2),d0
  755.         lea    (a1,d0.l),a1
  756.         move.l    #-1,bltafwm(a5)
  757.         move.l    #$01000000,bltcon0(a5)
  758.         clr    bltdmod(a5)
  759.         move.l    a1,bltdpth(a5)
  760.         move    #(64*(1*4))+22,bltsize(a5)
  761.         bsr    waitbli
  762.         add.l    #(44*4)*16,d6
  763.         dbf    d7,blinds2
  764.         add.l    #44*4,(a2)
  765.         cmp.l    #(44*4)*16,(a2)
  766.         bne.s    skip_cl
  767.         clr.l    (a2)
  768.         clr    allow_cl
  769. skip_cl        rts
  770.  
  771. scroll        tst    allow_sc
  772.         beq.s    nosc
  773.         lea    scrolled(pc),a0
  774.         addq    #1,(a0)
  775.         cmp    #4,(a0)
  776.         bne.s    normals
  777.         clr    (a0)
  778.         bsr.s    newchar
  779. normals        lea    scrollbuffer,a1
  780.         lea    2(a1),a0
  781.         moveq    #1,d7
  782. plane4        movem.l    a0-a1,-(sp)
  783.         move.l    #-1,bltafwm(a5)
  784.         move.l    #$c9f00000,bltcon0(a5)
  785.         moveq    #48-46,d0
  786.         move    d0,bltamod(a5)
  787.         move    d0,bltdmod(a5)
  788.         move.l    a0,bltapth(a5)
  789.         move.l    a1,bltdpth(a5)
  790.         move    #(64*30)+23,bltsize(a5)
  791.         bsr    waitbli
  792.         movem.l    (sp)+,a0-a1
  793.         lea    48*30(a1),a1
  794.         lea    48*30(a0),a0
  795.         dbf    d7,plane4
  796. nosc        rts
  797.  
  798. newchar        movem.l    a0-a4/d0-d7,-(sp)
  799.         move.l    scrollpoint(pc),a2
  800.         tst.b    (a2)
  801.         bpl.s    no_loop
  802.         lea    scroller(pc),a2
  803. no_loop        move.b    (a2)+,d0
  804.         move.l    a2,scrollpoint
  805.         cmp.b    #'b',d0
  806.         bne.s    notr
  807.         moveq    #8,d0
  808.         bra.s    r
  809. notr        cmp.b    #'a',d0
  810.         bne.s    notDC
  811.         moveq    #4,d0
  812.         bra.s    r        
  813. notDC        sub.b    #32,d0
  814.         and    #$ff,d0
  815.         add    d0,d0
  816. r        lea    font1,a0
  817.         lea    scrollbuffer+44,a1
  818.         lea    (a0,d0.w),a0
  819.         moveq    #1,d7
  820. plane2        movem.l    a0-a1,-(sp)
  821.         move.l    #-1,bltafwm(a5)
  822.         move.l    #$09f00000,bltcon0(a5)
  823.         move    #(944/8)-2,bltamod(a5)
  824.         move    #48-2,bltdmod(a5)
  825.         move.l    a0,bltapth(a5)
  826.         move.l    a1,bltdpth(a5)
  827.         move    #(64*30)+1,bltsize(a5)
  828.         bsr.s    waitbli
  829.         movem.l    (sp)+,a0-a1
  830.         lea    48*30(a1),a1
  831.         lea    $dd4(a0),a0
  832.         dbf    d7,plane2
  833.         movem.l    (sp)+,a0-a4/d0-d7
  834.         rts
  835.  
  836. waitbli        move    #$8400,$96(a5)
  837. wb1        btst    #14,2(a5)
  838.         bne.s    wb1
  839. wb2        btst    #14,2(a5)
  840.         bne.s    wb2
  841.         move    #$400,$96(a5)
  842.         rts
  843.  
  844. animate_spr    tst    allow_so
  845.         beq.s    there1
  846.  
  847.         lea    sprxpos(pc),a4        ;initialise sonic
  848.         subq    #2,(a4)
  849.         cmp    #$120,(a4)
  850.         bne.s    there1
  851.         clr    allow_so
  852.  
  853. there1        lea    framecount(pc),a4    
  854.         addq    #1,(a4)        ;just makes sure frame is
  855.         cmp    #5,(a4)        ;updated at a certain rate.
  856.         bne.s    noadvframe
  857.         clr    (a4)
  858.         lea    sprframe(pc),a4
  859.         move.l    splist(pc),a2
  860.         cmp.b    #-1,(a2)
  861.         bne.s    nol8
  862.         lea    spdat(pc),a2        
  863. nol8        move.b    (a2)+,1(a4)
  864.         move.l    a2,splist
  865. noadvframe    moveq    #0,d0        ;find our sprite frame..
  866.         move    sprframe(pc),d0
  867.         move.l    #(200*6),d1
  868.         muls    d0,d1
  869.         lea    spritedata,a1
  870.         lea    (a1,d1.l),a1
  871.         bsr    spritepoint    ;set the copperlist        
  872.         move    sprxpos(pc),d0
  873.         move    sprypos(pc),d1
  874.         add    #$70,d0        ;add a little..
  875.         moveq    #48,d4        ;sprite height
  876.         moveq    #0,d2        ;sprite control word
  877.         move.b    d1,d2        ;put low byte of sprypos in con
  878.         asl    #8,d2        ;move along
  879.         move    d0,d3        ;keep sprxpos safe
  880.         asr    #1,d3        ;get rid of lsb
  881.         move.b    d3,d2        ;put low byte of sprxpos in con
  882.         swap    d2        ;swap control regs
  883.         move    d1,d3        ;keep sprypos
  884.         add    d4,d3        ;add height to sprypos for end.
  885.         move.b    d3,d2        ;put low byte of vend in con
  886.         asl    #8,d2        ;move along
  887.         btst    #0,d0        ;check sprxpos lsb
  888.         beq.s    nosethlow
  889.         or    #1,d2        ;put lsb status into con
  890. nosethlow    btst    #8,d1        ;check sprypos msb
  891.         beq.s    nosetvhigh
  892.         or    #4,d2        ;put msb status into con
  893. nosetvhigh    btst    #8,d3        ;check vertend msb
  894.         beq.s    nosetvend
  895.         or    #2,d2        ;put vend msb into control
  896. nosetvend    bclr    #7,d2        ;set no attach
  897.         move.l    d2,(a1)
  898.         bset    #7,d2        ;set attach
  899.         move.l    d2,200(a1)
  900.         add.l    #$00080000,d2
  901.         bclr    #7,d2        ;set no attach
  902.         move.l    d2,400(a1)
  903.         bset    #7,d2        ;set attach
  904.         move.l    d2,600(a1)
  905.         add.l    #$00080000,d2
  906.         bclr    #7,d2        ;set no attach
  907.         move.l    d2,800(a1)
  908.         bset    #7,d2        ;set attach
  909.         move.l    d2,1000(a1)
  910.         rts
  911.  
  912. spritepoint    lea    spritelist1(pc),a0    
  913.         bsr.s    setemup
  914.         lea    spritelist2(pc),a0    ;this routine just sets
  915. setemup        move.l    a1,-(sp)          ;the copperlist sprite
  916.         moveq    #6-1,d7              ;pointers...
  917. setsprites    move.l    a1,d0     
  918.         move    d0,6(a0)     
  919.         swap    d0     
  920.         move    d0,2(a0)     
  921.         lea    8(a0),a0
  922.         lea    200(a1),a1
  923.         dbf    d7,setsprites     
  924.         move.l    (sp)+,a1
  925.         rts
  926.  
  927.         IFNE    music
  928.         include    data/st-replay.s
  929.         ENDC
  930.  
  931. killsysx    move.l    $4.w,a6
  932.         lea    gfxname(pc),a1
  933.         moveq    #0,d0
  934.         jsr    -552(a6)
  935.         move.l    d0,a6
  936.         move    #$8000,d7    
  937.         lea    systemsave(pc),a4
  938.         move.l    $26(a6),(a4)
  939.         move.l    $32(a6),4(a4)
  940.         move    $1c(a5),d0
  941.         move    2(a5),d1
  942.         or    d7,d0
  943.         and    #$3ff,d1
  944.         or    d7,d1
  945.         move    d0,$8(a4)
  946.         move    d1,$a(a4)
  947.         move    #$7fff,$9a(a5)
  948.         move    #$20,$96(a5)
  949.         move.l    $68.w,12(a4)
  950.         move.l    $6c.w,16(a4)
  951.         rts
  952.  
  953. gfxname        dc.b    "graphics.library",0
  954.         even
  955.  
  956. systemsave    ds.l    5
  957.  
  958. *****************************************************************************
  959.  
  960. splist        dc.l    spdat
  961. spdat        REPT    3
  962.         dc.b    0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7
  963.         ENDR
  964.         REPT    2
  965.         dc.b    8,9,10,11,12,13,14,15,8,9,10,11,12,13,14,15
  966.         ENDR
  967.         dc.b    -1
  968.         EVEN
  969.  
  970. textptr        dc.l    text0
  971.  
  972. *Textwriter options : -1 to end a page and pause value (secs) after!
  973. *              -2 to end a page and pause value as above and loop
  974. *              13 to next line
  975.  
  976. *alignment               123456789012345678901
  977.  
  978. text0        dc.b    "                     ",13
  979.         dc.b    "                     ",13
  980.         dc.b    "                     ",13
  981.         dc.b    "                     ",13
  982.         dc.b    "                     ",13
  983.         dc.b    -1,6
  984. text        dc.b    " THE UK CO-OPERATION ",13
  985.         dc.b    "  MUSICDISK PROJECT  ",13
  986.         dc.b    "CALLED -SONIC ATTACK-",13
  987.         dc.b    "IS NEARING COMPLETION",13
  988.         dc.b    "    AT LONG LAST!    ",13
  989.         dc.b    -1,6
  990. text2        dc.b    " SO, IF YOU ARE A UK ",13
  991.         dc.b    " BASED MUSICIAN, AND ",13
  992.         dc.b    "  WOULD LIKE TO GET  ",13
  993.         dc.b    "   INVOLVED IN THE   ",13
  994.         dc.b    "  PROJECT, WRITE TO  ",13
  995.         dc.b    -1,6
  996. text3        dc.b    "    * RED DEVIL *    ",13
  997.         dc.b    "   47 MOXLEY ROAD    ",13
  998.         dc.b    "      DARLASTON      ",13
  999.         dc.b    "    WEST MIDLANDS    ",13
  1000.         dc.b    "      WS10  7RE      ",13
  1001.         dc.b    -1,10
  1002. text4         dc.b    "                     ",13
  1003.         dc.b    "*-*-*-*-*-*-*-*-*-*-*",13
  1004.         dc.b    "CREDIT FOR THIS INTRO",13
  1005.         dc.b    "*-*-*-*-*-*-*-*-*-*-*",13
  1006.         dc.b    "                     ",13
  1007.         dc.b    -1,4
  1008. text5        dc.b    "*********************",13
  1009.         dc.b    "    CODING BY NZO    ",13
  1010.         dc.b    "GRAPHICS BY RED DEVIL",13
  1011.         dc.b    "   MUSIC BY MUTLEY   ",13
  1012.         dc.b    "*********************",13
  1013.         dc.b    -1,5
  1014. text6        dc.b    "   CALL OUR BOARDS   ",13
  1015.         dc.b    "*-*-*-*-*-*-*-*-*-*-*",13
  1016.         dc.b    "   GURUS DREAM WHQ   ",13
  1017.         dc.b    "     46-8-282760     ",13
  1018.         dc.b    "  9 NODES, 6.4 GIGS  ",13
  1019.         dc.b    -1,7
  1020. text7         dc.b    "  COMPLEX CORROSION  ",13
  1021.         dc.b    "    1-612-7730522    ",13
  1022.         dc.b    "*-*-*-*-*-*-*-*-*-*-*",13
  1023.         dc.b    "  FORGOTTEN REALMS   ",13
  1024.         dc.b    "    44-272-696594    ",13
  1025.         dc.b    -1,7
  1026. text8        dc.b    "    EASTERN FRONT    ",13
  1027.         dc.b    "     358-PRIVATE     ",13
  1028.         dc.b    "*-*-*-*-*-*-*-*-*-*-*",13
  1029.         dc.b    "    SECRET WORLD     ",13
  1030.         dc.b    "   49-30-885-4598    ",13
  1031.         DC.B    -1,7
  1032. text9        dc.b    "                     ",13
  1033.         dc.b    "  LOOK OUT FOR MORE  ",13
  1034.         dc.b    "  SMART PRODUCTIONS  ",13
  1035.         dc.b    "  FROM US VERY SOON  ",13
  1036.         dc.b    "                     ",13
  1037.         dc.b    -2,4
  1038.         EVEN
  1039.  
  1040. *        'a' = Dual Crew Logo 
  1041. *        '#' = 'Of'
  1042. *        'b' = '®'
  1043.  
  1044. scrollpoint    dc.l    scroller0
  1045. scroller0    dc.b    "                                                   "
  1046. scroller    dc.b    "WELCOME TO A NEW PRODUCTION FROM     a DUAL CREW a   "
  1047.         dc.b    "THIS IS JUST TO ANNOUNCE THAT WE ARE STILL LOOKING "
  1048.         DC.B    "FOR ANY EXCELLENT UK MUSICIAN THAT HASN'T SUBMITTED "
  1049.         DC.B    "A TUNE FOR SONIC ATTACKb. IF YOU'DE LIKE TO GET "
  1050.         DC.B    "INVOLVED, WRITE TO THE ADDRESS ABOVE NOW!             "
  1051.         dc.b    "GREETINGS FROM RED DEVIL TO ZEPHYR, IRIDON AND ALL THE SHINING "
  1052.         DC.B    "IVE SPOKEN WITH RECENTLY...    DWEL, TOM COPPER#ALCATRAZ   "
  1053.         DC.B    "MYSTIK, KREST, JUDGE DROKK#ANARCHY   FAIRFAX#ANDROMEDA   "
  1054.         DC.B    "MANX, MARVIN, WINTERMUTE, ICE, BLACK CAT, HYDRO, FAST EDDIE, "
  1055.         DC.B    "POT NOODLE, CEVIN KEY, MASCOT, MYRMURTH, THARGOID#ANTHROX   "
  1056.         DC.B    "PRAYER#BANAL PROJECTS   STRATOS, DHM#COMPLEX   NIGHTSHADE, "
  1057.         dc.b    "ONE, OHIO#CRUSADERS   WINGER, LEVIATHON, MAVE#CRYSTAL   "
  1058.         DC.B    "ELWOOD, DEXTER#DELICIOUS   HYBRID, FLIGHTY, NO.5, INTREQ, "
  1059.         dc.b    "YAZ, FLAME#DIGITAL   ASSASSIN, MINT SAUCE#DIMENSION X   "
  1060.         DC.B    "RA#DREAMDEALERS   REFLEX, RCF, ZIPTRONIX#ELEVATION   "
  1061.         DC.B    "GROO AND RUFFERTO#ESSENCE   MATTI JE TEPPO#FAIRLIGHT   "
  1062.         DC.B    "SHERWIN#FRAXION   CALVIN#GENOCIDE   JAY ONE, HOLLYWOOD, "
  1063.         dc.b    "SEC4#JETSET   RWO#KEFRENS   THE PRIDE, MAJIC MUSHROOM, "
  1064.         dc.b    "PARADROID, KR33, NUKE, FACET, DAN#LEMON.   PAZZA#LSD   "
  1065.         DC.B    "TDK#MELON DEZIGN   RADAR, LINEBACKER, ACTION MAN#MINISTRY   "
  1066.         DC.B    "RATTLE, RAMJET#PMC   MAT, WONDERBOY, RAIDER, RAZOR "
  1067.         dc.b    "BLADE#RAZOR 1911   JOHN, KRIS, META#REBELS   MUTLEY#RELAY   "
  1068.         DC.B    "SPYCATCHER, HI-LITE, BUTCH, ZODIAK#SCOOPEX   "
  1069.         DC.B    "COUGAR, CRUISER#SANITY   D-SIGN, WOTW, D-ZIRE, BAROCK, "
  1070.         dc.b    "RAVE#SILENTS   COAXIAL#SKID ROW   AXE!#SUBMISSION   "
  1071.         DC.B    "DENNIS T#SUPPLEX   ALI BABA#TARKUS TEAM   GRAY ONE, PEACHY, "
  1072.         dc.b    "FADE ONE, FORNAX#TRSI   HEIN DESIGN#VISION   DARKIE#WIZZCAT                    "
  1073.         dc.b    -1
  1074.         EVEN
  1075.  
  1076. waitpage    dc.w    0
  1077. textpos        dc.w    0,0
  1078. fadebits    dc.b    0,0
  1079. pauser        dc.w    2*40
  1080. changing    dc.w    0
  1081.  
  1082. scrolled    dc.w    0
  1083. sprxpos        dc.w    0        ;sprite x position
  1084. sprypos        dc.w    0        ;sprite y position
  1085. sprframe    dc.w    0        ;current sprite frame
  1086. framecount    dc.w    0        ;frame count for speed..
  1087.  
  1088. wave_chan1    dc.w    0
  1089. wave_chan2    dc.w    0
  1090. wave_freq1    dc.w    0
  1091. wave_freq2    dc.w    0
  1092. wave_crp    dc.w    0,0
  1093. wavecols    dc.l    cols2,cols1
  1094. fx_gfx        dc.l    fx_gfx1
  1095. offset        dc.w    0
  1096. clist_offset1    dc.l    0
  1097. clist_offset2    dc.l    0
  1098. gfx_offset    dc.l    143*44
  1099. blank        REPT    16
  1100.         dc.w    $015
  1101.         ENDR
  1102. allow_so    dc.w    0
  1103. allow_wr    dc.w    0
  1104. allow_co    dc.w    0
  1105. allow_cl    dc.w    0
  1106. allow_sc    dc.w    0
  1107. npause        dc.w    0
  1108. npausetemp    dc.w    0
  1109. copy_offset    dc.l    0
  1110. savepal        ds.w    4
  1111.  
  1112. vbar_datalist2    dc.w    0
  1113.         dc.w    11,21,-8,-7
  1114.         dc.w    257,-245,-255,-259
  1115.         dc.w    -15,15,-15,-14
  1116.         dc.w    -276,2,213,4
  1117.         dc.w    -260,4,249,-11
  1118.         dc.w    -2,-14,-19,-5
  1119.         dc.w    3,1,17,-11
  1120.         dc.w    7,-11,2,6
  1121.         dc.w    -251,221,2,-19
  1122.         dc.w    -11,251,-18,-259
  1123.         dc.w    18,18,18,-18
  1124.         dc.w    -9,-4,2,-1
  1125.         dc.w    -11,2,-1,3
  1126.         dc.w    -255,5,215,3
  1127.         dc.w    7,-275,2,256
  1128.         dc.w    9,-255,11,250
  1129.         dc.w    2,-3,-1,-1
  1130.         dc.w    -255,251,261,-257
  1131.         dc.w    -259,256,-5,-3
  1132.         dc.w    -251,253,258,-255
  1133.         dc.w    11,8,-15,-7
  1134.         dc.w    -3,5,3,-254
  1135.         dc.w    254,6,-250,-2
  1136.         dc.w    -255,-2,257,-1
  1137.         dc.w    28,-28,1,-9
  1138.         dc.w    13,-8,9,-19
  1139.         dc.w    254,7,-250,-3
  1140.         dc.w    47,-253,-43,258
  1141.         dc.w    47,-41,5,-3
  1142.         dc.w    -5,253,-2,-263
  1143.         dc.w    -251,-7,266,1
  1144.         dc.w    258,254,255,-257
  1145.         dc.w    249,-9,-257,6
  1146.         dc.w    -9,6,-1,-2
  1147.         dc.w    -3,5,3,-254
  1148.         dc.w    33
  1149.  
  1150. which_gfx    dc.b    0
  1151.         dc.b    0,0,1,0,0,1,0,1,0,0,0,1,1,1,0,0,1,0,0,1,1,1,0,1
  1152.         dc.b    1,1,0,0,1,0,0,1,0,1,1,1,1,0,1,0,1,0,1,0,0,1,1
  1153.         dc.b    -1
  1154.         EVEN
  1155. which_offset    dc.b    0
  1156.         dc.b    1,0,2,3,1,2,2,1,2,1,0,2,1,3,1,1,3,2,0,2,2,0,2
  1157.         dc.b    1,2,3,1,2,3,0,1,2,2,1,3,1,2,1,3,1,2,1,3,2,0,2
  1158.         dc.b    -1
  1159.         EVEN
  1160. col_offsets1    dc.w    0
  1161.         dc.w    40,80,120,40,0,20,16,100,50,32,10,0,12,60
  1162.         dc.w    70,90,100,30,20,100,200,20,10,40,0,70
  1163.         dc.w    16,32,48,56,64,80,96,110,120,130,140,150,160
  1164.         dc.w    0,50,76,170,180,32,160,40,132
  1165.         dc.w    -1
  1166. col_offsets2    dc.w    0
  1167.         dc.w    70,90,100,30,20,100,200,20,10,40,0,70
  1168.         dc.w    40,80,120,40,0,20,16,100,50,32,10,0,12,60
  1169.         dc.w    20,16,32,102,30,2,40,36,120,60,28,180
  1170.         dc.w    50,210,30,10,170
  1171.         dc.w    -1
  1172.         EVEN
  1173.  
  1174. pal        dc.w    $15,$eee,$ddd,$ccc,$bbb,$aaa,$999,$888
  1175.         dc.w    $677,$567,$256,$036,$03f,$02d,$00b,$002
  1176.  
  1177. copperlist    dc.w    $8e,$1b41,$90,$40f1,$92,$30,$94,$d8,$104,$24,$102,0
  1178.         dc.w    $100,$5200,$108,44*4-44,$10a,44*4-44
  1179. spritelist1    dc.w    $120,0,$122,0,$124,0,$126,0,$128,0,$12a,0,$12c,0,$12e,0
  1180.         dc.w    $130,0,$132,0,$134,0,$136,0,$138,0,$13a,0,$13c,0,$13e,0
  1181.  
  1182. bits1        dc.w    $e0,0,$e2,0,$e4,0,$e6,0,$e8,0,$ea,0,$ec,0,$ee,0
  1183.  
  1184. palette        dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0        
  1185.         dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0        
  1186. p16        dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0        
  1187.         dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0        
  1188.  
  1189. block1        ds.w    lines1*8    ;ends $cf09
  1190.  
  1191. fake        dc.w    $d009,$fffe,$100,$1200
  1192.         dc.w    $e0,0,$e2,0,$182,0
  1193.         Dc.w    $1a0,0,$1a2,$fff,$1a4,$ccc,$1a6,$888
  1194.         Dc.w    $1a8,$555,$1aa,$79f,$1ac,$38f,$1ae,$16d
  1195.  
  1196.         dc.w    $d109,$fffe,$100,$1200
  1197.         dc.w    $e0,0,$e2,0,$182,0
  1198.         Dc.w    $1b0,$249,$1b2,$227,$1b4,$fcb,$1b6,$f98
  1199.         Dc.w    $1b8,$c76,$1ba,$f22,$1bc,$c00,$1be,$800
  1200.  
  1201. block2        ds.w    lines2*8
  1202.         
  1203.         dc.w    $ffd9,$fffe,$100,$1200
  1204.  
  1205.         dc.w    $0009,$fffe,$100,$200,$108,4
  1206.         dc.w    $180,$fff,$182,$fc8,$184,$a84,$186,$542
  1207.         dc.w    $192,$18
  1208.         dc.w    $0109,$fffe,$100,$3600
  1209.         dc.w    $180,$4
  1210. bits2        dc.w    $e0,0,$e2,0,$e8,0,$ea,0
  1211.  
  1212. blockblur    ds.w    lines4*6
  1213.  
  1214.         dc.w    $2009,$fffe,$100,$1200,$180,$fff
  1215.         dc.w    $108,0
  1216.  
  1217. block3        ds.w    lines3*10
  1218.         dc.w    $ffff,$fffe
  1219.         dc.w    $ffff,$fffe
  1220.  
  1221. copperlist2    dc.w    $8e,$1b41,$90,$40f1,$92,$30,$94,$d8,$104,$24,$102,0,$96,$8220
  1222.         dc.w    $100,$4200,$108,44*4-44,$10a,44*4-44,$180,$015
  1223. spritelist2    dc.w    $120,0,$122,0,$124,0,$126,0,$128,0,$12a,0,$12c,0,$12e,0
  1224.         dc.w    $130,0,$132,0,$134,0,$136,0,$138,0,$13a,0,$13c,0,$13e,0
  1225.  
  1226.         Dc.w    $1a0,0,$1a2,$fff,$1a4,$ccc,$1a6,$888
  1227.         Dc.w    $1a8,$555,$1aa,$79f,$1ac,$38f,$1ae,$16d
  1228.         Dc.w    $1b0,$249,$1b2,$227,$1b4,$fcb,$1b6,$f98
  1229.         Dc.w    $1b8,$c76,$1ba,$f22,$1bc,$c00,$1be,$800
  1230.  
  1231. bits1_1        dc.w    $e0,0,$e2,0,$e4,0,$e6,0,$e8,0,$ea,0,$ec,0,$ee,0
  1232.  
  1233. logopal        dc.w    $180,$015,$182,$015,$184,$015,$186,$015,$188,$015,$18a,$015,$18c,$015,$18e,$015
  1234.         dc.w    $190,$015,$192,$015,$194,$015,$196,$015,$198,$015,$19a,$015,$19c,$015,$19e,$015        
  1235.  
  1236.         dc.w    $ffd9,$fffe,$100,$200
  1237.  
  1238. upline        dc.w    $1e09,$fffe,$180,$015
  1239.         dc.w    $1f09,$fffe,$180,$015
  1240.  
  1241.         dc.w    $2009,$fffe
  1242. cline        ds.l    59+1
  1243.  
  1244.         dc.w    $ffff,$fffe
  1245.         dc.w    $ffff,$fffe
  1246.  
  1247.         Section    'Non-chip',DATA
  1248.  
  1249. cols1        incbin    data/bigcopper_cols
  1250. cols2        incbin    data/smallcopper_cols
  1251. colzend        EVEN
  1252. sine        incbin    data/sine(512*300).dat
  1253.  
  1254.         Section    'GFX',DATA_C
  1255.  
  1256.         ds.l    (44*144)/4
  1257. fx_gfx1        incbin    gfx/sin1.352x144x1
  1258.         ds.l    (44*144)/4
  1259. fx_gfx2        incbin    gfx/sin2.352x144x1
  1260. font1        incbin    gfx/safont1.944x30x2.bit
  1261. font2        incbin    gfx/safont2.944x16x4.ilbm
  1262. logo        incbin    gfx/dc_logo352x85x4.ilbm
  1263. logoend        EVEN
  1264. spritedata    incbin    gfx/sonic.dat
  1265.  
  1266.         Section    'Music',DATA_C
  1267.  
  1268.         IFNE    music
  1269. mt_data        incbin    data/mod.shitty-beeper
  1270.         ENDC
  1271.  
  1272.         Section    'Screens',BSS_C
  1273.  
  1274. scrollbuffer    ds.l    (48*32*2)/4
  1275. charbuffer    ds.l    (44*4)*80
  1276. screen        ds.l    $4010
  1277.  
  1278.