home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d5xx / d509 / multi_player.lha / Multi_Player / sources / Future-Replay.s < prev    next >
Text File  |  1991-06-29  |  13KB  |  677 lines

  1. *********************************************************
  2. **  Amiga FUTURE COMPOSER  »» V1.4 ««  Replay routine  **
  3. *********************************************************
  4.  
  5. ;Doesn't work with V1.0 - V1.3 modules !!
  6.  
  7. ; !!!!
  8.     XDEF    _fc_init,_fc_music,_fc_end
  9.     XREF    _adr_data
  10. ; !!!!
  11.  
  12. _fc_end:
  13.     clr.w onoff
  14.     clr.l $dff0a6
  15.     clr.l $dff0b6
  16.     clr.l $dff0c6
  17.     clr.l $dff0d6
  18.     move.w #$000f,$dff096
  19.     bclr #1,$bfe001
  20.     moveq.l    #0,d0
  21.     rts
  22.  
  23. _fc_init:
  24.     move.w #1,onoff
  25.     bset #1,$bfe001
  26.     move.l    _adr_data,a0
  27.     lea 180(a0),a1
  28.     move.l a1,SEQpoint
  29.     move.l a0,a1
  30.     add.l 8(a0),a1
  31.     move.l a1,PATpoint
  32.     move.l a0,a1
  33.     add.l 16(a0),a1
  34.     move.l a1,FRQpoint
  35.     move.l a0,a1
  36.     add.l 24(a0),a1
  37.     move.l a1,VOLpoint
  38.     move.l 4(a0),d0
  39.     divu #13,d0
  40.  
  41.     lea 40(a0),a1
  42.     lea SOUNDINFO+4(pc),a2
  43.     moveq #10-1,d1
  44.     initloop:
  45.     move.w (a1)+,(a2)+
  46.     move.l (a1)+,(a2)+
  47.     adda.w #10,a2
  48.     dbf d1,initloop
  49.     move.l a0,d1
  50.     add.l 32(a0),d1
  51.     lea SOUNDINFO(pc),a3
  52.     move.l d1,(a3)+
  53.     moveq #9-1,d3
  54.     moveq #0,d2
  55.     initloop1:
  56.     move.w (a3),d2
  57.     add.l d2,d1
  58.     add.l d2,d1
  59.     addq.l #2,d1
  60.     adda.w #12,a3
  61.     move.l d1,(a3)+
  62.     dbf d3,initloop1
  63.  
  64.     lea 100(a0),a1
  65.     lea SOUNDINFO+(10*16)(pc),a2
  66.     move.l a0,a3
  67.     add.l 36(a0),a3
  68.  
  69.     moveq #80-1,d1
  70.     moveq #0,d2
  71.     initloop2:
  72.     move.l a3,(a2)+
  73.     move.b (a1)+,d2
  74.     move.w d2,(a2)+
  75.     clr.w (a2)+
  76.     move.w d2,(a2)+
  77.     addq.w #6,a2
  78.     add.w d2,a3
  79.     add.w d2,a3
  80.     dbf d1,initloop2
  81.  
  82.     move.l SEQpoint(pc),a0
  83.     moveq #0,d2
  84.     move.b 12(a0),d2        ;Get replay speed
  85.     bne.s speedok
  86.     move.b #3,d2            ;Set default speed
  87.     speedok:
  88.     move.w d2,respcnt        ;Init repspeed counter
  89.     move.w d2,repspd
  90. INIT2:
  91.     clr.w audtemp
  92.     move.w #$000f,$dff096        ;Disable audio DMA
  93.     move.w #$0780,$dff09a        ;Disable audio IRQ
  94.     moveq #0,d7
  95.     mulu #13,d0
  96.     moveq #4-1,d6            ;Number of soundchannels-1
  97.     lea V1data(pc),a0        ;Point to 1st voice data area
  98.     lea silent(pc),a1
  99.     lea Chandata(pc),a2
  100. initloop3:
  101.     move.l a1,10(a0)
  102.     move.l a1,18(a0)
  103.     clr.w 4(a0)
  104.     move.w #$000d,6(a0)
  105.     clr.w 8(a0)
  106.     clr.l 14(a0)
  107.     move.b #$01,23(a0)
  108.     move.b #$01,24(a0)
  109.     clr.b 25(a0)
  110.     clr.l 26(a0)
  111.     clr.w 30(a0)
  112.     clr.l 38(a0)
  113.     clr.w 42(a0)
  114.     clr.l 44(a0)
  115.     clr.l 48(a0)
  116.     clr.w 56(a0)
  117.     moveq #$00,d3
  118.     move.w (a2)+,d1
  119.     move.w (a2),d3
  120.     divu #$0003,d3
  121.     moveq #0,d4
  122.     bset d3,d4
  123.     move.w d4,32(a0)
  124.     move.w (a2)+,d3
  125.     andi.l #$00ff,d3
  126.     andi.l #$00ff,d1
  127.     lea $dff0a0,a6
  128.     add.w d1,a6
  129.     move.l #$0000,(a6)
  130.     move.w #$0100,4(a6)
  131.     move.w #$0000,6(a6)
  132.     move.w #$0000,8(a6)
  133.     move.l a6,60(a0)
  134.     move.l SEQpoint(pc),(a0)
  135.     move.l SEQpoint(pc),52(a0)
  136.     add.l d0,52(a0)
  137.     add.l d3,52(a0)
  138.     add.l d7,(a0)
  139.     add.l d3,(a0)
  140.     move.l (a0),a3
  141.     move.b (a3),d1
  142.     andi.l #$00ff,d1
  143.     lsl.w #6,d1
  144.     move.l PATpoint(pc),a4
  145.     adda.w d1,a4
  146.     move.l a4,34(a0)
  147.     move.b 1(a3),44(a0)
  148.     move.b 2(a3),22(a0)
  149.     lea $4a(a0),a0        ;Point to next voice's data area
  150.     dbf d6,initloop3
  151.     moveq.l    #0,d0
  152.     rts
  153.  
  154. _fc_music:
  155.     lea audtemp(pc),a5
  156.     tst.w 8(a5)
  157.     bne.s music_on
  158.     rts
  159.     music_on:
  160.     subq.w #1,4(a5)            ;Decrease replayspeed counter
  161.     bne.s nonewnote
  162.     move.w 6(a5),4(a5)        ;Restore replayspeed counter
  163.     moveq #0,d5
  164.     moveq #6,d6
  165.     lea V1data(pc),a0        ;Point to voice1 data area
  166.     bsr new_note
  167.     lea V2data(pc),a0        ;Point to voice2 data area
  168.     bsr new_note
  169.     lea V3data(pc),a0        ;Point to voice3 data area
  170.     bsr new_note
  171.     lea V4data(pc),a0        ;Point to voice4 data area
  172.     bsr new_note
  173. nonewnote:
  174.     clr.w (a5)
  175.     lea $dff000,a6
  176.     lea V1data(pc),a0
  177.     bsr effects
  178.     move.l d0,$a6(a6)
  179.     lea V2data(pc),a0
  180.     bsr effects
  181.     move.l d0,$b6(a6)
  182.     lea V3data(pc),a0
  183.     bsr effects
  184.     move.l d0,$c6(a6)
  185.     lea V4data(pc),a0
  186.     bsr effects
  187.     move.l d0,$d6(a6)
  188.     lea V1data(pc),a0
  189.     move.l 68+(0*74)(a0),a1        ;Get samplepointer
  190.     adda.w 64+(0*74)(a0),a1        ;add repeat_start
  191.     move.l 68+(1*74)(a0),a2
  192.     adda.w 64+(1*74)(a0),a2
  193.     move.l 68+(2*74)(a0),a3
  194.     adda.w 64+(2*74)(a0),a3
  195.     move.l 68+(3*74)(a0),a4
  196.     adda.w 64+(3*74)(a0),a4
  197.     move.w 66+(0*74)(a0),d1        ;Get repeat_length
  198.     move.w 66+(1*74)(a0),d2
  199.     move.w 66+(2*74)(a0),d3
  200.     move.w 66+(3*74)(a0),d4
  201.     moveq #2,d0
  202.     moveq #0,d5
  203.     move.w (a5),d7
  204.     ori.w #$8000,d7            ;Set/clr bit = 1
  205.     move.w d7,$dff096        ;Enable audio DMA
  206. chan1:
  207.     lea V1data+72(pc),a0
  208.     move.w (a0),d7
  209.     beq.s chan2
  210.     subq.w #1,(a0)
  211.     cmp.w d0,d7
  212.     bne.s chan2
  213.     move.w d5,(a0)
  214.     move.l a1,$a0(a6)        ;Set samplestart
  215.     move.w d1,$a4(a6)        ;Set samplelength
  216. chan2:
  217.     lea V2data+72(pc),a0
  218.     move.w (a0),d7
  219.     beq.s chan3
  220.     subq.w #1,(a0)
  221.     cmp.w d0,d7
  222.     bne.s chan3
  223.     move.w d5,(a0)
  224.     move.l a2,$b0(a6)
  225.     move.w d2,$b4(a6)
  226. chan3:
  227.     lea V3data+72(pc),a0
  228.     move.w (a0),d7
  229.     beq.s chan4
  230.     subq.w #1,(a0)
  231.     cmp.w d0,d7
  232.     bne.s chan4
  233.     move.w d5,(a0)
  234.     move.l a3,$c0(a6)
  235.     move.w d3,$c4(a6)
  236. chan4:
  237.     lea V4data+72(pc),a0
  238.     move.w (a0),d7
  239.     beq.s endplay
  240.     subq.w #1,(a0)
  241.     cmp.w d0,d7
  242.     bne.s endplay
  243.     move.w d5,(a0)
  244.     move.l a4,$d0(a6)
  245.     move.w d4,$d4(a6)
  246. endplay:
  247.     rts
  248.  
  249. new_note:
  250.     move.l 34(a0),a1
  251.     adda.w 40(a0),a1
  252.     cmp.b #$49,(a1)        ;Check "END" mark in pattern
  253.     beq.s patend
  254.     cmp.w #64,40(a0)        ;Have all the notes been played?
  255.     bne samepat
  256.     patend:
  257.     move.w d5,40(a0)
  258.     move.l (a0),a2
  259.     adda.w 6(a0),a2        ;Point to next sequence row
  260.     cmpa.l 52(a0),a2    ;Is it the end?
  261.     bne.s notend
  262.     move.w d5,6(a0)        ;yes!
  263.     move.l (a0),a2        ;Point to first sequence
  264. notend:
  265.     lea spdtemp(pc),a3
  266.     moveq #1,d1
  267.     addq.b #1,(a3)
  268.     cmpi.b #5,(a3)
  269.     bne.s nonewspd
  270.     move.b d1,(a3)
  271.     move.b 12(a2),d1    ;Get new replay speed
  272.     beq.s nonewspd
  273.     move.w d1,2(a3)        ;store in counter
  274.     move.w d1,4(a3)
  275. nonewspd:
  276.     move.b (a2)+,d1        ;Pattern to play
  277.     move.b (a2)+,44(a0)    ;Transpose value
  278.     move.b (a2)+,22(a0)    ;Soundtranspose value
  279.     lsl.w d6,d1
  280.     move.l PATpoint(pc),a1    ;Get pattern pointer
  281.     add.w d1,a1
  282.     move.l a1,34(a0)
  283.     addi.w #$000d,6(a0)
  284. samepat:
  285.     move.b 1(a1),d1        ;Get info byte
  286.     move.b (a1)+,d0        ;Get note
  287.     bne.s ww1
  288.     andi.w #%11000000,d1
  289.     beq.s noport
  290.     bra.s ww11
  291. ww1:
  292.     move.w d5,56(a0)
  293. ww11:
  294.     move.b d5,47(a0)
  295.     btst #7,d1
  296.     beq.s noport
  297.     move.b 2(a1),47(a0)    
  298. noport:
  299.     andi.w #$007f,d0
  300.     beq nextnote
  301.     move.b d0,8(a0)
  302.     move.b (a1),d1
  303.     move.b d1,9(a0)
  304.     move.w 32(a0),d3
  305.     or.w d3,(a5)
  306.     move.w d3,$dff096
  307.     andi.w #$003f,d1    ;Max 64 instruments
  308.     add.b 22(a0),d1        ;add Soundtranspose
  309.     move.l VOLpoint(pc),a2
  310.     lsl.w d6,d1
  311.     adda.w d1,a2
  312.     move.w d5,16(a0)
  313.     move.b (a2),23(a0)
  314.     move.b (a2)+,24(a0)
  315.     moveq #0,d1
  316.     move.b (a2)+,d1
  317.     move.b (a2)+,27(a0)
  318.     move.b #$40,46(a0)
  319.     move.b (a2),28(a0)
  320.     move.b (a2)+,29(a0)
  321.     move.b (a2)+,30(a0)
  322.     move.l a2,10(a0)
  323.     move.l FRQpoint(pc),a2
  324.     lsl.w d6,d1
  325.     adda.w d1,a2
  326.     move.l a2,18(a0)
  327.     move.w d5,50(a0)
  328.     move.b d5,25(a0)
  329.     move.b d5,26(a0)
  330.     nextnote:
  331.     addq.w #2,40(a0)
  332.     rts
  333.  
  334. effects:
  335.     moveq #0,d7
  336.     testsustain:
  337.     tst.b 26(a0)        ;Is sustain counter = 0
  338.     beq.s sustzero
  339.     subq.b #1,26(a0)    ;if no, decrease counter
  340.     bra VOLUfx
  341. sustzero:        ;Next part of effect sequence
  342.     move.l 18(a0),a1    ;can be executed now.
  343.     adda.w 50(a0),a1
  344. testeffects:
  345.     cmpi.b #$e1,(a1)    ;E1 = end of FREQseq sequence
  346.     beq VOLUfx
  347.     move.b (a1),d0
  348.     cmpi.b #$e0,d0        ;E0 = loop to other part of sequence
  349.     bne.s testnewsound
  350.     move.b 1(a1),d1        ;loop to start of sequence + 1(a1)
  351.     andi.w #$003f,d1
  352.     move.w d1,50(a0)
  353.     move.l 18(a0),a1
  354.     adda.w d1,a1
  355.     move.b (a1),d0
  356. testnewsound:
  357.     cmpi.b #$e2,d0        ;E2 = set waveform
  358.     bne.s testE4
  359.     move.w 32(a0),d1
  360.     or.w d1,(a5)
  361.     move.w d1,$dff096
  362.     moveq #0,d0
  363.     move.b 1(a1),d0
  364.     lea SOUNDINFO(pc),a4
  365.     lsl.w #4,d0
  366.     adda.w d0,a4
  367.     move.l 60(a0),a3
  368.     move.l (a4)+,d1
  369.     move.l d1,(a3)
  370.     move.l d1,68(a0)
  371.     move.w (a4)+,4(a3)
  372.     move.l (a4),64(a0)
  373.     move.w #$0003,72(a0)
  374.     move.w d7,16(a0)
  375.     move.b #$01,23(a0)
  376.     addq.w #2,50(a0)
  377.     bra transpose
  378. testE4:
  379.     cmpi.b #$e4,d0
  380.     bne.s testE9
  381.     moveq #0,d0
  382.     move.b 1(a1),d0
  383.     lea SOUNDINFO(pc),a4
  384.     lsl.w #4,d0
  385.     adda.w d0,a4
  386.     move.l 60(a0),a3
  387.     move.l (a4)+,d1
  388.     move.l d1,(a3)
  389.     move.l d1,68(a0)
  390.     move.w (a4)+,4(a3)
  391.     move.l (a4),64(a0)
  392.     move.w #$0003,72(a0)
  393.     addq.w #2,50(a0)
  394.     bra transpose
  395. testE9:
  396.     cmpi.b #$e9,d0
  397.     bne testpatjmp
  398.     move.w 32(a0),d1
  399.     or.w d1,(a5)
  400.     move.w d1,$dff096
  401.     moveq #0,d0
  402.     move.b 1(a1),d0
  403.     lea SOUNDINFO(pc),a4
  404.     lsl.w #4,d0
  405.     adda.w d0,a4
  406.     move.l (a4),a2
  407.     cmpi.l #"SSMP",(a2)+
  408.     bne.s nossmp
  409.     lea 320(a2),a4
  410.     moveq #0,d1
  411.     move.b 2(a1),d1
  412.     lsl.w #4,d1
  413.     add.w d1,a2
  414.     add.l (a2),a4
  415.     move.l 60(a0),a3
  416.     move.l a4,(a3)
  417.     move.l 4(a2),4(a3)
  418.     move.l a4,68(a0)
  419.     move.l 6(a2),64(a0)
  420.     move.w d7,16(a0)
  421.     move.b #1,23(a0)
  422.     move.w #3,72(a0)
  423. nossmp:
  424.     addq.w #3,50(a0)
  425.     bra.s transpose
  426.     testpatjmp:
  427.     cmpi.b #$e7,d0
  428.     bne.s testpitchbend
  429.     moveq #0,d0
  430.     move.b 1(a1),d0
  431.     lsl.w d6,d0
  432.     move.l FRQpoint(pc),a1
  433.     adda.w d0,a1
  434.     move.l a1,18(a0)
  435.     move.w d7,50(a0)
  436.     bra testeffects
  437. testpitchbend:
  438.     cmpi.b #$ea,d0
  439.     bne.s testnewsustain
  440.     move.b 1(a1),4(a0)
  441.     move.b 2(a1),5(a0)
  442.     addq.w #3,50(a0)
  443.     bra.s transpose
  444. testnewsustain:
  445.     cmpi.b #$e8,d0
  446.     bne.s testnewvib
  447.     move.b 1(a1),26(a0)
  448.     addq.w #2,50(a0)
  449.     bra testsustain
  450. testnewvib:
  451.     cmpi.b #$e3,(a1)+
  452.     bne.s transpose
  453.     addq.w #3,50(a0)
  454.     move.b (a1)+,27(a0)
  455.     move.b (a1),28(a0)
  456. transpose:
  457.     move.l 18(a0),a1
  458.     adda.w 50(a0),a1
  459.     move.b (a1),43(a0)
  460.     addq.w #1,50(a0)
  461.  
  462. VOLUfx:
  463.     tst.b 25(a0)
  464.     beq.s volsustzero
  465.     subq.b #1,25(a0)
  466.     bra calcperiod
  467.     volsustzero:
  468.     tst.b 15(a0)
  469.     bne.s do_VOLbend
  470.     subq.b #1,23(a0)
  471.     bne.s calcperiod
  472.     move.b 24(a0),23(a0)
  473. volu_cmd:
  474.     move.l 10(a0),a1
  475.     adda.w 16(a0),a1
  476.     move.b (a1),d0
  477. testvoluend:
  478.     cmpi.b #$e1,d0
  479.     beq.s calcperiod
  480.     cmpi.b #$ea,d0
  481.     bne.s testVOLsustain
  482.     move.b 1(a1),14(a0)
  483.     move.b 2(a1),15(a0)
  484.     addq.w #3,16(a0)
  485.     bra.s do_VOLbend
  486. testVOLsustain:
  487.     cmpi.b #$e8,d0
  488.     bne.s testVOLloop
  489.     addq.w #2,16(a0)
  490.     move.b 1(a1),25(a0)
  491.     bra.s calcperiod
  492. testVOLloop:
  493.     cmpi.b #$e0,d0
  494.     bne.s setvolume
  495.     move.b 1(a1),d0
  496.     andi.w #$003f,d0
  497.     subq.b #5,d0
  498.     move.w d0,16(a0)
  499.     bra.s volu_cmd
  500. do_VOLbend:
  501.     not.b 38(a0)
  502.     beq.s calcperiod
  503.     subq.b #1,15(a0)
  504.     move.b 14(a0),d1
  505.     add.b d1,45(a0)
  506.     bpl.s calcperiod
  507.     moveq #0,d1
  508.     move.b d1,15(a0)
  509.     move.b d1,45(a0)
  510.     bra.s calcperiod
  511. setvolume:
  512.     move.b (a1),45(a0)
  513.     addq.w #1,16(a0)
  514. calcperiod:
  515.     move.b 43(a0),d0
  516.     bmi.s lockednote
  517.     add.b 8(a0),d0
  518.     add.b 44(a0),d0
  519. lockednote:
  520.     moveq #$7f,d1
  521.     and.l d1,d0
  522.     lea PERIODS(pc),a1
  523.     add.w d0,d0
  524.     move.w d0,d1
  525.     adda.w d0,a1
  526.     move.w (a1),d0
  527.     
  528.     move.b 46(a0),d7
  529.     tst.b 30(a0)        ;Vibrato_delay = zero ?
  530.     beq.s vibrator
  531.     subq.b #1,30(a0)
  532.     bra.s novibrato
  533. vibrator:
  534.     moveq #5,d2
  535.     move.b d1,d5
  536.     move.b 28(a0),d4
  537.     add.b d4,d4
  538.     move.b 29(a0),d1
  539.     tst.b d7
  540.     bpl.s vib1
  541.     btst #0,d7
  542.     bne.s vib4
  543. vib1:
  544.     btst d2,d7
  545.     bne.s vib2
  546.     sub.b 27(a0),d1
  547.     bcc.s vib3
  548.     bset d2,d7
  549.     moveq #0,d1
  550.     bra.s vib3
  551. vib2:
  552.     add.b 27(a0),d1
  553.     cmp.b d4,d1
  554.     bcs.s vib3
  555.     bclr d2,d7
  556.     move.b d4,d1
  557. vib3:
  558.     move.b d1,29(a0)
  559. vib4:
  560.     lsr.b #1,d4
  561.     sub.b d4,d1
  562.     bcc.s vib5
  563.     subi.w #$0100,d1
  564. vib5:
  565.     addi.b #$a0,d5
  566.     bcs.s vib7
  567. vib6:
  568.     add.w d1,d1
  569.     addi.b #$18,d5
  570.     bcc.s vib6
  571. vib7:
  572.     add.w d1,d0
  573. novibrato:
  574.     eori.b #$01,d7
  575.     move.b d7,46(a0)
  576.     
  577.     ; DO THE PORTAMENTO THING
  578.     not.b 39(a0)
  579.     beq.s pitchbend
  580.     moveq #0,d1
  581.     move.b 47(a0),d1    ;get portavalue
  582.     beq.s pitchbend        ;0=no portamento
  583.     cmpi.b #$1f,d1
  584.     bls.s portaup
  585. portadown: 
  586.     andi.w #$1f,d1
  587.     neg.w d1
  588. portaup:
  589.     sub.w d1,56(a0)
  590. pitchbend:
  591.     not.b 42(a0)
  592.     beq.s addporta
  593.     tst.b 5(a0)
  594.     beq.s addporta
  595.     subq.b #1,5(a0)
  596.     moveq #0,d1
  597.     move.b 4(a0),d1
  598.     bpl.s pitchup
  599.     ext.w d1
  600. pitchup:
  601.     sub.w d1,56(a0)
  602. addporta:
  603.     add.w 56(a0),d0
  604.     cmpi.w #$0070,d0
  605.     bhi.s nn1
  606.     move.w #$0071,d0
  607. nn1:
  608.     cmpi.w #$0d60,d0
  609.     bls.s nn2
  610.     move.w #$0d60,d0
  611. nn2:
  612.     swap d0
  613.     move.b 45(a0),d0
  614.     rts
  615.  
  616.  
  617.  
  618. V1data:  dcb.b 64,0    ;Voice 1 data area
  619. offset1: dcb.b 02,0    ;Is added to start of sound
  620. ssize1:  dcb.b 02,0    ;Length of sound
  621. start1:  dcb.b 06,0    ;Start of sound
  622.  
  623. V2data:  dcb.b 64,0    ;Voice 2 data area
  624. offset2: dcb.b 02,0
  625. ssize2:  dcb.b 02,0
  626. start2:  dcb.b 06,0
  627.  
  628. V3data:  dcb.b 64,0    ;Voice 3 data area
  629. offset3: dcb.b 02,0
  630. ssize3:  dcb.b 02,0
  631. start3:  dcb.b 06,0
  632.  
  633. V4data:  dcb.b 64,0    ;Voice 4 data area
  634. offset4: dcb.b 02,0
  635. ssize4:  dcb.b 02,0
  636. start4:  dcb.b 06,0
  637.  
  638. audtemp: dc.w 0        ;DMACON
  639. spdtemp: dc.w 0
  640. respcnt: dc.w 0        ;Replay speed counter 
  641. repspd:  dc.w 0        ;Replay speed counter temp
  642. onoff:   dc.w 0        ;Music on/off flag.
  643.  
  644. Chandata: dc.l $00000000,$00100003,$00200006,$00300009
  645. SEQpoint: dc.l 0
  646. PATpoint: dc.l 0
  647. FRQpoint: dc.l 0
  648. VOLpoint: dc.l 0
  649.  
  650.  
  651. silent: dc.w $0100,$0000,$0000,$00e1
  652.  
  653. PERIODS:dc.w $06b0,$0650,$05f4,$05a0,$054c,$0500,$04b8,$0474
  654.     dc.w $0434,$03f8,$03c0,$038a,$0358,$0328,$02fa,$02d0
  655.     dc.w $02a6,$0280,$025c,$023a,$021a,$01fc,$01e0,$01c5
  656.     dc.w $01ac,$0194,$017d,$0168,$0153,$0140,$012e,$011d
  657.     dc.w $010d,$00fe,$00f0,$00e2,$00d6,$00ca,$00be,$00b4
  658.     dc.w $00aa,$00a0,$0097,$008f,$0087,$007f,$0078,$0071
  659.     dc.w $0071,$0071,$0071,$0071,$0071,$0071,$0071,$0071
  660.     dc.w $0071,$0071,$0071,$0071,$0d60,$0ca0,$0be8,$0b40
  661.     dc.w $0a98,$0a00,$0970,$08e8,$0868,$07f0,$0780,$0714
  662.     dc.w $1ac0,$1940,$17d0,$1680,$1530,$1400,$12e0,$11d0
  663.     dc.w $10d0,$0fe0,$0f00,$0e28,$06b0,$0650,$05f4,$05a0
  664.     dc.w $054c,$0500,$04b8,$0474,$0434,$03f8,$03c0,$038a
  665.     dc.w $0358,$0328,$02fa,$02d0,$02a6,$0280,$025c,$023a
  666.     dc.w $021a,$01fc,$01e0,$01c5,$01ac,$0194,$017d,$0168
  667.     dc.w $0153,$0140,$012e,$011d,$010d,$00fe,$00f0,$00e2
  668.     dc.w $00d6,$00ca,$00be,$00b4,$00aa,$00a0,$0097,$008f
  669.     dc.w $0087,$007f,$0078,$0071
  670.  
  671. SOUNDINFO:
  672. ;Start.l , Length.w , Repeat start.w , Repeat-length.w , dcb.b 6,0 
  673.  
  674.     dcb.b 10*16,0    ;Reserved for samples
  675.     dcb.b 80*16,0    ;Reserved for waveforms
  676.  
  677.