home *** CD-ROM | disk | FTP | other *** search
Text File | 1980-01-10 | 22.6 KB | 1,150 lines |
- ************************************************************
- * >>>>> Little RePlayRoutineTester by Adkins/Rascals <<<<< *
- ************************************************************
-
- section 'SidMonI+II-RePlayer',code
-
- bra.b start
- dc.b ' Written by Adkins ',0
- even
-
- start movem.l d0-d7/a0-a6,-(a7)
- move.w #$4000,$00dff09a.l
-
- bsr.b InitMuzak
-
- mouse cmp.b #$ff,$00dff006.l
- bne.b mouse
-
- move.w #$0055,$00dff180.l
-
- bsr PlayMuzak
-
- move.w #$0550,$00dff180.l
-
- btst #6,$00bfe001.l
- bne.b mouse
-
- bsr StopMuzak
-
- move.w #-$4000,$00dff09a.l
- movem.l (sp)+,d0-d7/a0-a6
- moveq #0,d0
- rts
-
- **********************************************************************
- * >>> SidMonI+II (The MIDI Version) Replayer (c)1990 Turtle Byte <<< *
- * ------------------------------------------------------------------ *
- * >>> AddCode & MC680x0 UpDate by Adkins of RASCALS (w)195 (GER) <<< *
- **********************************************************************
- * *
- * NOTE: This ReplayRoutine can replay modules from SidMon v1.0/v2.0! *
- * All additional coding & design (c)1995 Adkins/Rascals. *
- * *
- * SidMon v1.0 Replayer was reassembled from a intro *
- * by TRSI, dokumented & included. *
- * *
- * HOW TO HANDLE: (like any similar Replayer's) *
- * *
- * - Call InitMuzak first. Then call PlayMuzak & to stop the Music, *
- * call simply StopMuzak !!! *
- * *
- * - This assembly language program is written with MaXoN aSM & has *
- * been tested with any similar assemblers !!! *
- * *
- * - All done with: MC68000, ECS, OS2.04 *
- * *
- * - Thanx to Subzero for the original SidMonII-ReplayRoutine !!! *
- * *
- **********************************************************[28/08/95]**
-
- yes equ 1
- no equ 0
- filter equ yes
-
- **********************************************************************
-
- initmuzak ifeq filter-yes
- bset #1,$00bfe001.l
- endif
-
- headerone move.l #0,$0116.w
- movea.l song,a0
- cmpi.l #$41fa0ffa,(a0)
- bne.b headertwo
- cmpi.l #$d1e8ffd4,4(a0)
- beq.b initone
- headertwo cmpi.l #$610e0839,(a0)
- bne.b headerthree
- cmpi.l #$000600bf,4(a0)
- beq.b inittwo
- headerthree cmpi.l #$08f90001,(a0)
- bne.b not_sidmoni
- cmpi.l #$00bfe001,4(a0)
- beq.b initthree
- not_sidmoni cmpi.w #$0000,(a0)
- beq.b is_sidmonii
- rts
-
- is_sidmonii move.l #'sid2',rating
- bra.b is_sidii
- rts
-
- initone movea.l song,a0
- jsr (a0)
- move.b #1,$0116.w
- rts
-
- inittwo movea.l song,a0
- move.w #$4e75,$0254(a0)
- jsr $0024(a0)
- move.b #2,$0116.w
- rts
-
- initthree movea.l song,a0
- move.w #$4e75,$025c(a0)
- jsr $002c(a0)
- move.b #3,$0116.w
- rts
-
- is_sidII movem.l d0-a6,-(a7)
- lea $00dff000.l,a6
- move.w #0,$00a8(a6)
- move.w #0,$00b8(a6)
- move.w #0,$00c8(a6)
- move.w #0,$00d8(a6)
- move.w #$000f,$0096(a6)
- moveq #0,d6
- lea header(pc),a0
- lea midimode(pc),a2
- moveq #$003a,d0
- add.l -6(a2),d0
- move.l d0,(a0)
- movea.l -6(a2),a1
- move.w (a1)+,(a2)+
- move.b (a1)+,d6
- move.b d6,(a2)
- move.b (a1)+,1(a2)
- move.w (a1)+,d0
- lsr.w #6,d0
- subq.w #1,d0
- move.w d0,-4(a2)
- moveq #$0040,d0
- move.l d0,2(a2)
- clr.b 6(a2)
- moveq #$000a,d0
-
- addloop move.l (a0)+,d1
- add.l (a1)+,d1
- move.l d1,(a0)
- dbra d0,addloop
- movea.l a2,a0
- lea voice1(pc),a2
- moveq #3,d7
- addq.w #1,d6
- moveq #0,d5
-
- findloop clr.w $0048(a2)
- move.l d5,(a2)
- add.l d6,d5
- bsr.w findnote
- lea $004a(a2),a2
- dbra d7,findloop
- moveq #0,d0
- movea.l patterns(pc),a0
- move.w -(a0),d0
- add.l patterns(pc),d0
- movea.l d0,a1
- lea voice1(pc),a2
- moveq #$003f,d3
-
- plus bsr.w getnote2
- dbra d3,plus
- clr.w $0044(a2)
- move.l a1,d0
- addq.l #1,d0
- bclr #0,d0
- movea.l d0,a0
- movea.l sampletab(pc),a1
- move.w sampleno(pc),d0
-
- calcaddloop move.l a0,(a1)
- moveq #0,d1
- move.w 4(a1),d1
- add.l d1,d1
- adda.l d1,a0
- lea $0040(a1),a1
- dbra d0,calcaddloop
- movem.l (a7)+,d0-a6
- rts
-
- **********************************************************************
-
- header blk.w 4,0
- positions blk.w 2,0
- ntransposes blk.w 2,0
- itransposes blk.w 2,0
- ins1 blk.w 2,0
- wavelists blk.w 2,0
- arpeggiolists blk.w 2,0
- vibratolists blk.w 2,0
- sampletab blk.w 2,0
- patternpointer blk.w 2,0
- patterns blk.w 2,0
-
- **********************************************************************
-
- stopmuzak lea $00dff000.l,a6
- move.w #$000f,$0096(a6)
- clr.w $00a8(a6)
- clr.w $00b8(a6)
- clr.w $00c8(a6)
- clr.w $00d8(a6)
- move.w #$2000,$009a(a6)
- ifeq filter-yes
- bclr #1,$00bfe001.l
- endif
- rts
-
- **********************************************************************
-
- playmuzak cmp.l #'sid2',rating
- beq.b play_sidii
-
- testplay cmpi.b #1,$0116.w
- beq.b playone
- cmpi.b #2,$0116.w
- beq.b playtwo
- cmpi.b #3,$0116.w
- beq.b playthree
- rts
-
- playone movea.l song,a0
- jsr $013e(a0)
- rts
-
- playtwo movea.l song,a0
- jsr $0162(a0)
- rts
-
- playthree movea.l song,a0
- jsr $016a(a0)
- rts
-
- play_sidii movem.l d0-a6,-(a7)
- lea $00dff000.l,a6
- lea length(pc),a0
- addq.b #1,6(a0)
- cmpi.b #3,6(a0)
- bne.b notthree
- clr.b 6(a0)
-
- notthree addq.b #1,4(a0)
- move.b 4(a0),d0
- cmp.b 1(a0),d0
- blt.w doeffects
- clr.b 4(a0)
- clr.b 6(a0)
- lea dma(pc),a5
- clr.w (a5)
- lea voice1(pc),a2
- bsr.w getnote
- lea voice2(pc),a2
- bsr.w getnote
- lea voice3(pc),a2
- bsr.w getnote
- lea voice4(pc),a2
- bsr.w getnote
- move.w (a5),$0096(a6)
- addi.w #-$8000,(a5)
- lea voice1(pc),a2
- bsr.w playvoice
- lea voice2(pc),a2
- bsr.w playvoice
- lea voice3(pc),a2
- bsr.w playvoice
- lea voice4(pc),a2
- bsr.w playvoice
- bsr.w donegation
- move.b 6(a6),d0
-
- raster cmp.b 6(a6),d0
- beq.b raster
- move.w (a5),$0096(a6)
- move.b 6(a6),d0
-
- raster2 cmp.b 6(a6),d0
- beq.b raster2
- lea voice1(pc),a2
- moveq #3,d0
-
- repeatloop move.w $0010(a2),d4
- move.l $001a(a2),(a6,d4.w)
- move.w $001e(a2),4(a6,d4.w)
- lea $004a(a2),a2
- dbra d0,repeatloop
- addq.b #1,3(a0)
- move.b 5(a0),d0
- cmp.b 3(a0),d0
- bne.b doeffects
- clr.b 3(a0)
- move.b (a0),d0
- cmp.b 2(a0),d0
- bne.b addlater
- move.b #-1,2(a0)
-
- addlater addq.b #1,2(a0)
- lea voice1(pc),a2
- bsr.w findnote
- lea voice2(pc),a2
- bsr.w findnote
- lea voice3(pc),a2
- bsr.w findnote
- lea voice4(pc),a2
- bsr.w findnote
-
- doeffects lea voice1(pc),a2
- bsr.w doeffect
- lea voice2(pc),a2
- bsr.w doeffect
- lea voice3(pc),a2
- bsr.w doeffect
- lea voice4(pc),a2
- bsr.w doeffect
- tst.b 4(a0)
- beq.b nonega
- bsr.b donegation
-
- nonega movem.l (a7)+,d0-a6
- rts
-
- **********************************************************************
-
- donegation movem.l d0-d4/a0-a3,-(a7)
- lea waveadds(pc),a3
- lea voice1(pc),a1
- moveq #3,d0
-
- negationloop move.w $0048(a1),d1
- lsl.w #6,d1
- movea.l sampletab(pc),a0
- lea (a0,d1.w),a0
- move.l a0,(a3)+
- tst.w $001a(a0)
- bne.b nonegation
- not.w $001a(a0)
- tst.w $0018(a0)
- beq.b checknegation
- subq.w #1,$0018(a0)
- andi.w #$001f,$0018(a0)
- bra.b nonegation
-
- checknegation move.w $000e(a0),$0018(a0)
- move.w $0010(a0),d4
- beq.b nonegation
- movea.l (a0),a2
- moveq #0,d1
- moveq #0,d2
- move.w $000a(a0),d1
- move.w $000c(a0),d2
- add.l d1,d1
- add.l d2,d2
- subq.l #1,d2
- adda.l d1,a2
- adda.l $0014(a0),a2
- not.b (a2)
- moveq #0,d3
- move.w $0012(a0),d3
- ext.l d3
- add.l d3,$0014(a0)
- tst.l $0014(a0)
- bmi.b noright
- cmp.l $0014(a0),d2
- bcc.b nonegation
- cmpi.w #1,d4
- bne.b noleft
- clr.l $0014(a0)
- bra.b nonegation
-
- noright cmpi.w #2,d4
- bne.b noleft
- move.l d2,$0014(a0)
- bra.b nonegation
-
- noleft neg.l d3
- add.l d3,$0014(a0)
- neg.w $0012(a0)
-
- nonegation lea $004a(a1),a1
- dbra d0,negationloop
- suba.w #$0010,a3
- moveq #3,d0
-
- joho movea.l (a3)+,a0
- clr.w $001a(a0)
- dbra d0,joho
- movem.l (a7)+,d0-d4/a0-a3
- rts
-
- **********************************************************************
-
- findnote moveq #0,d0
- moveq #0,d1
- moveq #0,d2
- move.b 2(a0),d0
- movea.l positions(pc),a1
- adda.l (a2),a1
- move.b (a1,d0.w),d2
- add.w d2,d2
- movea.l patternpointer(pc),a1
- move.w (a1,d2.w),d2
- add.l patterns(pc),d2
- move.l d2,$0040(a2)
- movea.l ntransposes(pc),a1
- adda.l (a2),a1
- move.b (a1,d0.w),$0047(a2)
- movea.l itransposes(pc),a1
- adda.l (a2),a1
- move.b (a1,d0.w),$0039(a2)
- clr.b $0045(a2)
- rts
-
- **********************************************************************
-
- getnote movea.l $0040(a2),a1
- bsr.b getnote2
- move.l a1,$0040(a2)
- move.w $002e(a2),d0
- beq.b noteok
- move.w $000e(a2),d1
- add.w d1,(a5)
- add.b $0047(a2),d0
- move.w d0,$002e(a2)
-
- noteok rts
-
- **********************************************************************
-
- getnote2 moveq #0,d1
- move.l d1,$002e(a2)
- move.l d1,$0032(a2)
- tst.b $0045(a2)
- beq.b readnote
- subq.b #1,$0045(a2)
- rts
-
- **********************************************************************
-
- readnote move.b (a1)+,d1
- beq.b nonotebutslide
- bpl.b simplenote
-
- negativvalue not.b d1
- move.b d1,$0045(a2)
- rts
-
- **********************************************************************
-
- simplenote cmpi.b #$0070,d1
- blt.b simplenote2
- move.b d1,$0033(a2)
- move.b (a1)+,$0035(a2)
- rts
-
- **********************************************************************
-
- simplenote2 move.b d1,$002f(a2)
- move.b (a1)+,d1
- bmi.b negativvalue
- cmpi.b #$0070,d1
- blt.b simpleins
- move.b d1,$0033(a2)
- move.b (a1)+,$0035(a2)
- rts
-
- **********************************************************************
-
- simpleins move.b d1,$0031(a2)
- move.b (a1)+,d1
- bmi.b negativvalue
- move.b d1,$0033(a2)
- move.b (a1)+,$0035(a2)
- rts
-
- **********************************************************************
-
- nonotebutslide move.b (a1)+,$0033(a2)
- move.b (a1)+,$0035(a2)
- rts
-
- **********************************************************************
-
- playvoice clr.w $003a(a2)
- move.w $002e(a2),d0
- beq.w nonote
- clr.w $000c(a2)
- clr.l $0022(a2)
- clr.w $0026(a2)
- clr.l $0028(a2)
- clr.w $002c(a2)
- clr.w $0036(a2)
- clr.w $003e(a2)
- move.w #4,$0012(a2)
- clr.w $0014(a2)
- moveq #0,d1
- move.w $0030(a2),d1
- beq.b noinschange
- subq.b #1,d1
- add.b $0039(a2),d1
- lsl.w #5,d1
- movea.l ins1(pc),a1
- adda.l d1,a1
- move.l a1,$0016(a2)
- moveq #0,d5
- move.b (a1),d5
- lsl.w #4,d5
- movea.l wavelists(pc),a1
- adda.l d5,a1
- moveq #0,d5
- move.b (a1),d5
- move.b d5,$0049(a2)
- lsl.w #6,d5
- movea.l sampletab(pc),a1
- adda.l d5,a1
- move.l (a1)+,4(a2)
- move.w (a1)+,8(a2)
- move.l 4(a2),$001a(a2)
- moveq #0,d5
- move.w (a1)+,d5
- add.l d5,d5
- add.l d5,$001a(a2)
- move.w (a1),$001e(a2)
-
- noinschange movea.l $0016(a2),a1
- moveq #0,d5
- move.b 4(a1),d5
- lsl.w #4,d5
- movea.l arpeggiolists(pc),a1
- moveq #0,d1
- move.b (a1,d5.w),d1
- ext.w d1
- add.w d1,d0
- move.w d0,$0020(a2)
- lea playperiods(pc),a3
- add.w d0,d0
- move.w $0010(a2),d4
- move.w (a3,d0.w),$000a(a2)
- move.l 4(a2),(a6,d4.w)
- move.w 8(a2),4(a6,d4.w)
- move.w $000a(a2),6(a6,d4.w)
-
- nonote rts
-
- **********************************************************************
-
- doeffect move.w $0010(a2),d4
- bsr.w doadsrcurve
- bsr.w dowaveform
- bsr.w doarpeggio
- bsr.b dosoundtracker
- bsr.w dovibrato
- bsr.b dopitchbend
- bsr.w donoteslide
- move.w $003a(a2),d0
- add.w d0,$000a(a2)
- cmpi.w #$005f,$000a(a2)
- bgt.b notlow
- move.w #$005f,$000a(a2)
- move.w $000a(a2),6(a6,d4.w)
- rts
-
- **********************************************************************
-
- notlow cmpi.w #$1680,$000a(a2)
- blt.b pitchok
- move.w #$1680,$000a(a2)
-
- pitchok move.w $000a(a2),6(a6,d4.w)
- rts
-
- **********************************************************************
-
- dopitchbend movea.l $0016(a2),a4
- moveq #0,d0
- move.b $000c(a4),d0
- beq.b nopitch
- move.b $000d(a4),d1
- cmp.b $0037(a2),d1
- bne.b pitchdelay
- ext.w d0
- add.w d0,$003a(a2)
-
- nopitch rts
-
- **********************************************************************
-
- pitchdelay addq.b #1,$0037(a2)
- rts
-
- **********************************************************************
-
- dosoundtracker move.w $0032(a2),d0
- cmpi.w #$0070,d0
- blt.b noarp
- andi.w #$000f,d0
- tst.b 4(a0)
- bne.b egal
- cmpi.b #5,d0
- blt.b noarp
-
- egal add.w d0,d0
- lea steffect(pc),a1
- move.w (a1,d0.w),d0
- lea arpeggio(pc),a1
- jmp (a1,d0.w)
-
- noarp rts
-
- **********************************************************************
-
- steffect dc.w arpeggio-arpeggio
- dc.w pitchup-arpeggio
- dc.w pitchdown-arpeggio
- dc.w volumeup-arpeggio
- dc.w volumedown-arpeggio
- dc.w setadsrattack-arpeggio
- dc.w setpatternlen-arpeggio
- dc.w novolchange-arpeggio
- dc.w novolchange-arpeggio
- dc.w novolchange-arpeggio
- dc.w novolchange-arpeggio
- dc.w novolchange-arpeggio
- dc.w volumechange-arpeggio
- dc.w novolchange-arpeggio
- dc.w novolchange-arpeggio
- dc.w speedchange-arpeggio
-
- donoteslide move.w $0032(a2),d0
- beq.b nodestnote
- cmpi.w #$0070,d0
- bge.b nodestnote
- move.w $0034(a2),d1
- beq.b nodestnote
- add.w d0,d0
- lea playperiods(pc),a1
- move.w (a1,d0.w),$003c(a2)
- move.w $003c(a2),d0
- sub.w $000a(a2),d0
- beq.b noslider
- bpl.b itshigher
- neg.w d1
-
- itshigher move.w d1,$003e(a2)
-
- nodestnote move.w $003e(a2),d1
- beq.b noslider
- bmi.b downwithit
- add.w d1,$000a(a2)
- move.w $000a(a2),d0
- cmp.w $003c(a2),d0
- blt.b noslider
- clr.w $003e(a2)
- move.w $003c(a2),$000a(a2)
- rts
-
- **********************************************************************
-
- downwithit add.w d1,$000a(a2)
- move.w $000a(a2),d0
- cmp.w $003c(a2),d0
- bgt.b noslider
- clr.w $003e(a2)
- move.w $003c(a2),$000a(a2)
-
- noslider rts
-
- **********************************************************************
-
- arpeggio lea myatab(pc),a1
- move.w $0034(a2),d0
- move.b d0,2(a1)
- andi.b #$000f,2(a1)
- lsr.w #4,d0
- move.b d0,(a1)
- move.b 6(a0),d0
- move.b (a1,d0.w),d0
- add.w $0020(a2),d0
- add.w d0,d0
- lea playperiods(pc),a1
- move.w (a1,d0.w),d0
- move.w d0,$000a(a2)
- rts
-
- **********************************************************************
-
- myatab ori.b #0,d0
-
- pitchup move.w $0034(a2),d0
- neg.w d0
- move.w d0,$003a(a2)
- rts
-
- **********************************************************************
-
- pitchdown move.w $0034(a2),d0
- move.w d0,$003a(a2)
- rts
-
- **********************************************************************
-
- volumeup tst.w $0012(a2)
- bne.b novolchange
- tst.b 4(a0)
- bne.b noinsset
- tst.w $0030(a2)
- beq.b noinsset
- movea.l $0016(a2),a4
- move.b $0011(a4),$000d(a2)
-
- noinsset move.w $0034(a2),d1
- add.w d1,d1
- add.w d1,d1
- move.w $000c(a2),d0
- add.w d1,d0
- cmpi.w #$0100,d0
- blt.b not256
- moveq #0,d0
- not.b d0
-
- not256 move.w d0,$000c(a2)
- rts
-
- **********************************************************************
-
- volumedown tst.w $0012(a2)
- bne.b novolchange
- tst.b 4(a0)
- bne.b noinsset2
- tst.w $0030(a2)
- beq.b noinsset2
- movea.l $0016(a2),a4
- move.b $0011(a4),$000d(a2)
-
- noinsset2 move.w $0034(a2),d1
- add.w d1,d1
- add.w d1,d1
- move.w $000c(a2),d0
- sub.w d1,d0
- bpl.b not00
- clr.w d0
-
- not00 move.w d0,$000c(a2)
-
- novolchange rts
-
- **********************************************************************
-
- setadsrattack movea.l $0016(a2),a4
- move.w $0034(a2),d0
- move.b d0,$0010(a4)
- move.b d0,$0011(a4)
- rts
-
- **********************************************************************
-
- setpatternlen move.b $0035(a2),5(a0)
- rts
-
- **********************************************************************
-
- volumechange move.w $0034(a2),d0
- move.w d0,8(a6,d4.w)
- add.w d0,d0
- add.w d0,d0
- cmpi.w #$00ff,d0
- blt.b notff
- move.w #$00ff,d0
-
- notff move.w d0,$000c(a2)
- rts
-
- **********************************************************************
-
- speedchange move.b $0035(a2),d0
- andi.b #$000f,d0
- beq.b novolchange
- move.b d0,1(a0)
- rts
-
- **********************************************************************
-
- dovibrato movea.l $0016(a2),a4
- tst.b 9(a4)
- beq.b long03
- move.b $000b(a4),d6
- cmp.b $002b(a2),d6
- beq.b novdelay
- addq.b #1,$002b(a2)
-
- long03 rts
-
- **********************************************************************
-
- novdelay move.b $000a(a4),d7
- sub.b d7,d6
- move.b d6,$002b(a2)
- move.b 9(a4),d6
- cmp.b $002d(a2),d6
- bne.b notvsame
- move.b #-1,$002d(a2)
-
- notvsame addq.b #1,$002d(a2)
- clr.w d7
- move.w $002c(a2),d6
- move.b 8(a4),d7
- lsl.w #4,d7
- add.w d6,d7
- movea.l vibratolists(pc),a4
- move.b (a4,d7.w),d6
- ext.w d6
- add.w d6,$000a(a2)
- rts
-
- **********************************************************************
-
- doarpeggio movea.l $0016(a2),a4
- tst.b 5(a4)
- beq.b long02
- move.b 7(a4),d6
- cmp.b $0027(a2),d6
- beq.b noadelay
- addq.b #1,$0027(a2)
-
- long02 rts
-
- **********************************************************************
-
- noadelay move.b 6(a4),d7
- sub.b d7,d6
- move.b d6,$0027(a2)
- clr.w d6
- move.b 5(a4),d6
- cmp.b $0029(a2),d6
- bne.b notasame
- move.b #-1,$0029(a2)
-
- notasame addq.b #1,$0029(a2)
- move.w $0028(a2),d6
- clr.w d7
- move.b 4(a4),d7
- lsl.w #4,d7
- add.w d6,d7
- movea.l arpeggiolists(pc),a4
- move.b (a4,d7.w),d6
- ext.w d6
- add.w $0020(a2),d6
- lea playperiods(pc),a4
- add.w d6,d6
- move.w (a4,d6.w),$000a(a2)
- rts
-
- **********************************************************************
-
- dowaveform movea.l $0016(a2),a4
- tst.b 1(a4)
- beq.b long0
- move.b 3(a4),d6
- cmp.b $0023(a2),d6
- beq.b nowdelay
- addq.b #1,$0023(a2)
-
- long0 rts
-
- **********************************************************************
-
- nowdelay move.b 2(a4),d7
- sub.b d7,d6
- move.b d6,$0023(a2)
- move.b 1(a4),d6
- cmp.b $0025(a2),d6
- bne.b notsame
- move.b #-1,$0025(a2)
-
- notsame addq.b #1,$0025(a2)
- move.w $0024(a2),d6
- clr.w d7
- move.b (a4),d7
- lsl.w #4,d7
- add.w d6,d7
- moveq #0,d6
- movea.l wavelists(pc),a4
- move.b (a4,d7.w),d6
- bpl.b allwaveok
- subq.b #1,$0025(a2)
- rts
-
- **********************************************************************
-
- allwaveok move.b d6,$0049(a2)
- lsl.w #6,d6
- movea.l sampletab(pc),a4
- adda.l d6,a4
- move.l (a4)+,$001a(a2)
- move.w (a4),$001e(a2)
- move.l $001a(a2),(a6,d4.w)
- move.w $001e(a2),4(a6,d4.w)
- rts
-
- **********************************************************************
-
- doadsrcurve bsr.b doadsrcalc
- move.w $000c(a2),d0
- lsr.w #2,d0
- move.w d0,8(a6,d4.w)
- rts
-
- **********************************************************************
-
- doadsrcalc movea.l $0016(a2),a4
- lea $0010(a4),a4
- tst.w $0012(a2)
- beq.b noadsr
- clr.w d6
- clr.w d7
- cmpi.w #4,$0012(a2)
- beq.b attack
- cmpi.w #3,$0012(a2)
- beq.b decay
- cmpi.w #2,$0012(a2)
- beq.b sustain
- cmpi.w #1,$0012(a2)
- beq.b release
-
- noadsr rts
-
- **********************************************************************
-
- attack move.b (a4),d6
- move.b 1(a4),d7
- add.w d7,$000c(a2)
- cmp.w $000c(a2),d6
- bgt.b returnadsr
- move.w d6,$000c(a2)
- subq.w #1,$0012(a2)
- rts
-
- **********************************************************************
-
- decay move.b 2(a4),d6
- move.b 3(a4),d7
- beq.b nodecay
- sub.w d7,$000c(a2)
- cmp.w $000c(a2),d6
- blt.b returnadsr
- move.w d6,$000c(a2)
-
- nodecay subq.w #1,$0012(a2)
- rts
-
- **********************************************************************
-
- sustain move.b 4(a4),d6
- cmp.w $0014(a2),d6
- bne.b contsustain
- subq.w #1,$0012(a2)
- rts
-
- **********************************************************************
-
- release move.b 5(a4),d6
- move.b 6(a4),d7
- beq.b norelease
- sub.w d7,$000c(a2)
- cmp.w $000c(a2),d6
- blt.b returnadsr
- move.w d6,$000c(a2)
-
- norelease subq.w #1,$0012(a2)
-
- returnadsr rts
-
- **********************************************************************
-
- contsustain addq.w #1,$0014(a2)
- rts
-
- **********************************************************************
-
- dma dc.w $0
-
- **********************************************************************
-
- voice1 dc.l $0 ; pos. and trans. offset
- dc.l $0 ; samplestard
- dc.w $0 ; samplelength
- dc.w $0 ; sampleperiod
- dc.w $0 ; samplevolume
- dc.w $1 ; dma-enable bit
- dc.w $a0 ; channel-register offset
- dc.w $0 ; adsr-status
- dc.w $0 ; counter for sustain
- dc.l $0 ; inst. address
- dc.l $0 ; repeatstart
- dc.w $0 ; repeatlength
- dc.w $0 ; original-note
- dc.w $0 ; counter for wavelist delay
- dc.w $0 ; counter for wavelist offset
- dc.w $0 ; counter for arpeggio delay
- dc.w $0 ; counter for arpeggio offset
- dc.w $0 ; counter for vibrato delay
- dc.w $0 ; counter for vibrato offcet
- dc.w $0 ; current-note
- dc.w $0 ; current-ins.
- dc.w $0 ; current-fx
- dc.w $0 ; current-fx-info
- dc.w $0 ; counter for pitchbend
- dc.w $0 ; inst. transp
- dc.w $0 ; pitchbend-value
- dc.w $0 ; note-slide-note
- dc.w $0 ; note-slide-speed
- dc.l $0 ; note-address
- dc.w $0 ; empty-notes-counter
- dc.w $0 ; note-transpose
- dc.w $0 ; current-waveform used
-
- **********************************************************************
-
- voice2 dc.l $0
- dc.l $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $2
- dc.w $b0
- dc.w $0
- dc.w $0
- dc.l $0
- dc.l $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.l $0
- dc.w $0
- dc.w $0
- dc.w $0
-
- **********************************************************************
-
- voice3 dc.l $0
- dc.l $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $4
- dc.w $c0
- dc.w $0
- dc.w $0
- dc.l $0
- dc.l $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.l $0
- dc.w $0
- dc.w $0
- dc.w $0
-
- **********************************************************************
-
- voice4 dc.l $0
- dc.l $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $8
- dc.w $d0
- dc.w $0
- dc.w $0
- dc.l $0
- dc.l $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.l $0
- dc.w $0
- dc.w $0
- dc.w $0
-
- **********************************************************************
-
- playperiods dc.w $0
- dc.w $1680,$1530,$1400,$12e0,$11d0,$10d0,$0fe0,$0f00
- dc.w $0e20,$0d60,$0ca0,$0be8,$0b40,$0a98,$0a00,$0970
- dc.w $08e8,$0868,$07f0,$0780,$0710,$06b0,$0650,$05f4
- dc.w $05a0,$054c,$0500,$04b8,$0474,$0434,$03f8,$03c0
- dc.w $0388,$0358,$0328,$02fa,$02d0,$02a6,$0280,$025c
- dc.w $023a,$021a,$01fc,$01e0,$01c5,$01ac,$0194,$017d
- dc.w $0168,$0153,$0140,$012e,$011d,$010d,$00fe,$00f0
- dc.w $00e2,$00d6,$00ca,$00be,$00b4,$00aa,$00a0,$0097
- dc.w $008f,$0087,$007f,$0078,$0071,$006b,$0065,$005f
-
- **********************************************************************
-
- waveadds blk.w 8,0
-
- song dc.l muzak
- sampleno dc.w 0
- midimode dc.w 0
-
- length blk.w 4,0
- rating dc.l 0
-
- section 'DATA',code_c
-
- **********************************************************************
- muzak incbin "dh0:multimedia/modules/sidmon/demo song 1"
- **********************************************************************
- end
-