home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Assembler / dse-src6.dms / in.adf / ANGELSRC.DMS / ANGELSRC.adf / SOURCES / trainer2 / angels1.s < prev    next >
Encoding:
Text File  |  1989-03-06  |  31.7 KB  |  1,425 lines

  1. ;* SOS *
  2. ;
  3. ;assemble it with the MASTERSEKA V1.6 (by CORSAIR !!!)
  4. ;and crunch it with DEFJAM PACKER.
  5.  
  6. ;save (with seka)        amiga+shift a (=assemble)
  7. ;                SEKA>        wi ram:intro    <ret>
  8. ;                BEG>        beg         <ret>
  9. ;                END>        end         <ret>
  10. ;
  11. ;crunch    (with defjam packer)    MEGA CRUNCH:            <ret>
  12. ;                LOW-MEM:    40000        <ret>
  13. ;                HIGH-MEM:    47000        <ret>
  14. ;                SCAN-WIDTH:    400        <ret>
  15. ;                LOAD TYPE:    o        <ret>
  16. ;                FILENAME:    ram:intro    <ret>
  17. ;                LOAD-ADRESSE:    40000        <ret>
  18. ;                LOAD TYPE:            <ret>
  19. ;                PRESS RETURN:            <ret>
  20. ;                JMP ADR:    40000        <ret>
  21. ;                FLAG REG:    10        <ret>
  22. ;                PRO-DECRUNCHER:            <ret>
  23. ;                FILENAME:    ram:intro    <ret>
  24. ;                SAVE AGAIN:            <ret>
  25. ;                RUN NOW:            <ret>
  26.  
  27. ;------ registres divers
  28.     music:        = 1        ;1=music on    0=music off
  29.     nb:        = 5
  30.     scry:        = 104
  31.     lg_col:        = 6*15*2
  32. ;------ registres bp
  33.     bp1:        = $60000
  34.     bp1a:        = bp1+[scry*48]
  35.     bp_log:        = $70000
  36.     vide:        = $78000
  37. ;------ registres sprites
  38.     spr1:        = $4e000
  39.     spr2:        = spr1+1000
  40. ;------
  41.     jmp        beg
  42.     org        $40000
  43.     load        $40000
  44.  
  45. ;************** macro
  46.  
  47. sin_mac:    macro
  48.         move    d3,d2
  49.         add    (a0)+,d2
  50.         move    #\1,$44(a6)
  51.         move    d1,$50+2(a6)
  52.         move    d2,$54+2(a6)
  53.         move    d2,$4c+2(a6)
  54.         move    d5,$58(a6)
  55.         endm
  56.  
  57. ;************** programme principal
  58.  
  59. beg:        lea    $dff000,a5
  60.         move    $02(a5),old_dma
  61.         move    $1c(a5),old_int
  62.         or    #$8000,old_dma
  63.         or    #$8000,old_int
  64.         move    #$7fff,$96(a5)
  65.         move    #$7fff,$9a(a5)
  66. ;===============
  67.         move    #%1100000000101000,$9a(a5)
  68. if music=1
  69.         bsr.l    bpinit
  70. endif
  71.         move.l    $6c.w,old_irq+2
  72.         move.l    #new_irq,$6c.w
  73.         move.l    #init,$80.w
  74.         trap    #0
  75.         move.l    old_irq+2(pc),$6c.w
  76. ;===============
  77.         lea    $dff000,a5
  78.         move.l    4.w,a6
  79.         move.l    (a6),a6
  80.         move.l    (a6),a1
  81.         move.l    38(a1),$80(a5)
  82.         move    #$000f,$96(a5)
  83.         move    old_dma(pc),$96(a5)
  84.         move    old_int(pc),$9a(a5)
  85.         bset    #1,$bfe001
  86.         moveq    #0,d0
  87.         rts
  88. ;===============
  89. old_dma:    dc.w    0
  90. old_int:    dc.w    0
  91.  
  92. ;************** irq
  93.  
  94. new_irq:    movem.l    d0-d7/a0-a6,-(sp)
  95. if music=1
  96.         bsr.L    bpmusic
  97. endif
  98.         bsr.l    anim_cop
  99.         movem.l    (sp)+,d0-d7/a0-a6
  100. old_irq:    jmp    0
  101.  
  102. ;************** init
  103.  
  104. init:        lea    end(pc),a0
  105.         lea    $7f000,a1
  106. vide_bp:    clr.l    (a0)+
  107.         cmp.l    a0,a1
  108.         bne.s    vide_bp
  109. ;===============
  110.         lea    sin(pc),a0
  111.         move    #200-1,d0
  112. init_sin:    move    (a0),d1
  113.         mulu    #48,d1
  114.         move    d1,400*3(a0)
  115.         move    d1,400*2(a0)
  116.         move    d1,400*1(a0)
  117.         move    d1,(a0)+
  118.         dbf    d0,init_sin
  119. ;===============
  120.         lea    copb1(pc),a0
  121.         lea    col1(pc),a1
  122.         lea    col2(pc),a2
  123.         lea    col3(pc),a3
  124.         lea    col4(pc),a4
  125.         lea    col5(pc),a5
  126.         move.l    #$2807fffe,d1
  127.         moveq    #0,d2
  128.         move    #$d5-1,d0
  129. init_copb1:    move.l    d1,(a0)+
  130.         move.l    #$1820000,(a0)+
  131.         move.l    #$1820000,(a0)+
  132.         move    #$182,(a0)+
  133.         move    (a1),(a0)+
  134.         move    #$184,(a0)+
  135.         move    (a2),(a0)+
  136.         move    #$188,(a0)+
  137.         move    (a3),(a0)+
  138.         move    #$190,(a0)+
  139.         move    (a4),(a0)+
  140.         move    #$1a0,(a0)+
  141.         move    (a5),(a0)+
  142.         add.l    #$01000000,d1
  143.         addq    #1,d2
  144.         cmp    #3,d2
  145.         bne.s    pas_nx_col
  146.         moveq    #0,d2
  147.         addq    #2,a1
  148.         addq    #2,a2
  149.         addq    #2,a3
  150.         addq    #2,a4
  151.         addq    #2,a5
  152. pas_nx_col:    dbf    d0,init_copb1
  153. ;===============
  154.         lea    copb1+4(pc),a0
  155.         move.l    #$f00000+[bp1a/$ffff],$00*32+0(a0)
  156.         move.l    #$f20000+[bp1a&$ffff],$00*32+4(a0)
  157.         move.l    #$e00000+[bp1a/$ffff],$11*32+0(a0)
  158.         move.l    #$e20000+[bp1a&$ffff],$11*32+4(a0)
  159.         move.l    #$e40000+[bp1a/$ffff],$22*32+0(a0)
  160.         move.l    #$e60000+[bp1a&$ffff],$22*32+4(a0)
  161.         move.l    #$e80000+[bp1a/$ffff],$33*32+0(a0)
  162.         move.l    #$ea0000+[bp1a&$ffff],$33*32+4(a0)
  163.         move.l    #$ec0000+[bp1a/$ffff],$44*32+0(a0)
  164.         move.l    #$ee0000+[bp1a&$ffff],$44*32+4(a0)
  165.         move.l    #$f00000+[bp1a/$ffff],$55*32+0(a0)
  166.         move.l    #$f20000+[bp1a&$ffff],$55*32+4(a0)
  167.         move.l    #$e00000+[bp1a/$ffff],$66*32+0(a0)
  168.         move.l    #$e20000+[bp1a&$ffff],$66*32+4(a0)
  169.         move.l    #$e40000+[bp1a/$ffff],$77*32+0(a0)
  170.         move.l    #$e60000+[bp1a&$ffff],$77*32+4(a0)
  171.         move.l    #$e80000+[bp1a/$ffff],$88*32+0(a0)
  172.         move.l    #$ea0000+[bp1a&$ffff],$88*32+4(a0)
  173.         move.l    #$ec0000+[bp1a/$ffff],$99*32+0(a0)
  174.         move.l    #$ee0000+[bp1a&$ffff],$99*32+4(a0)
  175.         move.l    #$f00000+[bp1a/$ffff],$aa*32+0(a0)
  176.         move.l    #$f20000+[bp1a&$ffff],$aa*32+4(a0)
  177.         move.l    #$e00000+[bp1a/$ffff],$bb*32+0(a0)
  178.         move.l    #$e20000+[bp1a&$ffff],$bb*32+4(a0)
  179.         move.l    #$e40000+[bp1a/$ffff],$cc*32+0(a0)
  180.         move.l    #$e60000+[bp1a&$ffff],$cc*32+4(a0)
  181. ;===============
  182.         lea    col_ht(pc),a0
  183.         lea    tx_col_ht(pc),a1
  184.         move    6*2-2(a1),d2
  185.         move    d2,d1
  186.         mulu    #15,d1
  187.         moveq    #6-1,d0
  188. cree_col_ht:    move    (a1)+,d4
  189.         move    d4,d3
  190.         sub    d2,d4
  191.         move    d3,d2
  192.         moveq    #15-1,d3
  193. calc_col_ht:    add    d4,d1
  194.         move    d1,6*15*2(a0)
  195.         move    d1,(a0)+
  196.         dbf    d3,calc_col_ht
  197.         dbf    d0,cree_col_ht
  198. ;===============
  199.         lea    spr1,a0
  200.         lea    spr2,a1
  201.         lea    spr+0(pc),a2
  202.         lea    spr+2(pc),a3
  203.         move.l    #$8cd19100,(a0)+
  204.         move.l    #$8cd99100,(a1)+
  205.         moveq    #5-1,d0
  206. init_spr:    move    (a2),(a0)+
  207.         move    (a3),(a1)+
  208.         move    (a2),(a0)+
  209.         move    (a3),(a1)+
  210.         addq    #4,a2
  211.         addq    #4,a3
  212.         dbf    d0,init_spr
  213.         clr.l    (a0)
  214.         clr.l    (a1)
  215. ;===============
  216.         move.l    #ht_cop3+2,cop_adr
  217.         move.l    #bs_cop3+2,cop_adr+4
  218.         move.l    #new_copper3,$dff080
  219.         move    #$87e0,$dff096
  220.  
  221. ;************** irq debut
  222.  
  223.         moveq    #$92-$27,d1
  224. irq_beg:    bsr    wait
  225.         subq.b    #1,ht_cop3-4
  226.         addq.b    #1,bs_cop3-4
  227.         addq.b    #1,spr1
  228.         addq.b    #1,spr1+2
  229.         addq.b    #1,spr2
  230.         addq.b    #1,spr2+2
  231.         subq    #1,d1
  232.         bne.s    irq_beg
  233. ;===============
  234.         move.l    #ht_cop1+2,cop_adr
  235.         move.l    #bs_cop1+2,cop_adr+4
  236.         move.l    #new_copper,$dff080
  237.  
  238. ;************** irq scroll
  239.  
  240. irq_scr:    move.l    $dff004,d0
  241.         and.l    #$1ff00,d0
  242.         cmp.l    #$10000,d0
  243.         bne.s    irq_scr
  244.         bsr.L    scr
  245.         btst    #6,$bfe001
  246.         bne.s    irq_scr
  247.  
  248. ;************** irq train
  249.  
  250. pages:        lea    bp1,a0
  251.         lea    bp1+[96*256],a1
  252. vide_bp2:    clr.l    (a0)+
  253.         cmp.l    a0,a1
  254.         bne.s    vide_bp2
  255.         move.l    pos_txt(pc),a2
  256.         cmp.b    #-1,(a2)
  257.         beq.L    f_irq_train
  258.         bsr.L    aff_page
  259. ;===============
  260.         bsr.L    train_prg
  261.         moveq    #48/2,d1
  262. irq_page_on:    bsr    wait
  263.         lea    adr_bp2+6(pc),a0
  264.         subq    #2,(a0)
  265.         subq    #2,8(a0)
  266.         subq    #1,d1
  267.         bne.s    irq_page_on
  268. ;===============
  269. irq_train:    cmp.l    #txt+[40*20],pos_txt
  270.         bne.s    pas_train
  271.         bsr.L    train_prg
  272. pas_train:    btst    #6,$bfe001
  273.         bne.s    irq_train
  274. ;===============
  275.         moveq    #48/2,d1
  276. irq_page_off:    bsr    wait
  277.         lea    adr_bp2+6(pc),a0
  278.         addq    #2,(a0)
  279.         addq    #2,8(a0)
  280.         subq    #1,d1
  281.         bne.s    irq_page_off
  282.         bra.L    pages
  283. ;===============
  284. wait:        move.l    $dff004,d0
  285.         and.l    #$1ff00,d0
  286.         cmp.l    #$08000,d0
  287.         bne.s    wait
  288. wait2:        move.l    $dff004,d0
  289.         and.l    #$1ff00,d0
  290.         cmp.l    #$10000,d0
  291.         bne.s    wait2
  292.         rts
  293.  
  294. ;************** irq fin
  295.  
  296. f_irq_train:    move.l    #ht_cop3+2,cop_adr
  297.         move.l    #bs_cop3+2,cop_adr+4
  298.         move.l    #new_copper3,$dff080
  299.         moveq    #$92-$27,d1
  300. irq_fin:    bsr    wait
  301.         addq.b    #1,ht_cop3-4
  302.         subq.b    #1,bs_cop3-4
  303.         subq.b    #1,spr1
  304.         subq.b    #1,spr1+2
  305.         subq.b    #1,spr2
  306.         subq.b    #1,spr2+2
  307.         subq    #1,d1
  308.         bne.s    irq_fin
  309.         rte
  310.  
  311. ;************** train programme
  312.  
  313. train_prg:    lea    train(pc),a2
  314.         move.b    #$5f,d2
  315.         move.b    $bfec01,d0
  316.         cmp.b    old_touche,d0
  317.         beq.s    pas_touche
  318.         move.b    d0,old_touche
  319. nx_key:        cmp    #-1,(a2)
  320.         beq.s    pas_touche
  321.         cmp.b    d2,d0
  322.         bne.s    pas_fkey
  323.         move    6(a2),d0
  324.         bpl.s    pas_on_off
  325.         eor    #1,6(a2)
  326.         bra.s    pas_fkey
  327. pas_on_off:    cmp    4(a2),d0
  328.         beq.s    max
  329.         add    #1,6(a2)
  330.         bra.s    pas_fkey
  331. max:        move    2(a2),d0
  332.         move    d0,6(a2)
  333. pas_fkey:    subq    #2,d2
  334.         addq    #8,a2
  335.         bra.s    nx_key
  336. ;===============
  337. pas_touche:    lea    train(pc),a2
  338. nx_menu:    cmp    #-1,(a2)
  339.         beq.s    dernier_menu
  340.         bsr.s    put_train
  341.         addq    #8,a2
  342.         bra.s    nx_menu
  343.         rts
  344. put_train:    lea    bp1+[96*9+38],a3
  345.         move    (a2),d0
  346.         mulu    #96*9,d0
  347.         add    d0,a3
  348.         move    6(a2),d0
  349.         cmp    #-1,d0
  350.         beq.s    menu_on
  351.         cmp    #-2,d0
  352.         beq.s    menu_off
  353.         moveq    #0,d2
  354.         move    d0,d2
  355.         divu    #100,d2
  356.         add    #'0',d2
  357.         bsr.L    aff_font
  358.         clr    d2
  359.         swap    d2
  360.         divu    #10,d2
  361.         add    #'0',d2
  362.         bsr.L    aff_font
  363.         clr    d2
  364.         swap    d2
  365.         add    #'0',d2
  366.         bsr.L    aff_font
  367. dernier_menu:    rts
  368. menu_on:    move.b    #' ',d2
  369.         bsr.L    aff_font
  370.         move.b    #'o',d2
  371.         bsr.L    aff_font
  372.         move.b    #'n',d2
  373.         bsr.L    aff_font
  374.         rts
  375. menu_off:    move.b    #'o',d2
  376.         bsr.L    aff_font
  377.         move.b    #'f',d2
  378.         bsr.s    aff_font
  379.         move.b    #'f',d2
  380.         bsr.s    aff_font
  381.         rts
  382.  
  383. ;************** affiche font
  384.  
  385. aff_page:    lea    copb2(pc),a0
  386.         lea    degra(pc),a1
  387.         move.l    #$3901fffe,d1
  388.         moveq    #20-1,d0
  389. init_copb2:    move.l    d1,(a0)+
  390.         move    #$182,(a0)+
  391.         move    (a1),(a0)
  392.         sub    #$555,(a0)+
  393.         move    #$184,(a0)+
  394.         move    (a1),(a0)+
  395.         move    #$186,(a0)+
  396.         move    (a1)+,(a0)+
  397.         add.l    #$09000000,d1
  398.         dbf    d0,init_copb2
  399. ;===============
  400.         move.l    #ht_cop2+2,cop_adr
  401.         move.l    #bs_cop2+2,cop_adr+4
  402.         move.l    #new_copper2,$dff080
  403. ;===============
  404.         lea    bp1+[96*18+4],a3
  405.         moveq    #20-1,d0
  406. nx_li:        moveq    #40-1,d1
  407. nx_car:        move.b    (a2)+,d2
  408.         bsr.s    aff_font
  409.         dbf    d1,nx_car
  410.         add    #96*8+8+48,a3
  411.         dbf    d0,nx_li
  412.         add.l    #40*20,pos_txt
  413.         rts
  414. ;===============
  415. aff_font:    lea    font2-1(pc),a0
  416.         lea    ordre2(pc),a1
  417. ch_font2:    addq    #1,a0
  418.         cmp.b    (a1)+,d2
  419.         bne.s    ch_font2
  420.         move.b    56*6(a0),96*6(a3)
  421.         move.b    56*5(a0),96*5(a3)
  422.         move.b    56*4(a0),96*4(a3)
  423.         move.b    56*3(a0),96*3(a3)
  424.         move.b    56*2(a0),96*2(a3)
  425.         move.b    56*1(a0),96*1(a3)
  426.         move.b    (a0),(a3)+
  427.         rts
  428.  
  429. ;************** anime copper
  430.  
  431. anim_cop:    move    pos_ht(pc),d1
  432.         addq    #2,d1
  433.         cmp    #lg_col,d1
  434.         bne.s    pas_f_ht
  435.         moveq    #0,d1
  436. pas_f_ht:    move    d1,pos_ht
  437.         move    pos_bs(pc),d2
  438.         subq    #2,d2
  439.         bne.s    pas_f_bs
  440.         move    #lg_col,d2
  441. pas_f_bs:    move    d2,pos_bs
  442. ;===============
  443.         move.l    cop_adr+4(pc),a0
  444.         move.l    cop_adr(pc),a1
  445.         lea    col_ht(pc),a2
  446.         lea    col_ht(pc),a3
  447.         add    d1,a2
  448.         add    d2,a3
  449.         moveq    #56-1,d0
  450. put_ht:        move    (a3)+,(a0)
  451.         move    (a2)+,(a1)
  452.         addq    #4,a0
  453.         addq    #4,a1
  454.         dbf    d0,put_ht
  455.         rts
  456.  
  457. ;************** scr
  458.  
  459. scr:        eor.b    #$01,bp_scr+1
  460.         lea    copb1+4(pc),a0
  461.         eor.b    #$01,$00*32+3(a0)
  462.         eor.b    #$01,$11*32+3(a0)
  463.         eor.b    #$01,$22*32+3(a0)
  464.         eor.b    #$01,$33*32+3(a0)
  465.         eor.b    #$01,$44*32+3(a0)
  466.         eor.b    #$01,$55*32+3(a0)
  467.         eor.b    #$01,$66*32+3(a0)
  468.         eor.b    #$01,$77*32+3(a0)
  469.         eor.b    #$01,$88*32+3(a0)
  470.         eor.b    #$01,$99*32+3(a0)
  471.         eor.b    #$01,$aa*32+3(a0)
  472.         eor.b    #$01,$bb*32+3(a0)
  473.         eor.b    #$01,$cc*32+3(a0)
  474.         eor.b    #$01,chg1+3
  475.         eor.b    #$01,chg2+3
  476.         eor.b    #$01,chg3+3
  477. ;===============
  478.         lea    $dff000,a6
  479.         move    pos_sin(pc),d0
  480.         addq    #2,d0
  481.         cmp    #200*2,d0
  482.         blo.s    pas_f_sin
  483.         sub    #200*2,d0
  484. pas_f_sin:    move    d0,pos_sin
  485.         move.l    #$09000000,$40(a6)
  486.         clr.l    $64(a6)
  487.         move.l    bp_scr(pc),$54(a6)
  488.         move    #52+16*64+24,$58(a6)
  489. ;===============
  490. pas_fin_col:    lea    sin(pc),a0
  491.         add    d0,a0
  492.         move.l    #$0dfc0000,$40(a6)
  493.         move.l    #$ffffffff,$44(a6)
  494.         move.l    #$002e002e,$60(a6)
  495.         move.l    #$002e002e,$64(a6)
  496.         move.l    #bp_log,d1
  497.         move.l    bp_scr(pc),d3
  498.         move.l    #16*64+1,d5
  499.         move.l    d1,$50(a6)
  500.         move.l    d3,$54(a6)
  501.         move.l    d3,$4c(a6)
  502.         moveq    #23-1,d4
  503. put_sin:    sin_mac    $8000
  504.         sin_mac    $4000
  505.         sin_mac    $2000
  506.         sin_mac    $1000
  507.         sin_mac    $0800
  508.         sin_mac    $0400
  509.         sin_mac    $0200
  510.         sin_mac    $0100
  511.         sin_mac    $0080
  512.         sin_mac    $0040
  513.         sin_mac    $0020
  514.         sin_mac    $0010
  515.         sin_mac    $0008
  516.         sin_mac    $0004
  517.         sin_mac    $0002
  518.         sin_mac    $0001
  519.         addq    #2,d1
  520.         addq    #2,d3
  521.         dbf    d4,put_sin
  522. ;===============
  523. ok_scr:        move.l    #$c9f00000,$40(a6)
  524.         move.l    #$ffffffff,$44(a6)
  525.         clr.l    $64(a6)
  526.         move.l    #bp_log,$50(a6)
  527.         move.l    #bp_log-2,$54(a6)
  528.         move    #17*64+24,$58(a6)
  529.         subq.b    #1,nb_scr
  530.         beq.s    nv_car
  531.         rts
  532. nv_car:        move.b    #16/4,nb_scr
  533.         move.l    compt(pc),a0
  534.         move.b    (a0)+,d0
  535.         bne.s    pas_fin_scr
  536.         lea    scrtxt(pc),a0
  537.         move.b    (a0)+,d0
  538. pas_fin_scr:    move.l    a0,compt
  539.         cmp.b    #'1',d0
  540.         beq.s    ptt_ft
  541.         cmp.b    #':',d0
  542.         beq.s    ptt_ft
  543.         cmp.b    #'.',d0
  544.         beq.s    ptt_ft
  545.         cmp.b    #',',d0
  546.         beq.s    ptt_ft
  547.         cmp.b    #'!',d0
  548.         beq.s    ptt_ft
  549.         cmp.b    #'"',d0
  550.         bne.s    pas_ptt_ft
  551. ptt_ft:        move.b    #8/4,nb_scr
  552. pas_ptt_ft:    lea    ordre(pc),a0
  553.         lea    adr_font-4(pc),a1
  554. ch_font:    addq    #4,a1
  555.         cmp.b    (a0)+,d0
  556.         bne.s    ch_font
  557.         move.l    #$09f00000,$40(a6)
  558.         move.l    #$ffffffff,$44(a6)
  559.         move.l    #$0026002e,$64(a6)
  560.         move.l    (a1),$50(a6)
  561.         move.l    #bp_log+46,$54(a6)
  562.         move    #16*64+1,$58(a6)
  563. fin_scr:    rts
  564.  
  565. ;************** brian postma replay routine
  566.  
  567. if music=1
  568.  
  569. bpinit:        lea    samples(pc),a0
  570.         lea    bpsong,a1
  571.         clr.b    numtables
  572.         cmp    #'v.',26(a1)
  573.         bne.s    bpnotv2
  574.         cmp.b    #'2',28(a1)
  575.         bne.s    bpnotv2
  576.         move.b    29(a1),numtables
  577. bpnotv2:    move.l    #512,d0
  578.         move    30(a1),d1
  579.         moveq    #1,d2
  580.         mulu    #4,d1
  581.         subq    #1,d1
  582. findhighest:    cmp    (a1,d0.w),d2
  583.         bge.s    nothigher
  584.         move    (a1,d0.w),d2
  585. nothigher:    addq.l    #4,d0
  586.         dbf    d1,findhighest
  587.         move    30(a1),d1
  588.         mulu    #16,d1
  589.         move.l    #512,d0
  590.         mulu    #48,d2
  591.         add.l    d2,d0
  592.         add.l    d1,d0
  593.         add.l    #bpsong,d0
  594.         move.l    d0,tables
  595.         moveq    #0,d1
  596.         move.b    numtables,d1
  597.         lsl.l    #6,d1
  598.         add.l    d1,d0
  599.         move.l    #14,d1
  600.         add.l    #32,a1
  601. initloop:    move.l    d0,(a0)+
  602.         cmp.b    #$ff,(a1)
  603.         beq.s    bpissynth
  604.         move    24(a1),d2
  605.         mulu    #2,d2
  606.         add.l    d2,d0
  607. bpissynth:    add.l    #32,a1
  608.         dbf    d1,initloop
  609.         rts
  610. bpmusic:    bsr.l    bpsynth
  611.         subq.b    #1,arpcount
  612.         moveq    #3,d0
  613.         lea    bpcurrent(pc),a0
  614.         move.l    #$dff0a0,a1
  615. bploop1:    move.b    12(a0),d4
  616.         ext    d4
  617.         add    d4,(a0)
  618.         tst.b    $1e(a0)
  619.         bne.s    bplfo
  620.         move    (a0),6(a1)
  621. bplfo:        move.l    4(a0),(a1)
  622.         move.w    8(a0),4(a1)
  623.         tst.b    11(a0)
  624.         bne.s    bpdoarp
  625.         tst.b    13(a0)
  626.         beq.s    not2
  627. bpdoarp:    tst.b    arpcount
  628.         bne.s    not0
  629.         move.b    11(a0),d3
  630.         move.b    13(a0),d4
  631.         and    #240,d4
  632.         and    #240,d3
  633.         lsr    #4,d3
  634.         lsr    #4,d4
  635.         add    d3,d4
  636.         add.b    10(a0),d4
  637.         bsr.l    bpplayarp
  638.         bra.s    not2
  639. not0:        cmp.b    #1,arpcount 
  640.         bne.s    not1
  641.         move.b    11(a0),d3
  642.         move.b    13(a0),d4
  643.         and    #15,d3
  644.         and    #15,d4
  645.         add    d3,d4
  646.         add.b    10(a0),d4
  647.         bsr.l    bpplayarp
  648.         bra.s    not2
  649. not1:        move.b    10(a0),d4
  650.         bsr.l    bpplayarp
  651. not2:        lea    $10(a1),a1
  652.         lea    $20(a0),a0
  653.         dbf    d0,bploop1
  654.         tst.b    arpcount
  655.         bne.s    arpnotzero
  656.         move.b    #3,arpcount
  657. arpnotzero:    subq.b    #1,bpcount
  658.         beq.s    bpskip1
  659.         rts
  660. bpskip1:    move.b    bpdelay,bpcount
  661. bpplay:        bsr.s    bpnext
  662.         move    dma,$dff096
  663.         moveq    #3,d0
  664.         move.l    #$dff0a0,a1
  665.         moveq    #1,d1
  666.         lea    bpcurrent(pc),a2
  667.         lea    bpbuffer(pc),a5
  668. bploop2:    btst    #15,(a2)
  669.         beq.s    bpskip7
  670.         bsr.l    bpplayit
  671. bpskip7:    asl    #1,d1
  672.         lea    $10(a1),a1
  673.         lea    $20(a2),a2
  674.         lea    $24(a5),a5
  675.         dbf    d0,bploop2
  676.         rts
  677. bpnext:        clr    dma
  678.         lea    bpsong,a0
  679.         move.l    #$dff0a0,a3
  680.         moveq    #3,d0
  681.         moveq    #1,d7
  682.         lea    bpcurrent(pc),a1
  683. bploop3:    moveq    #0,d1
  684.         move    bpstep,d1
  685.         lsl    #4,d1
  686.         move.l    d0,d2
  687.         lsl.l    #2,d2
  688.         add.l    d2,d1
  689.         add.l    #512,d1
  690.         move    (a0,d1.w),d2
  691.         move.b    2(a0,d1.w),st
  692.         move.b    3(a0,d1.w),tr
  693.         subq    #1,d2
  694.         mulu    #48,d2
  695.         moveq    #0,d3
  696.         move    30(a0),d3
  697.         lsl    #4,d3
  698.         add.l    d2,d3
  699.         move.l    #$00000200,d4
  700.         move.b    bppatcount,d4
  701.         add.l    d3,d4
  702.         move.l    d4,a2
  703.         add.l    a0,a2
  704.         moveq    #0,d3
  705.         move.b    (a2),d3
  706.         tst.b    d3
  707.         bne.s    bpskip4
  708.         bra.l    bpoptionals
  709. bpskip4:    clr    12(a1)
  710.         move.b    1(a2),d4
  711.         and.b    #15,d4
  712.         cmp.b    #10,d4
  713.         bne.s    bp_do1
  714.         move.b    2(a2),d4
  715.         and.b    #240,d4
  716.         bne.s    bp_not1
  717. bp_do1:        add.b    tr,d3
  718.         ext    d3
  719. bp_not1:    move.b    d3,10(a1)
  720.         lea    bpper(pc),a4
  721.         lsl    #1,d3
  722.         move    -2(a4,d3.w),(a1)
  723.         bset    #15,(a1)
  724.         move.b    #$ff,2(a1)
  725.         moveq    #0,d3
  726.         move.b    1(a2),d3
  727.         lsr.b    #4,d3
  728.         and.b    #15,d3
  729.         tst.b    d3
  730.         bne.s    bpskip5
  731.         move.b    3(a1),d3
  732. bpskip5:     move.b    1(a2),d4
  733.         and.b    #15,d4
  734.         cmp.b    #10,d4
  735.         bne.s    bp_do2
  736.         move.b    2(a2),d4
  737.         and.b    #15,d4
  738.         bne.s    bp_not2
  739. bp_do2:        add.b    st,d3
  740. bp_not2:    cmp    #1,8(a1)
  741.         beq.s    bpsamplechange
  742.         cmp.b    3(a1),d3
  743.         beq.s    bpoptionals
  744. bpsamplechange:    move.b    d3,3(a1)
  745.         or    d7,dma
  746. bpoptionals:     moveq    #0,d3
  747.         moveq    #0,d4
  748.         move.b    1(a2),d3
  749.         and.b    #15,d3
  750.         move.b    2(a2),d4
  751.         cmp.b    #0,d3
  752.         bne.s    notopt0
  753.         move.b    d4,11(a1)
  754. notopt0:    cmp.b    #1,d3
  755.         bne.s    bpskip3
  756.         move    d4,8(a3)
  757.         move.b    d4,2(a1)
  758. bpskip3:    cmp.b    #2,d3
  759.         bne.s    bpskip9
  760.         move.b    d4,bpcount
  761.         move.b    d4,bpdelay
  762. bpskip9:    cmpi.b    #3,d3
  763.         bne.s    bpskipa
  764.         tst.b    d4
  765.         bne.s    bpskipb
  766.         bset    #1,$bfe001
  767.         bra.s    bpskip2
  768. bpskipb:    bclr    #1,$bfe001
  769. bpskipa:    cmp.b    #4,d3
  770.         bne.s    noportup
  771.         sub    d4,(a1)
  772.         clr.b    11(a1)
  773. noportup:    cmp.b    #5,d3
  774.         bne.s    noportdn
  775.         add    d4,(a1)
  776.         clr.b    11(a1)
  777. noportdn:    cmp.b    #6,d3
  778.         bne.s    notopt6
  779.         move.b    d4,bprepcount
  780. notopt6:    cmp.b    #7,d3
  781.         bne.s    notopt7
  782.         subq.b    #1,bprepcount
  783.         beq.s    notopt7
  784.         move    d4,bpstep
  785. notopt7:    cmp.b    #8,d3
  786.         bne.s    notopt8
  787.         move.b    d4,12(a1)
  788. notopt8:    cmp.b    #9,d3
  789.         bne.s    notopt9
  790.         move.b    d4,13(a1)
  791. notopt9:
  792. bpskip2:    lea    $10(a3),a3
  793.         lea    $20(a1),a1
  794.         asl    #1,d7
  795.         dbf    d0,bploop3
  796.         addq.b    #3,bppatcount
  797.         cmpi.b    #48,bppatcount
  798.         bne.s    bpskip8
  799.         move.b    #0,bppatcount
  800.         addq    #1,bpstep
  801.         lea    bpsong,a0
  802.         move    30(a0),d1
  803.         cmp    bpstep,d1
  804.         bne.s    bpskip8
  805.         move    #0,bpstep
  806. bpskip8:    rts
  807. bpplayit:    bclr    #15,(a2)
  808.         tst.l    (a5)
  809.         beq.s    noeg1
  810.         moveq    #0,d3
  811.         move.l    (a5),a4
  812.         moveq    #7,d7
  813. eg1loop:    move.l    4(a5,d3.w),(a4)+
  814.         addq    #4,d3
  815.         dbf    d7,eg1loop
  816. noeg1:        move    (a2),6(a1)
  817.         moveq.l    #0,d7
  818.         move.b    3(a2),d7
  819.         move.l    d7,d6
  820.         lsl.l    #5,d7
  821.         lea    bpsong,a3
  822.         cmp.b    #$ff,(a3,d7.w)
  823.         beq.s    bpplaysynthetic
  824.         clr.l    (a5)
  825.         clr.b    $1a(a2)
  826.         clr    $1e(a2)
  827.         add.l    #24,d7
  828.         lsl.l    #2,d6
  829.         move.l    #samples,a4
  830.         move.l    -4(a4,d6),d4
  831.         beq.s    bp_nosamp
  832.         move.l    d4,(a1)
  833.         move    (a3,d7),4(a1)
  834.         move.b    2(a2),9(a1)
  835.         cmpi.b    #$ff,2(a2)
  836.         bne.s    skipxx
  837.         move    6(a3,d7),8(a1)
  838. skipxx:     move    4(a3,d7),8(a2)
  839.         moveq    #0,d6
  840.         move    2(a3,d7),d6
  841.         add.l    d6,d4
  842.         move.l    d4,4(a2)
  843.         cmp    #1,8(a2)
  844.         bne.s    bpskip6
  845. bp_nosamp:    move.l    #null,4(a2)
  846.         bra.s    bpskip10
  847. bpskip6:    move    8(a2),4(a1)
  848.         move.l    4(a2),(a1)
  849. bpskip10:    or    #$8000,d1
  850.         move    d1,$dff096
  851.         rts
  852. bpplaysynthetic:move.b    #$1,$1a(a2)
  853.         clr    $e(a2)
  854.         clr    $10(a2)
  855.         clr    $12(a2)
  856.         move    22(a3,d7.w),$14(a2)
  857.         addq    #1,$14(a2)
  858.         move    14(a3,d7.w),$16(a2)
  859.         addq    #1,$16(a2)
  860.         move    #1,$18(a2)
  861.         move.b    17(a3,d7.w),$1d(a2)
  862.         move.b    9(a3,d7.w),$1e(a2)
  863.         move.b    4(a3,d7.w),$1f(a2)
  864.         move.b    19(a3,d7.w),$1c(a2)
  865.         move.l    tables,a4
  866.         moveq    #0,d3
  867.         move.b    1(a3,d7.w),d3
  868.         lsl.l    #6,d3
  869.         add.l    d3,a4
  870.         move.l    a4,(a1)
  871.         move.l    a4,4(a2)
  872.         move    2(a3,d7.w),4(a1)
  873.         move    2(a3,d7.w),8(a2)
  874.         tst.b    4(a3,d7.w)
  875.         beq.s    bpadsroff
  876.         move.l    tables,a4
  877.         moveq.l    #0,d3
  878.         move.b    5(a3,d7.w),d3
  879.         lsl.l    #6,d3
  880.         add.l    d3,a4
  881.         moveq    #0,d3
  882.         move.b    (a4),d3
  883.         add.b    #128,d3
  884.         lsr    #2,d3
  885.         cmp.b    #$ff,2(a2)
  886.         bne.s    bpskip99
  887.         move.b    25(a3,d7.w),2(a2)
  888. bpskip99:    moveq    #0,d4
  889.         move.b    2(a2),d4
  890.         mulu    d4,d3
  891.         lsr    #6,d3
  892.         move    d3,8(a1)
  893.         bra.s    bpflipper
  894. bpadsroff:    move.b    2(a2),9(a1)
  895.         cmp.b    #$ff,2(a2)
  896.         bne.s    bpflipper
  897.         move.b    25(a3,d7.w),9(a1)
  898. bpflipper:    move.l    4(a2),a4
  899.         move.l    a4,(a5)
  900.         moveq    #0,d3
  901.         moveq    #7,d4
  902. eg2loop:    move.l    (a4,d3.w),4(a5,d3.w)
  903.         addq    #4,d3
  904.         dbf    d4,eg2loop
  905.         tst.b    17(a3,d7.w)
  906.         beq.l    bpskip10
  907.         tst.b    19(a3,d7.w)
  908.         beq.l    bpskip10
  909.         moveq    #0,d3
  910.         move.b    19(a3,d7.w),d3
  911.         lsr.l    #3,d3
  912.         move.b    d3,$1c(a2)
  913.         subq.l    #1,d3
  914. eg3loop:    neg.b    (a4)+
  915.         dbf    d3,eg3loop
  916.         bra.l    bpskip10
  917. bpplayarp:    lea    bpper(pc),a4
  918.         ext    d4
  919.         asl    #1,d4
  920.         move    -2(a4,d4.w),6(a1)
  921.         rts
  922. bpsynth:    move.l    #3,d0
  923.         lea    bpcurrent(pc),a2
  924.         lea    $dff0a0,a1
  925.         lea    bpsong,a3
  926.         lea    bpbuffer(pc),a5
  927. bpsynthloop:    tst.b    $1a(a2)
  928.         beq.s    bpnosynth
  929.         bsr.s    bpyessynth
  930. bpnosynth:    lea    $24(a5),a5
  931.         lea    $20(a2),a2
  932.         lea    $10(a1),a1
  933.         dbf    d0,bpsynthloop
  934.         rts
  935. bpyessynth:    moveq    #0,d7
  936.         move.b    3(a2),d7
  937.         lsl    #5,d7
  938.         tst.b    $1f(a2)
  939.         beq.s    bpendadsr
  940.         subq    #1,$18(a2)
  941.         bne.s    bpendadsr
  942.         moveq    #0,d3
  943.         move.b    8(a3,d7.w),d3
  944.         move    d3,$18(a2)
  945.         move.l    tables,a4
  946.         move.b    5(a3,d7.w),d3
  947.         lsl.l    #6,d3
  948.         add.l    d3,a4
  949.         move    $12(a2),d3
  950.         moveq    #0,d4
  951.         move.b    (a4,d3.w),d4
  952.         add.b    #128,d4
  953.         lsr    #2,d4
  954.         moveq    #0,d3
  955.         move.b    2(a2),d3
  956.         mulu    d3,d4
  957.         lsr    #6,d4
  958.         move    d4,8(a1)
  959.         addq    #1,$12(a2)
  960.         move    6(a3,d7.w),d4
  961.         cmp    $12(a2),d4
  962.         bne.s    bpendadsr
  963.         clr    $12(a2)
  964.         cmp.b    #1,$1f(a2)
  965.         bne.s    bpendadsr
  966.         clr.b    $1f(a2)
  967. bpendadsr:    tst.b    $1e(a2)
  968.         beq.s    bpendlfo
  969.         subq    #1,$16(a2)
  970.         bne.s    bpendlfo
  971.         moveq    #0,d3
  972.         move.b    16(a3,d7.w),d3
  973.         move    d3,$16(a2)
  974.         move.l    tables,a4
  975.         move.b    10(a3,d7.w),d3
  976.         lsl.l    #6,d3
  977.         add.l    d3,a4
  978.         move    $10(a2),d3
  979.         moveq    #0,d4
  980.         move.b    (a4,d3.w),d4
  981.         ext    d4
  982.         ext.l    d4
  983.         moveq    #0,d5
  984.         move.b    11(a3,d7.w),d5
  985.         tst.b    d5
  986.         beq.s    bpnotx
  987.         divs    d5,d4
  988. bpnotx:        move    (a2),d5
  989.         add    d4,d5
  990.         move    d5,6(a1)
  991.         addq    #1,$10(a2)
  992.         move    12(a3,d7.w),d3
  993.         cmp    $10(a2),d3
  994.         bne.s    bpendlfo
  995.         clr    $10(a2)
  996.         cmp.b    #1,$1e(a2)
  997.         bne.s    bpendlfo
  998.         clr.b    $1e(a2)
  999. bpendlfo:    tst.b    $1d(a2)
  1000.         beq.l    bpendeg
  1001.         subq    #1,$14(a2)
  1002.         bne.l    bpendeg
  1003.         tst.l    (a5)
  1004.         beq.s    bpendeg
  1005.         moveq.l    #0,d3
  1006.         move.b    24(a3,d7.w),d3
  1007.         move    d3,$14(a2)
  1008.         move.l    tables,a4
  1009.         move.b    18(a3,d7.w),d3
  1010.         lsl.l    #6,d3
  1011.         add.l    d3,a4
  1012.         move    $e(a2),d3
  1013.         moveq    #0,d4
  1014.         move.b    (a4,d3.w),d4
  1015.         move.l    (a5),a4
  1016.         add.b    #128,d4
  1017.         lsr.l    #3,d4
  1018.         moveq    #0,d3
  1019.         move.b    $1c(a2),d3
  1020.         move.b    d4,$1c(a2)
  1021.         add.l    d3,a4
  1022.         move.l    a5,a6
  1023.         add.l    d3,a6
  1024.         addq.l    #4,a6
  1025.         cmp.b    d3,d4
  1026.         beq.s    bpnexteg
  1027.         bgt.s    bpishigh
  1028. bpislow:    sub.l    d4,d3
  1029.         subq.l    #1,d3
  1030. bpegloop1a:    move.b    -(a6),d4
  1031.         move.b    d4,-(a4)
  1032.         dbf    d3,bpegloop1a
  1033.         bra.s    bpnexteg
  1034. bpishigh:    sub.l    d3,d4
  1035.         subq.l    #1,d4
  1036. bpegloop1b:    move.b    (a6)+,d3
  1037.         neg.b    d3
  1038.         move.b    d3,(a4)+
  1039.         dbf    d4,bpegloop1b
  1040. bpnexteg:    addq    #1,$e(a2)
  1041.         move    20(a3,d7.w),d3
  1042.         cmp    $e(a2),d3
  1043.         bne.s    bpendeg
  1044.         clr    $e(a2)
  1045.         cmp.b    #1,$1d(a2)
  1046.         bne.s    bpendeg
  1047.         clr.b    $1d(a2)
  1048. bpendeg:    rts
  1049.  
  1050. ;************** donnees music
  1051.  
  1052. null:        dc.w    0
  1053. bpcurrent:    dc.w    0,0
  1054.         dc.l    null
  1055.         dc.w    1
  1056.         dc.b    0,0,0,0
  1057.         dc.w    0,0,0
  1058.         dc.w    0,0,0
  1059.         dc.b    0,0
  1060.         dc.b    0,0
  1061.         dc.b    0,0
  1062.         dc.w    0,0
  1063.         dc.l    null
  1064.         dc.w    1,0,0
  1065.         dc.w    0,0,0,0,0,0,0,0,0
  1066.         dc.w    0,0
  1067.         dc.l    null
  1068.         dc.w    1,0,0
  1069.         dc.w    0,0,0,0,0,0,0,0,0
  1070.         dc.w    0,0
  1071.         dc.l    null
  1072.         dc.w    1,0,0
  1073.         dc.w    0,0,0,0,0,0,0,0,0
  1074. bpstep:        dc.w    0
  1075. bppatcount:    dc.b    0
  1076. st:        dc.b    0
  1077. tr:        dc.b    0
  1078. bpcount:    dc.b    1
  1079. bpdelay:    dc.b    6
  1080. arpcount:    dc.b    1
  1081. bprepcount:    dc.b    1
  1082. numtables:    dc.b    0
  1083.         even
  1084. dma:        dc.w    0
  1085. tables:        dc.l    0
  1086. bpbuffer:    blk.b    144,0
  1087.         dc.w    6848,6464,6080,5760,5440,5120,4832,4576,4320,4064,3840,3616
  1088.         dc.w    3424,3232,3040,2880,2720,2560,2416,2288,2160,2032,1920,1808
  1089.         dc.w    1712,1616,1520,1440,1360,1280,1208,1144,1080,1016,0960,0904
  1090. bpper:        dc.w    0856,0808,0760,0720,0680,0640,0604,0572,0540,0508,0480,0452
  1091.         dc.w    0428,0404,0380,0360,0340,0320,0302,0286,0270,0254,0240,0226
  1092.         dc.w    0214,0202,0190,0180,0170,0160,0151,0143,0135,0127,0120,0113
  1093.         dc.w    0107,0101,0095,0090,0085,0080,0076,0072,0068,0064,0060,0057
  1094. samples:    blk.l    15,0
  1095.  
  1096. endif
  1097.  
  1098. ;************** copper list
  1099.  
  1100. new_copper:    dc.l    $1800111,$1820000,$1840000,$1860000    ;00
  1101.         dc.l    $1880000,$18a0000,$18c0000,$18e0000    ;04
  1102.         dc.l    $1900000,$1920000,$1940000,$1960000    ;08
  1103.         dc.l    $1980000,$19a0000,$19c0000,$19e0000    ;12
  1104.         dc.l    $1a00000,$1a20000,$1a40000,$1a60fff    ;16
  1105.         dc.l    $1a80000,$1aa0000,$1ac0000,$1ae0000    ;20
  1106.         dc.l    $1b00000,$1b20000,$1b40000,$1b60000    ;24
  1107.         dc.l    $1b80000,$1ba0000,$1bc0000,$1be0000    ;28
  1108. ;===============
  1109.         dc.w    $120,spr1/$ffff,$122,spr1
  1110.         dc.w    $124,spr2/$ffff,$126,spr2
  1111.         dc.l    $1280000,$12a0000,$12c0000,$12e0000
  1112.         dc.l    $1300000,$1320000,$1340000,$1360000
  1113.         dc.l    $1380000,$13a0000,$13c0000,$13e0000
  1114. ;===============
  1115.         dc.l    $08e2881,$090fdd1,$0920028,$09400d8
  1116.         dc.l    $1005000,$1020000,$10400ff,$1080002
  1117.         dc.l    $10a0002
  1118. ;===============
  1119.         dc.w    $e0,vide/$ffff,$e2,vide
  1120. chg1:        dc.w    $e4,bp1a/$ffff,$e6,bp1a+[51*48]
  1121. chg2:        dc.w    $e8,bp1a/$ffff,$ea,bp1a+[34*48]
  1122. chg3:        dc.w    $ec,bp1a/$ffff,$ee,bp1a+[17*48]
  1123.         dc.l    $2707fffe
  1124. ht_cop1:    blk.l    56,$1800000
  1125.         dc.l    $1800000
  1126. ;===============
  1127. copb1:        blk.l    $d5*8    ;bp_hi,bp_lo,pos,col0,col1,col2,col4,col8,col16
  1128.         dc.l    $fd07fffe
  1129. bs_cop1:    blk.l    56,$1800000
  1130.         dc.l    $1800111
  1131.         dc.l    -2
  1132.  
  1133. ;************** copper list2
  1134.  
  1135. new_copper2:    dc.l    $1800111,$1820888,$1840fff,$1860fff    ;00
  1136.         dc.w    $120,spr1/$ffff,$122,spr1
  1137.         dc.w    $124,spr2/$ffff,$126,spr2
  1138.         dc.l    $1280000,$12a0000,$12c0000,$12e0000
  1139.         dc.l    $1300000,$1320000,$1340000,$1360000
  1140.         dc.l    $1380000,$13a0000,$13c0000,$13e0000
  1141. ;===============
  1142.         dc.l    $08e2881,$090fdd1,$0920028,$09400d8
  1143.         dc.l    $1002000,$1020001,$10400ff,$1080032
  1144.         dc.l    $10a0032
  1145. ;===============
  1146. adr_bp2:    dc.w    $e0,bp1/$ffff,$e2,bp1+48
  1147.         dc.w    $e4,bp1/$ffff,$e6,bp1+96+48
  1148.         dc.l    $2707fffe
  1149. ht_cop2:    blk.l    56,$1800000
  1150.         dc.l    $1800000
  1151. copb2:        blk.l    20*4
  1152.         dc.l    $fd07fffe
  1153. bs_cop2:    blk.l    56,$1800000
  1154.         dc.l    $1800111
  1155.         dc.l    -2
  1156.  
  1157. ;************** copper list3
  1158.  
  1159. new_copper3:    dc.l    $1800111,$1820888,$1840fff,$1860fff    ;00
  1160.         dc.l    $1a00000,$1a20000,$1a40000,$1a60fff    ;16
  1161.         dc.w    $120,spr1/$ffff,$122,spr1
  1162.         dc.w    $124,spr2/$ffff,$126,spr2
  1163.         dc.l    $1280000,$12a0000,$12c0000,$12e0000
  1164.         dc.l    $1300000,$1320000,$1340000,$1360000
  1165.         dc.l    $1380000,$13a0000,$13c0000,$13e0000
  1166. ;===============
  1167.         dc.l    $08e2881,$090fdd1,$0920028,$09400d8
  1168.         dc.l    $1001000,$1020001,$10400ff,$1080002
  1169.         dc.l    $10a0002
  1170. ;===============
  1171.         dc.w    $e0,bp1/$ffff,$e2,bp1
  1172.         dc.l    $9207fffe
  1173. ht_cop3:    blk.l    56,$1800000
  1174.         dc.l    $1800000
  1175.         dc.l    $9207fffe
  1176. bs_cop3:    blk.l    56,$1800000
  1177.         dc.l    $1800111
  1178.         dc.l    -2
  1179.  
  1180. ;************** donnees divers
  1181.  
  1182.         even
  1183. spr:        dc.l    %11110111101111011110111101011110
  1184.         dc.l    %10000100101001010000100101010010
  1185.         dc.l    %10000100101111011110111101011110
  1186.         dc.l    %10000100101010000010100101010100
  1187.         dc.l    %11110111101001011110100101010010
  1188. degra:        dc.w    $b85,$c96,$da7,$eb8,$fc9,$fda,$feb,$ffc,$ffd,$ffe
  1189.         dc.w    $eff,$dff,$cff,$bef,$adf,$9cf,$8be,$7ad,$69c,$58b
  1190. cop_adr:    dc.l    ht_cop3+2
  1191.         dc.l    bs_cop3+2
  1192. old_touche:    dc.b    0
  1193. ;===============
  1194.         even
  1195. bp_scr:        dc.l    bp1a+$10000
  1196. pos_sin:    dc.w    0
  1197. sin:        dc.w    052,052,052,052,052,052,052,051,051,051
  1198.         dc.w    051,050,050,050,050,049,049,048,048,047
  1199.         dc.w    047,046,046,045,045,044,044,043,042,042
  1200.         dc.w    041,041,040,039,038,038,037,036,035,035
  1201.         dc.w    034,033,032,031,031,030,029,028,027,027
  1202.         dc.w    026,025,024,023,023,022,021,020,019,019
  1203.         dc.w    018,017,016,015,015,014,013,013,012,011
  1204.         dc.w    010,010,009,009,008,007,007,006,006,005
  1205.         dc.w    005,004,004,003,003,003,002,002,002,001
  1206.         dc.w    001,001,001,001,000,000,000,000,000,000
  1207.         dc.w    000,000,000,000,000,000,001,001,001,001
  1208.         dc.w    001,002,002,002,003,003,003,004,004,005
  1209.         dc.w    005,006,006,007,007,008,009,009,010,010
  1210.         dc.w    011,012,013,013,014,015,015,016,017,018
  1211.         dc.w    019,019,020,021,022,023,023,024,025,026
  1212.         dc.w    027,027,028,029,030,031,031,032,033,034
  1213.         dc.w    035,035,036,037,038,038,039,040,041,041
  1214.         dc.w    042,042,043,044,044,045,045,046,046,047
  1215.         dc.w    047,048,048,049,049,050,050,050,050,051
  1216.         dc.w    051,051,051,052,052,052,052,052,052,052
  1217.         blk.w    200*3
  1218. ;===============
  1219. pos_ht:        dc.w    0
  1220. pos_bs:        dc.w    2
  1221. tx_col_ht:    dc.w    $001,$011,$010,$110,$100,$101
  1222. col_ht:        blk.w    6*15*2
  1223.  
  1224. ;************** donnees colors
  1225.  
  1226. col1:        ;vert
  1227.         blk.w    5,$242
  1228.         dc.w    $242,$353,$464,$575,$686,$797,$8a8,$9b9
  1229.         dc.w    $aca,$bdb,$cec,$dfd,$cec,$bdb,$aca,$9b9
  1230.         dc.w    $8a8,$797,$686,$575,$464,$353,$242
  1231.         blk.w    nb+1,$242
  1232.         dc.w    $242,$353,$464,$575,$686,$797,$8a8,$9b9
  1233.         dc.w    $aca,$bdb,$cec,$dfd,$cec,$bdb,$aca,$9b9
  1234.         dc.w    $8a8,$797,$686,$575,$464,$353,$242
  1235.         blk.w    nb,$242
  1236.         dc.w    $242,$353,$464,$575,$686,$797,$8a8,$9b9
  1237.         dc.w    $aca,$bdb,$cec,$dfd,$cec,$bdb,$aca,$9b9
  1238.         dc.w    $8a8,$797,$686,$575,$464,$353,$242
  1239. col2:        ;bleu 2
  1240.         dc.w    $789,$678,$567,$456,$345,$234
  1241.         blk.w    nb,$234
  1242.         dc.w    $234,$345,$456,$567,$678,$789,$89a,$9ab
  1243.         dc.w    $abc,$bcd,$cde,$def,$cde,$bcd,$abc,$9ab
  1244.         dc.w    $89a,$789,$678,$567,$456,$345,$234
  1245.         blk.w    nb,$234
  1246.         dc.w    $234,$345,$456,$567,$678,$789,$89a,$9ab
  1247.         dc.w    $abc,$bcd,$cde,$def,$cde,$bcd,$abc,$9ab
  1248.         dc.w    $89a,$789,$678,$567,$456,$345,$234
  1249.         blk.w    nb+1,$234
  1250.         dc.w    $234,$345,$456,$567,$678,$789,$89a,$9ab
  1251.         dc.w    $abc,$bcd,$cde,$def,$cde,$bcd,$abc,$9ab
  1252.         dc.w    $89a,$789,$678,$567,$456,$345,$234
  1253. col3:        ;beige
  1254.         dc.w    $edc,$dcb,$cba,$ba9
  1255.         dc.w    $a98,$987,$876,$765,$654,$543,$432
  1256.         blk.w    nb+1,$432
  1257.         dc.w    $432,$543,$654,$765,$876,$987,$a98,$ba9
  1258.         dc.w    $cba,$dcb,$edc,$fed,$edc,$dcb,$cba,$ba9
  1259.         dc.w    $a98,$987,$876,$765,$654,$543,$432
  1260.         blk.w    nb,$432
  1261.         dc.w    $432,$543,$654,$765,$876,$987,$a98,$ba9
  1262.         dc.w    $cba,$dcb,$edc,$fed,$edc,$dcb,$cba,$ba9
  1263.         dc.w    $a98,$987,$876,$765,$654,$543,$432
  1264.         blk.w    nb,$432
  1265.         dc.w    $432,$543,$654,$765,$876,$987,$a98,$ba9
  1266.         dc.w    $cba,$dcb,$edc,$fed,$edc,$dcb,$cba,$ba9
  1267.         dc.w    $a98,$987,$876,$765,$654,$543,$432
  1268. col4:        ;rose
  1269.         dc.w    $a89,$b9a
  1270.         dc.w    $cab,$dbc,$ecd,$fde,$ecd,$dbc,$cab,$b9a
  1271.         dc.w    $a89,$978,$867,$756,$645,$534,$423
  1272.         blk.w    nb,$423
  1273.         dc.w    $423,$534,$645,$756,$867,$978,$a89,$b9a
  1274.         dc.w    $cab,$dbc,$ecd,$fde,$ecd,$dbc,$cab,$b9a
  1275.         dc.w    $a89,$978,$867,$756,$645,$534,$423
  1276.         blk.w    nb+1,$423
  1277.         dc.w    $423,$534,$645,$756,$867,$978,$a89,$b9a
  1278.         dc.w    $cab,$dbc,$ecd,$fde,$ecd,$dbc,$cab,$b9a
  1279.         dc.w    $a89,$978,$867,$756,$645,$534,$423
  1280. col5:        ;bl3
  1281.         dc.w    $324,$435,$546,$657,$768,$879,$98a,$a9b
  1282.         dc.w    $bac,$cbd,$dce,$edf,$dce,$cbd,$bac,$a9b
  1283.         dc.w    $98a,$879,$768,$657,$546,$435,$324
  1284.         blk.w    nb,$324
  1285.         dc.w    $324,$435,$546,$657,$768,$879,$98a,$a9b
  1286.         dc.w    $bac,$cbd,$dce,$edf,$dce,$cbd,$bac,$a9b
  1287.         dc.w    $98a,$879,$768,$657,$546,$435,$324
  1288.         blk.w    nb,$324
  1289.         dc.w    $324,$435,$546,$657,$768,$879,$98a,$a9b
  1290.         dc.w    $bac,$cbd,$dce,$edf,$dce,$cbd,$bac,$a9b
  1291.         dc.w    $98a,$879,$768,$657,$546,$435,$324
  1292.  
  1293. ;************** donnees scroll
  1294.  
  1295.         even
  1296. compt:        dc.l    scrtxt
  1297. pos_txt:    dc.l    txt
  1298. nb_scr:        dc.b    4
  1299. tps_scr:    dc.b    0
  1300. ;===============
  1301.         even
  1302. adr_font:    dc.l    li1+00,li1+02,li1+04,li1+06,li1+08
  1303.         dc.l    li1+10,li1+12,li1+14,li1+16,li1+18
  1304.         dc.l    li1+20,li1+22,li1+24,li1+26,li1+28
  1305.         dc.l    li1+30,li1+32,li1+34,li1+36,li1+38
  1306.         dc.l    li2+00,li2+02,li2+04,li2+06,li2+08
  1307.         dc.l    li2+10,li2+12,li2+14,li2+16,li2+18
  1308.         dc.l    li2+20,li2+22,li2+24,li2+26,li2+28
  1309.         dc.l    li2+30,li2+32,li2+34,li2+36,li2+38
  1310.         dc.l    li3+00,li3+02,li3+04,li3+06,li3+08
  1311.         dc.l    li3+10,li3+12,li3+14,li3+16,li3+18
  1312.         dc.l    li3+20,li3+22,li3+24,li3+26,li3+28
  1313.         dc.l    li3+30,li3+32,li3+34,li3+36,li3+38
  1314. ordre:        dc.b    'abcdefghijklmnopqrst'
  1315.         dc.b    'uvwxyz 0123456789:.,'
  1316.         dc.b    '!?"-()'
  1317. ordre2:        dc.b    'abcdefghijklmnopqrstuvwxyz '
  1318.         dc.b    '0123456789()[]<>=+-/*!?&.,'
  1319.         dc.b    "'",'"A'
  1320. ;===============
  1321. scrtxt:        dc.b    'yoohoo hords of fans !!!'
  1322.         dc.b    '                   '
  1323.         dc.b    'angels - defjam -  are back with a new crack :'
  1324.         dc.b    '                   '
  1325.         dc.b    'botties from krysalis'
  1326.         dc.b    '                   '
  1327.         dc.b    'write us at: walch bp 10 , 4504 obercorn , luxemburg'
  1328.         dc.b    '        defjam : po box 138 , 6460 na kerkrade , holland       '
  1329.         dc.b    '           plk : a 007543 , 4100 duisburg 18 , germany'
  1330.         dc.b    '         john tjorn , pobox 2568 , 4300 sandnes , norway'
  1331.         dc.b    '                  bp 2 , 8830 beder , denmark'
  1332.         dc.b    '         greetings to all our friend and contacts'
  1333.         dc.b    '                   '
  1334.         dc.b    'see ya soon in our next productions'
  1335.         dc.b    '                   '
  1336.         dc.b    '                   ',0
  1337. ;===============
  1338.         even
  1339. train:        blk.w    4,-1        ;that means: no trainer
  1340.  
  1341. ;if option on/off     : dc.w    line,0,0,n  n=-1:on  n=-2:off
  1342. ;if option with numbers    : dc.w    line,min,max,begin (line>=1)
  1343. ;        dc.w    08,00,00,-1    ;l08,opt on/off,begin=on
  1344. ;        dc.w    09,00,00,-2    ;l09,opt on/off,begin=off
  1345. ;        dc.w    10,01,11,02    ;l10,opt numbers max=11,min=1,beg=2
  1346.  
  1347. ;you can put max 10 options (coz there are only 10 function keys!!)
  1348. ;and at the end, you put:    blk.w    4,-1
  1349. ;if you want no option, you directly insert:    blk.w    4,-1 (as in this example)
  1350.  
  1351. ;=> the result of the trainer option is where you put it !!
  1352. ;=> this means, for example, that if you write this:
  1353. ;=> train:    dc.w    08,00,00,-1
  1354. ;=>        dc.w    09,00,00,-2
  1355. ;=>        dc.w    10,01,11,02
  1356. ;=> when leaving the intro (after modifing the options) it is:
  1357. ;=> train:    dc.w    08,00,00,-2 <---- on turned to off
  1358. ;=>        dc.w    09,00,00,-1 <---- off turned to on
  1359. ;=>        dc.w    10,01,11,04 <---- 02 turned to 04
  1360. ;=> so you just have to write :
  1361. ;=>        move    train+6+[X*8](pc),d0
  1362. ;=> and d0 contains the result of the option number X (X>=0)
  1363.  
  1364. ;===============
  1365.  
  1366. txt:        dc.b    '****************************************';01
  1367.         dc.b    '*                                      *';02
  1368.         dc.b    '*     a n g e l s    d e f j a m       *';03
  1369.         dc.b    '*                                      *';04
  1370.         dc.b    '*    t h e   b e s t   c o o p  ! !    *';05
  1371.         dc.b    '*                                      *';06
  1372.         dc.b    '*                                      *';07
  1373.         dc.b    '*        present a new release         *';08
  1374.         dc.b    '*                                      *';09
  1375.         dc.b    '*               name                   *';10
  1376.         dc.b    '*                                      *';11
  1377.         dc.b    '*                                      *';12
  1378.         dc.b    '*  cracked by .............mr.perfect  *';13
  1379.         dc.b    '*                                      *';14
  1380.         dc.b    '*  original supplied by ....... stone  *';15
  1381.         dc.b    '*                                      *';16
  1382.         dc.b    '*                                      *';17
  1383.         dc.b    '* press left mouse button to continue. *';18
  1384.         dc.b    '*                                      *';19
  1385.         dc.b    '****************************************';20
  1386.  
  1387.         dc.b    '****************************************';01
  1388.         dc.b    '*             usa boards               *';02
  1389.         dc.b    '* amiga east ............ 804 499 2266 *';03
  1390.         dc.b    '* wreck house ........... 201 751 2175 *';04
  1391.         dc.b    '* maniacs madhouse ...... 319 355 7857 *';05
  1392.         dc.b    '* panic zone ............ 617 449 4706 *';06
  1393.         dc.b    '* vertigo ............... 813 831 8466 *';07
  1394.         dc.b    '* the guild canada ...... 418 681 4910 *';08
  1395.         dc.b    '*                                      *';09
  1396.         dc.b    '*             euro boards              *';10
  1397.         dc.b    '* reign in blood ..... +49 203 4060981 *';11
  1398.         dc.b    '* the dutch pirate ..... +31 117 23666 *';12
  1399.         dc.b    '* timezone lux ......... +352 58 39 01 *';13
  1400.         dc.b    '* dulcet tones ....... +44 382 739 192 *';14
  1401.         dc.b    '* software house ...... +45 69 750 750 *';15
  1402.         dc.b    '* insider bbs ......... +39 564 415697 *';16
  1403.         dc.b    '*                                      *';17
  1404.         dc.b    '*                                      *';18
  1405.         dc.b    '*                                      *';19
  1406.         dc.b    '****************************************';20
  1407.  
  1408. ;you can put as many pages as you want, but they all must be 40*20 chars,
  1409. ;and after the last page, you insert:
  1410.         dc.b    -1
  1411. ;if you want no page after the intro, you direcly insert:    dc.b    -1
  1412.  
  1413. ;************** donnees finales
  1414.  
  1415.         even
  1416. font:        incbin    'vf.1bp'
  1417. li1:        = font
  1418. li2:        = li1+[40*16]
  1419. li3:        = li2+[40*16]
  1420. font2:        incbin    'vcc.1bp'
  1421. bpsong:        incbin    'bp.commandohi'
  1422. end:        = bpsong+[end-bpsong*music]+4 & -4
  1423. ;you can use every brian postam sound monitor module !!
  1424. * END *
  1425.