home *** CD-ROM | disk | FTP | other *** search
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * NoisePacker V3.0 PlayRoutine ©1991 Twins of Phenomena *
- * Used registers are d0-d7/a0-a6 It use lev6irq *
- * How to use it? 1. bsr np_init *
- * 2. bsr np_music (every vert.) *
- * 3. bsr np_end *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-
- np_data=$60000
-
- np_init: moveq #1,d0
- moveq #0,d1
- lea np_data,a4
- lea $dff000,a5
- lea np_oldirq(pc),a6
-
- move.l $78.w,(a6)+
- move.w d0,(a6)+
- move.l a4,a3
- add.w (a4)+,a3
- move.l a3,(a6)+
- move.w d1,(a6)+
- np_ini1: add.w (a4)+,a3
- move.l a3,(a6)+
- dbf d0,np_ini1
- move.w (a4)+,d0
- add.l d0,a3
-
- move.l #$82000006,(a6)+
- move.w #$0100,(a6)+
- move.l #np_portup,(a6)+
- move.l #np_portdown,(a6)+
- move.l #np_port,(a6)+
- move.l #np_vib,(a6)+
- move.l #np_port2,(a6)+
- move.l #np_vib2,(a6)+
- move.l #np_volslide,(a6)+
- move.l #np_arp,(a6)+
- move.l #np_songjmp,(a6)+
- move.l #np_setvol,(a6)+
- move.l #np_pattbreak,(a6)+
- move.l #np_filter,(a6)+
- move.l #np_setspeed,(a6)+
-
- moveq #0,d0
- move.l a4,a6
- add.w -8(a4),a6
- sub.w #12,a6
- np_ini2: move.l a3,2(a4)
- move.l a3,a2
- move.w 14(a4),d0
- add.w d0,d0
- add.l d0,a2
- move.l a2,8(a4)
- move.w 6(a4),d0
- add.w d0,d0
- add.l d0,a3
- add.w #16,a4
- cmp.l a4,a6
- bne.b np_ini2
-
- bset.b #1,$bfe001
- move.w d1,$a8(a5)
- move.w d1,$b8(a5)
- move.w d1,$c8(a5)
- move.w d1,$d8(a5)
- move.w #$f,$96(a5)
-
- move.w #$2000,$9a(a5)
- lea $bfd000,a0
- move.b #$7f,$d00(a0)
- move.b #$08,$e00(a0)
- move.b #$80,$400(a0)
- move.b #$01,$500(a0)
- np_ini3: btst.b #0,$d00(a0)
- beq.b np_ini3
- move.b #$81,$d00(a0)
- move.w #$e000,$9a(a5)
- rts
-
- np_end: moveq #0,d0
- lea $dff000,a5
- move.w d0,$a8(a5)
- move.w d0,$b8(a5)
- move.w d0,$c8(a5)
- move.w d0,$d8(a5)
- bclr.b #1,$bfe001
- move.w #$f,$96(a5)
- move.w #$2000,$9a(a5)
- move.l np_oldirq(pc),$78.w
- rts
-
- np_music: moveq #0,d6
- lea $dff0d0,a4
- lea np_block(pc),a6
- subq.w #1,(a6)+
- bhi.w np_nonew
-
- move.l (a6)+,a1
- add.w (a6)+,a1
- move.l (a6)+,a0
- add.w (a1),a0
- move.l (a6)+,d2
- lea np_data-8,a1
- lea np_voidat1(pc),a2
-
- moveq #8,d0
- moveq #0,d1
- moveq #0,d4
- moveq #0,d5
- np_loop1: move.w (a0)+,d1
-
- tst.w (a2)+
- bpl.b np_lop3
- addq.w #1,-(a2)
- add.w #32,a2
- addq.w #8,a4
- bra.w np_lop7
- np_lop3: move.l d2,a3
- add.l d1,a3
- add.w (a2),a3
-
- move.b (a3)+,d1
- bpl.b np_lop4
- ext.w d1
- addq.w #1,d1
- addq.w #1,(a2)
- move.w d1,-(a2)
- move.w d6,8(a2)
- add.w #32,a2
- addq.w #8,a4
- bra.w np_lop7
- np_lop4: move.b (a3)+,d3
- move.b (a3)+,d4
- addq.w #3,(a2)+
-
- move.l a1,a3
- move.b d1,d7
- lsl.w #8,d7
- or.b d3,d7
- andi.w #$1f0,d7
- bne.b np_loop3
-
- add.w (a2)+,a3
- addq.w #2,a2
- addq.w #2,a3
- bra.b np_loop4
- np_loop3: move.w d7,(a2)+
- add.w d7,a3
- move.w (a3)+,(a2)+
- np_loop4: andi.w #$f,d3
- move.w d3,(a2)+
- move.w d4,(a2)+
-
- andi.w #$fe,d1
- beq.b np_loop5
-
- move.w np_periods-2(pc,d1.w),d7
-
- subq.w #3,d3
- beq.w np_setport
- subq.w #2,d3
- beq.w np_setport
-
- or.w d0,d5
- move.w d7,(a2)+
- move.w d1,(a2)+
- move.w d6,(a2)+
-
- move.l (a3)+,(a4)+
- move.w (a3)+,(a4)+
- move.l (a3)+,(a2)+
- move.w (a3)+,(a2)+
-
- subq.w #6,d3
- bmi.b np_loop6
- add.w d3,d3
- add.w d3,d3
- move.l 38(a6,d3.w),a3
- jmp (a3)
-
- np_loop5: add.w #12,a2
- addq.w #6,a4
- sub.w #11,d3
- bmi.b np_loop6
- add.w d3,d3
- add.w d3,d3
- move.l 38(a6,d3.w),a3
- jmp (a3)
-
- np_periods: dc.w $0358,$0328,$02fa,$02d0,$02a6,$0280,$025c,$023a,$021a
- dc.w $01fc,$01e0,$01c5,$01ac,$0194,$017d,$0168,$0153,$0140
- dc.w $012e,$011d,$010d,$00fe,$00f0,$00e2,$00d6,$00ca,$00be
- dc.w $00b4,$00aa,$00a0,$0097,$008f,$0087,$007f,$0078,$0071
-
- np_loop6: move.w -12(a2),(a4)+
- np_loop7: move.w -18(a2),(a4)
- addq.w #8,a2
- np_lop7: sub.w #$18,a4
- lsr.w #1,d0
- bne.w np_loop1
-
- move.w d5,6(a4)
- or.w d5,(a6)+
- move.w (a6)+,-20(a6)
- move.l #np_irq1,$78.w
- move.b #$19,$bfde00
-
- bset.b #0,(a6)+
- beq.b np_break
- addq.b #1,(a6)
- cmp.b #64,(a6)
- bne.b np_next
- np_break: move.b d6,(a6)
- move.l d6,-32(a2)
- move.l d6,-64(a2)
- move.l d6,-96(a2)
- move.l d6,-128(a2)
- lea np_block+2(pc),a6
- move.l (a6)+,a0
- addq.w #2,(a6)
- move.w (a6),d0
- cmp.w -4(a0),d0
- bne.b np_next
- move.w -2(a0),(a6)
- np_next: rts
-
- np_setvol: move.w d4,-18(a2)
- bra.b np_loop6
-
- np_pattbreak: move.b d6,4(a6)
- bra.b np_loop6
-
- np_songjmp: move.b #63,5(a6)
- move.b d4,-9(a6)
- bra.b np_loop6
-
- np_setspeed: move.w d4,2(a6)
- bra.w np_loop6
-
- np_filter: andi.b #$fd,$bfe001
- or.b d4,$bfe001
- bra.w np_loop6
-
- np_setport: add.w #12,a2
- addq.w #8,a4
- cmp.w -12(a2),d7
- slt.b (a2)
- beq.b np_clear
- move.w d7,2(a2)
- bra.w np_loop7
- np_clear: move.w d6,2(a2)
- bra.w np_loop7
-
- np_nonew: lea np_voidat1(pc),a0
- moveq #3,d0
- np_lop1: move.w 8(a0),d1
- beq.b np_lop2
- subq.w #8,d1
- bhi.b np_lop2
- addq.w #7,d1
- add.w d1,d1
- add.w d1,d1
- move.l 20(a6,d1.w),a3
- jmp (a3)
- np_lop2: addi.w #32,a0
- subi.w #$0010,a4
- dbf d0,np_lop1
- rts
-
- np_portup: move.w 10(a0),d2
- sub.w d2,12(a0)
- cmpi.w #$0071,12(a0)
- bpl.b np_portup2
- move.w #$71,12(a0)
- np_portup2: move.w 12(a0),6(a4)
- bra.b np_lop2
-
- np_portdown: move.w 10(a0),d2
- add.w d2,12(a0)
- cmpi.w #$0358,12(a0)
- bmi.b np_portdown2
- move.w #$358,12(a0)
- np_portdown2: move.w 12(a0),6(a4)
- bra.b np_lop2
-
- np_arp: move.w -2(a6),d2
- sub.w 16(a6),d2
- neg.w d2
- move.b np_arplist(pc,d2.w),d2
- beq.b np_arp0
- subq.w #2,d2
- beq.b np_arp2
- np_arp1: move.w 10(a0),d2
- lsr.w #3,d2
- andi.w #$000e,d2
- bra.b np_arp3
- np_arp2: move.w 10(a0),d2
- andi.w #$000f,d2
- add.w d2,d2
- np_arp3: add.w 14(a0),d2
- cmpi.w #$0048,d2
- bls.b np_arp4
- moveq #$48,d2
- np_arp4: lea np_periods-2(pc),a3
- move.w (a3,d2.w),6(a4)
- bra.w np_lop2
- np_arp0: move.w 12(a0),6(a4)
- bra.w np_lop2
-
- np_arplist:
- dc.b 0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1
-
- np_sin: dc.b $00,$18,$31,$4a,$61,$78,$8d,$a1,$b4,$c5,$d4,$e0,$eb,$f4,$fa,$fd
- dc.b $ff,$fd,$fa,$f4,$eb,$e0,$d4,$c5,$b4,$a1,$8d,$78,$61,$4a,$31,$18
-
- np_vib: move.w 10(a0),d3
- beq.b np_vib2
- move.w d3,30(a0)
- np_vib2: move.w 16(a0),d3
- lsr.w #2,d3
- andi.w #$001f,d3
- moveq #0,d2
- move.b np_sin(pc,d3.w),d2
- move.w 30(a0),d3
- andi.w #$000f,d3
- mulu d3,d2
- lsr.w #7,d2
- move.w 12(a0),d3
- tst.b 17(a0)
- bmi.b np_vibsub
- add.w d2,d3
- bra.b np_vib3
- np_vibsub: sub.w d2,d3
- np_vib3: move.w d3,6(a4)
- move.w 30(a0),d3
- lsr.w #2,d3
- andi.w #$003c,d3
- add.b d3,17(a0)
- cmp.b #20,d1
- bne.w np_lop2
-
- np_volslide: move.w 10(a0),d2
- add.b d2,7(a0)
- bmi.b np_vol3
- cmp.w #$40,6(a0)
- bmi.b np_vol2
- move.w #$40,6(a0)
- np_vol2: move.w 6(a0),8(a4)
- bra.w np_lop2
-
- np_vol3: move.w d6,6(a0)
- move.w d6,8(a4)
- bra.w np_lop2
-
- np_port: move.w 10(a0),d2
- beq.b np_port2
- move.w d2,28(a0)
-
- np_port2: move.w 26(a0),d2
- beq.b np_rts
- move.w 28(a0),d3
- tst.w 24(a0)
- bne.b np_sub
- add.w d3,12(a0)
- cmp.w 12(a0),d2
- bgt.b np_portok
- move.w d2,12(a0)
- move.w d6,26(a0)
- np_portok: move.w 12(a0),6(a4)
- np_rts: cmp.b #16,d1
- beq.b np_volslide
- bra.w np_lop2
-
- np_sub: sub.w d3,12(a0)
- cmp.w 12(a0),d2
- blt.b np_portok
- move.w d2,12(a0)
- move.w d6,26(a0)
- move.w 12(a0),6(a4)
- cmp.b #16,d1
- beq.w np_volslide
- bra.w np_lop2
-
- np_irq1: tst.b $bfdd00
- move.b #$19,$bfde00
- move.l #np_irq2,$78.w
- move.w np_block+16(pc),$dff096
- move.w #$2000,$dff09c
- rte
-
- np_irq2: move.l a0,-(a7)
- lea $dff000,a0
- tst.b $bfdd00
- move.l np_voidat1+18(pc),$d0(a0)
- move.w np_voidat1+22(pc),$d4(a0)
- move.l np_voidat1+50(pc),$c0(a0)
- move.w np_voidat1+54(pc),$c4(a0)
- move.l np_voidat1+82(pc),$b0(a0)
- move.w np_voidat1+86(pc),$b4(a0)
- move.l np_voidat1+114(pc),$a0(a0)
- move.w np_voidat1+118(pc),$a4(a0)
- move.l np_oldirq(pc),$78.w
- move.w #$2000,$9c(a0)
- move.l (a7)+,a0
- rte
-
- np_oldirq: dc.l 0
- np_block: blk.l 19,0
- np_voidat1: blk.l 32,0
-
-