home *** CD-ROM | disk | FTP | other *** search
-
- ; Replay-routine for Soundtracker v3.0
-
- ; Coded by Il Scuro
-
-
-
- j: bsr mt_init
- move.w #$4000,$dff09a
- move.l $00006c,mt_oldirq
- move.l #mt_newirq,$00006c
- move.w #$c000,$dff09a
-
- mouse: btst #6,$bfe001
- bne.s mouse
-
- move.w #$000f,$dff096
- move.w #$4000,$dff09a
- move.l mt_oldirq,$00006c
- move.w #$c000,$dff09a
- rts
-
-
- *------------------------------------------------------------------
- mt_init:
- move.l #instr01,mt_sample1
- move.l #instr02,mt_sample2
- move.l #instr03,mt_sample3
- move.l #instr04,mt_sample4
- move.l #instr05,mt_sample5
- move.l #instr06,mt_sample6
- move.l #instr07,mt_sample7
- move.l #instr08,mt_sample8
- move.l #instr09,mt_sample9
- move.l #instr10,mt_sample10
- move.l #instr11,mt_sample11
- move.l #instr12,mt_sample12
- move.l #instr13,mt_sample13
- move.l #instr14,mt_sample14
- move.l #instr15,mt_sample15
-
- move.l #mt_sample1,a0
- clr.l d0
- mt_clear:
- move.l (a0,d0),a1
- clr.l (a1)
- addq #4,d0
- cmp.l #$3c,d0
- bne.s mt_clear
-
- move.w #0,$dff0a8
- move.w #0,$dff0b8
- move.w #0,$dff0c8
- move.w #0,$dff0d8
- eor.w #$c000,mt_voice0+12
- clr.l mt_partnrplay
- clr.l mt_partnote
- clr.l mt_partpoint
-
- move.b mt_sampleinfo+$1d6,mt_maxpart+1
- move.b mt_sampleinfo+$1d7,mt_kn1+1
- rts
- *------------------------------------------------------------------
- mt_newirq:
- movem.l d0-d7/a0-a6,-(a7)
- bsr mt_music
- movem.l (a7)+,d0-d7/a0-a6
- dc.w $4ef9
-
- mt_oldirq:
- dc.l 0
- *------------------------------------------------------------------
- mt_music:
- addq.l #1,mt_counter
- move.l mt_tempo,d0
- cmp.l mt_counter,d0
- bne.s mt_notsix
- clr.l mt_counter
- bra mt_rout2
-
- mt_notsix:
- lea mt_aud1temp,a6
- tst.b 3(a6)
- beq.s mt_arp1
- move.l #$dff0a0,a5
- bsr.s mt_arprout
-
- mt_arp1:
- lea mt_aud2temp,a6
- tst.b 3(a6)
- beq.s mt_arp2
- move.l #$dff0b0,a5
- bsr.s mt_arprout
-
- mt_arp2:
- lea mt_aud3temp,a6
- tst.b 3(a6)
- beq.s mt_arp3
- move.l #$dff0c0,a5
- bsr.s mt_arprout
-
- mt_arp3:
- lea mt_aud4temp,a6
- tst.b 3(a6)
- beq.s mt_arp4
- move.l #$dff0d0,a5
- bsr.s mt_arprout
-
- mt_arp4:
- bra mt_stop
-
-
- mt_arprout:
- tst.w 24(a6)
- beq.s mt_noslide
-
- clr.w d0
- move.b 25(a6),d0
- lsr.b #4,d0
- tst.b d0
- beq.s mt_voldwn2
- bsr mt_pushvol1
- bra.s mt_noslide
-
- mt_voldwn2:
- clr.w d0
- move.b 25(a6),d0
- bsr mt_pushvol2
-
- mt_noslide:
- move.b 2(a6),d0
- and.b #$0f,d0
- tst.b d0
- beq.L mt_arpegrt
- cmp.b #3,d0
- beq.L mt_arpegrt
- cmp.b #4,d0
- beq.L mt_arpegrt
- cmp.b #5,d0
- beq.L mt_arpegrt
- cmp.b #1,d0
- beq.s mt_portup
- cmp.b #6,d0
- beq.s mt_portup
- cmp.b #7,d0
- beq.s mt_portup
- cmp.b #8,d0
- beq.s mt_portup
- cmp.b #2,d0
- beq.s mt_portdwn
- cmp.b #9,d0
- beq.s mt_portdwn
- cmp.b #10,d0
- beq.s mt_portdwn
- cmp.b #11,d0
- beq.s mt_portdwn
- cmp.b #13,d0
- beq.s mt_volup
- rts
-
- mt_portup:
- clr.w d0
- move.b 3(a6),d0
- sub.w d0,22(a6)
- cmp.w #$71,22(a6)
- bpl.s mt_ok1
- move.w #$71,22(a6)
-
- mt_ok1:
- move.w 22(a6),6(a5)
- rts
-
- mt_portdwn:
- clr.w d0
- move.b 3(a6),d0
- add.w d0,22(a6)
- cmp.w #$358,22(a6)
- bmi.s mt_ok2
- move.w #$358,22(a6)
-
- mt_ok2:
- move.w 22(a6),6(a5)
- rts
-
- mt_volup:
- clr.w d0
- move.b 3(a6),d0
- lsr.b #4,d0
- tst.b d0
- beq.s mt_voldwn
-
- mt_pushvol1:
- add.w d0,$12(a6)
- cmp.w #$40,$12(a6)
- bmi.s mt_ok3
- move.w #$40,$12(a6)
-
- mt_ok3:
- move.w $12(a6),8(a5)
- rts
-
- mt_voldwn:
- clr.w d0
- move.b 3(a6),d0
-
- mt_pushvol2:
- and.b #$0f,d0
- sub.w d0,$12(a6)
- bpl.s mt_ok4
- clr.w $12(a6)
-
- mt_ok4:
- move.w $12(a6),8(a5)
- rts
-
- mt_arpegrt:
- cmp.l #1,mt_counter
- beq.s mt_loop2
- cmp.l #2,mt_counter
- beq.s mt_loop3
- cmp.l #3,mt_counter
- beq.s mt_loop4
- cmp.l #4,mt_counter
- beq.s mt_loop2
- cmp.l #5,mt_counter
- beq.s mt_loop3
- rts
-
- mt_loop2:
- clr.l d0
- move.b 3(a6),d0
- lsr.b #4,d0
- bra.s mt_cont
-
- mt_loop3:
- clr.l d0
- move.b 3(a6),d0
- and.b #$0f,d0
- bra.s mt_cont
-
- mt_loop4:
- move.w 16(a6),d2
- bra.s mt_endpart
-
- mt_cont:
- lsl.w #1,d0
- clr.l d1
- move.w 16(a6),d1
- lea mt_arpeggio,a0
-
- mt_loop5:
- move.w (a0,d0),d2
- cmp.w (a0),d1
- beq.s mt_endpart
- addq.l #2,a0
- bra.s mt_loop5
-
- mt_endpart:
- move.w d2,6(a5)
- rts
-
- mt_rout2:
- lea mt_sampleinfo,a0
- move.l a0,a3
- add.l #$0c,a3
- move.l a0,a2
- add.l #$1d8,a2
- add.l #$258,a0
- move.l mt_partnrplay,d0
- clr.l d1
- move.b (a2,d0),d1
- mulu #$0400,d1
- add.l mt_partnote,d1
- move.l d1,mt_partpoint
- clr.w mt_dmacon
-
- move.l #$dff0a0,a5
- lea mt_aud1temp,a6
- bsr mt_playit
-
- move.l #$dff0b0,a5
- lea mt_aud2temp,a6
- bsr mt_playit
-
- move.l #$dff0c0,a5
- lea mt_aud3temp,a6
- bsr mt_playit
-
- move.l #$dff0d0,a5
- lea mt_aud4temp,a6
- bsr mt_playit
-
- move.l #mt_speed,d0
- mt_rls:
- dbf d0,mt_rls
-
- move.l #$8000,d0
- add.w mt_dmacon,d0
- move.w d0,$dff096
-
- move.l #mt_aud4temp,a6
- cmp.w #1,14(a6)
- bne.s mt_voice3
- move.l 10(a6),$dff0d0
- move.w #1,$dff0d4
-
- mt_voice3:
- move.l #mt_aud3temp,a6
- cmp.w #1,14(a6)
- bne.s mt_voice2
- move.l 10(a6),$dff0c0
- move.w #1,$dff0c4
-
- mt_voice2:
- move.l #mt_aud2temp,a6
- cmp.w #1,14(a6)
- bne.s mt_voice1
- move.l 10(a6),$dff0b0
- move.w #1,$dff0b4
-
- mt_voice1:
- move.l #mt_aud1temp,a6
- cmp.w #1,14(a6)
- bne.s mt_voice0
- move.l 10(a6),$dff0a0
- move.w #1,$dff0a4
-
- mt_voice0:
- lea mt_modulate,a0
- move.l mt_partnote,d0
- lsl.b #7,d0
- add.l #$10,d0
- move.l d0,mt_partnote
- cmp.l #$400,d0
- bne.s mt_stop
- clr.l mt_partnote
- addq.l #1,mt_partnrplay
- clr.l d0
- move.w mt_maxpart,d0
- move.l mt_partnrplay,d1
- cmp.l d0,d1
- bne.s mt_stop
- clr.l mt_partnrplay
- mt_stop:
- rts
-
-
- mt_playit:
- move.l (a0,d1),(a6)
- addq.l #4,d1
- clr.l d2
- move.b 2(a6),d2
- and.b #$f0,d2
- lsr.b #4,d2
- tst.b d2
- beq.s mt_nosamplechange
-
- clr.l d3
- lea mt_samples,a1
- move.l d2,d4
- mulu #4,d2
- mulu #$1e,d4
- move.l (a1,d2),4(a6)
- move.w (a3,d4),8(a6)
- move.w 2(a3,d4),18(a6)
- move.w 4(a3,d4),d3
- tst.w d3
- beq.s mt_displace
- move.l 4(a6),d2
- add.l d3,d2
- move.l d2,4(a6)
- move.l d2,10(a6)
- move.w 6(a3,d4),8(a6)
- move.w 6(a3,d4),14(a6)
- move.w 18(a6),8(a5)
- bra.s mt_nosamplechange
-
- mt_displace:
- move.l 4(a6),d2
- add.l d3,d2
- move.l d2,10(a6)
- move.w 6(a3,d4),14(a6)
- move.w 18(a6),8(a5)
-
- mt_nosamplechange:
- tst.w (a6)
- beq.s mt_retrout
- move.w (a6),16(a6)
- move.w 20(a6),$dff096
- move.l 4(a6),(a5)
- move.w 8(a6),4(a5)
- move.w (a6),6(a5)
- move.w 20(a6),d0
- or.w d0,mt_dmacon
-
- mt_retrout:
- move.w 20(a6),d0
- lsl.w #4,d0
- add.w 20(a6),d0
- move.w d0,$dff09e
-
- tst.w (a6)
- beq.s mt_nonewper
- move.w (a6),22(a6)
-
- mt_nonewper:
- move.b 2(a6),d0
- and.b #$0f,d0
- cmp.b #14,d0
- beq.s mt_zx3
- cmp.b #15,d0
- bne.s mt_noset
-
- move.w 2(a6),d0
- and.l #15,d0
- move.l d0,mt_tempo
- rts
-
- mt_zx3:
- move.w 2(a6),24(a6)
- rts
-
- mt_noset:
- tst.b 3(a6)
- bne.s mt_noclr
- clr.w 24(a6)
-
- mt_noclr:
- cmp.b #3,d0
- beq.s mt_modvol
- cmp.b #6,d0
- beq.s mt_modvol
- cmp.b #9,d0
- beq.s mt_modvol
- cmp.b #4,d0
- beq.s mt_modper
- cmp.b #7,d0
- beq.s mt_modper
- cmp.b #10,d0
- beq.s mt_modper
- cmp.b #5,d0
- beq.s mt_modvolper
- cmp.b #8,d0
- beq.s mt_modvolper
- cmp.b #11,d0
- beq.s mt_modvolper
- cmp.b #12,d0
- bne.s mt_nochnge
- move.b 3(a6),8(a5)
- mt_nochnge:
- rts
-
- mt_modvol:
- move.w 20(a6),d0
- bra.s mt_push
-
- mt_modper:
- move.w 20(a6),d0
- lsl.w #4,d0
- bra.s mt_push
-
- mt_modvolper:
- move.w 20(a6),d0
- lsl.w #4,d0
- add.w 20(a6),d0
-
- mt_push:
- add.w #$8000,d0
- move.w d0,$dff09e
- rts
- *------------------------------------------------------------------
- mt_aud1temp:
- dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
- dc.w $0000,$0000,$0001,$0000,$0000
-
- mt_aud2temp:
- dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
- dc.w $0000,$0000,$0002,$0000,$0000
-
- mt_aud3temp:
- dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
- dc.w $0000,$0000,$0004,$0000,$0000
-
- mt_aud4temp:
- dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
- dc.w $0000,$0000,$0008,$0000,$0000
-
- mt_partnote: dc.l 0
- mt_partnrplay: dc.l 0
- mt_counter: dc.l 0
- mt_tempo: dc.l 6
- mt_partpoint: dc.l 0
- mt_samples: dc.w $0000,$0000
-
- mt_sample1: dc.l 0
- mt_sample2: dc.l 0
- mt_sample3: dc.l 0
- mt_sample4: dc.l 0
- mt_sample5: dc.l 0
- mt_sample6: dc.l 0
- mt_sample7: dc.l 0
- mt_sample8: dc.l 0
- mt_sample9: dc.l 0
- mt_sample10: dc.l 0
- mt_sample11: dc.l 0
- mt_sample12: dc.l 0
- mt_sample13: dc.l 0
- mt_sample14: dc.l 0
- mt_sample15: dc.l 0
-
- mt_maxpart: dc.w $0000
- mt_kn1: dc.w $0000
- mt_dmacon: dc.w $0000
-
- mt_modulate: dc.w $0c39,$0039,$00bf,$ec01,$6630,$0839,$0007,$00bf
- dc.w $e001,$6626,$2c79,$0000,$0004,$43fa,$0020,$4eae
- dc.w $fe68,$2c40,$4280,$41fa,$0026,$223c,$0000,$0032
- dc.w $4eae,$ffa6,$60ee,$0000,$0000,$4e75,$696e,$7475
- dc.w $6974,$696f,$6e2e,$6c69,$6272,$6172,$7900,$0104
- dc.w $1753,$6f75,$6e64,$5472,$6163,$6b65,$7220,$5632
- dc.w $0063,$00f0,$20a9,$2054,$6865,$204a,$756e,$676c
- dc.w $6520,$436f,$6d6d,$616e,$6400,$0000
-
- mt_arpeggio: dc.w $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,$0000,$0000,$0000
-
- mt_speed = $01f4
-
- instr01: blk.b 3268,0 ;smack
- instr02: blk.b 8342,0 ;guitar2
- instr03: blk.b 5240,0 ;snare4
- instr04: blk.b 1510,0 ;bassdrum9
- instr05: blk.b 2044,0 ;closedhi
- instr06: blk.b 3622,0 ;bassynth
- instr07: blk.b 3898,0 ;guitar1
- instr08: blk.b 0,0 ;
- instr09: blk.b 0,0 ;
- instr10: blk.b 0,0 ;
- instr11: blk.b 0,0 ;
- instr12: blk.b 0,0 ;
- instr13: blk.b 0,0 ;
- instr14: blk.b 0,0 ;
- instr15: blk.b 0,0 ;
- mt_sampleinfo: blk.b 4696,0 ;
- *------------------------------------------------------------------
-