home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Almathera Ten Pack 4: Demo 1
/
almathera_demo1.bin
/
utils
/
rippers
/
sources
/
npreplayv2.03i.s
< prev
next >
Wrap
Text File
|
1995-03-17
|
7KB
|
426 lines
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* NoisePacker V2.03 PlayRoutine ©1991 Twins of Phenomena. *
* Used registers are d0-d7/a0-a6. Using lev6irq. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
np_data=$60000
np_init:
lea np_data,a4
lea $dff000,a5
lea np_position(pc),a6
moveq #2,d0
moveq #0,d1
move.l a4,a3
np_init1:
add (a4)+,a3
move.l a3,(a6)+
dbf d0,np_init1
move (a4)+,d0
add.l d0,a3
move.l $78.w,(a6)+
move.l #$01060100,(a6)+
move #$8200,(a6)+
move.l d1,(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 -8(a4),a6
sub #12,a6
np_init2:
move.l a3,(a4)
move.l a3,a2
move 14(a4),d0
add d0,d0
add.l d0,a2
move.l a2,8(a4)
move 4(a4),d0
add d0,d0
add.l d0,a3
add #16,a4
cmp.l a4,a6
bne.s np_init2
bset #1,$bfe001
move d1,$a8(a5)
move d1,$b8(a5)
move d1,$c8(a5)
move d1,$d8(a5)
lea $bfd000,a0
move.b #$7f,$d00(a0)
move #$2000,$9a(a5)
move.b #$08,$e00(a0)
move.b #$80,$400(a0)
move.b #$01,$500(a0)
tst.b $d00(a0)
move #$7fff,$9c(a5)
move.b #$81,$d00(a0)
move #$e000,$9a(a5)
rts
np_end: moveq #0,d0
lea $dff000,a5
move d0,$a8(a5)
move d0,$b8(a5)
move d0,$c8(a5)
move d0,$d8(a5)
bclr #1,$bfe001
move #$f,$96(a5)
move #$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.b #1,(a6)
bhi np_nonew
lea np_position(pc),a3
move.l (a3)+,a0
add 6(a6),a0
move (a0),d0
move.l (a3)+,a0
add d0,a0
move.l (a3)+,a1
add 8(a6),a1
lea np_voidat1(pc),a2
moveq #8,d0
moveq #0,d5
np_loop1:
moveq #0,d1
move (a0)+,d1
lea (a1,d1.l),a3
move.b (a3)+,d1
move.b (a3)+,d3
move.b (a3)+,d4
move.b d3,d7
lsr.b #4,d7
move.b d1,d2
and #1,d2
beq.s np_loop2
moveq #$10,d2
np_loop2:
lea np_data-8,a3
or.b d7,d2
bne.s np_loop3
move.b 1(a2),d2
lsl #4,d2
add d2,a3
bra.s np_loop4
np_loop3:
move.b d2,1(a2)
lsl #4,d2
add d2,a3
move 6(a3),4(a2)
np_loop4:
and #$f,d3
move.b d3,2(a2)
move.b d4,3(a2)
and #$fe,d1
beq.s np_loop5
move np_periods-2(pc,d1.w),d7
subq #3,d3
beq np_setport
subq #2,d3
beq np_setport
or d0,d5
move.b d1,(a2)
move.b d6,49(a2)
move d7,24(a2)
move.l (a3)+,(a4)
move (a3)+,4(a4)
addq #2,a3
move.l (a3)+,72(a2)
move (a3)+,76(a2)
subq #6,d3
bmi.s np_loop6
add d3,d3
add d3,d3
move.l 42(a6,d3.w),a3
jmp (a3)
np_loop5:
sub #11,d3
bmi.s np_loop6
add d3,d3
add d3,d3
move.l 42(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 24(a2),6(a4)
np_loop7:
move 4(a2),8(a4)
addq #6,a2
sub #$10,a4
lsr #1,d0
bne np_loop1
move d5,$dff096
move.b d5,5(a6)
move.b 1(a6),(a6)
move.l #np_irq1,$78.w
move.b #$19,$bfde00
move.l np_position(pc),a0
bset #0,2(a6)
beq.s np_break
addq #3,8(a6)
cmp #192,8(a6)
bne.s np_next
np_break:
move d6,8(a6)
addq #2,6(a6)
move 6(a6),d0
cmp -4(a0),d0
bne.s np_next
move -2(a0),6(a6)
np_next:rts
np_setvol:
move.b d4,5(a2)
bra.s np_loop6
np_pattbreak:
move d6,2(a6)
bra.s np_loop6
np_songjmp:
move d6,2(a6)
move.b d4,7(a6)
bra.s np_loop6
np_setspeed:
move.b d4,1(a6)
bra np_loop6
np_filter:
and.b #$fd,$bfe001
or.b d4,$bfe001
bra np_loop6
np_setport:
move.b d6,50(a2)
move d7,26(a2)
cmp 24(a2),d7
beq.s np_clrport
bge np_loop7
move.b #1,50(a2)
bra np_loop7
np_clrport:
move d6,26(a2)
bra np_loop7
np_nonew:
lea np_voidat1(pc),a0
moveq #3,d0
np_lop1:moveq #0,d1
move.b 2(a0),d1
beq.s np_lop2
subq #8,d1
bhi.s np_lop2
addq #7,d1
add d1,d1
add d1,d1
move.l 10(a6,d1.w),a3
jmp (a3)
np_lop2:addq #6,a0
sub #$10,a4
dbf d0,np_lop1
rts
np_portup:
moveq #0,d2
move.b 3(a0),d2
sub d2,24(a0)
cmp #$71,24(a0)
bpl.s np_portup2
move #$71,24(a0)
np_portup2:
move 24(a0),6(a4)
bra.s np_lop2
np_portdown:
moveq #0,d2
move.b 3(a0),d2
add d2,24(a0)
cmp #$358,24(a0)
bmi.s np_portdown2
move #$358,24(a0)
np_portdown2:
move 24(a0),6(a4)
bra.s np_lop2
np_arp: moveq #0,d2
move.b (a6),d2
sub.b 1(a6),d2
neg.b d2
move.b np_arplist(pc,d2.w),d2
beq.s np_arp0
subq.b #2,d2
beq.s np_arp2
np_arp1:move.b 3(a0),d2
lsr #3,d2
and #$e,d2
bra.s np_arp3
np_arp2:move.b 3(a0),d2
and #$f,d2
add d2,d2
np_arp3:add.b (a0),d2
cmp #$48,d2
bls.s np_arp4
moveq #$48,d2
np_arp4:lea np_periods-2(pc),a3
move (a3,d2.w),6(a4)
bra np_lop2
np_arp0:move 24(a0),6(a4)
bra 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.b 3(a0),d3
beq.s np_vib2
move.b d3,48(a0)
np_vib2:
move.b 49(a0),d3
lsr.b #2,d3
and #$1f,d3
moveq #0,d2
move.b np_sin(pc,d3.w),d2
move.b 48(a0),d3
and #$f,d3
mulu d3,d2
lsr #7,d2
move 24(a0),d3
tst.b 49(a0)
bmi.s np_vibsub
add d2,d3
bra.s np_vib3
np_vibsub:
sub d2,d3
np_vib3:move d3,6(a4)
move.b 48(a0),d3
lsr.b #2,d3
and #$3c,d3
add.b d3,49(a0)
cmp.b #20,d1
bne np_lop2
np_volslide:
move.b 3(a0),d2
add.b d2,5(a0)
bmi.s np_vol3
cmp.b #$40,5(a0)
bmi.s np_vol2
move #$40,4(a0)
np_vol2:move 4(a0),8(a4)
bra np_lop2
np_vol3:move d6,4(a0)
move 4(a0),8(a4)
bra np_lop2
np_port:move.b 3(a0),d2
beq.s np_port2
move.b d2,29(a0)
np_port2:
move 26(a0),d2
beq.s np_rts
move 28(a0),d3
tst.b 50(a0)
bne.s np_sub
add d3,24(a0)
cmp 24(a0),d2
bgt.s np_portok
move d2,24(a0)
move d6,26(a0)
np_portok:
move 24(a0),6(a4)
np_rts: cmp.b #16,d1
beq.s np_volslide
bra np_lop2
np_sub: sub d3,24(a0)
cmp 24(a0),d2
blt.s np_portok
move d2,24(a0)
move d6,26(a0)
move 24(a0),6(a4)
cmp.b #16,d1
beq np_volslide
bra np_lop2
np_irq1:
tst.b $bfdd00
move.b #$19,$bfde00
move.l #np_irq2,$78.w
move np_block+4(pc),$dff096
move #$2000,$dff09c
rte
np_irq2:
tst.b $bfdd00
move.l a6,-(sp)
lea np_voidat2(pc),a6
move.l (a6)+,$dff0d0
move (a6)+,$dff0d4
move.l (a6)+,$dff0c0
move (a6)+,$dff0c4
move.l (a6)+,$dff0b0
move (a6)+,$dff0b4
move.l (a6)+,$dff0a0
move (a6)+,$dff0a4
move #$2000,$dff09c
move.l np_oldirq(pc),$78.w
move.l (sp)+,a6
rte
np_position: dc.l 0
np_pattern: dc.l 0
np_voice: dc.l 0
np_oldirq: dc.l 0
np_block: blk.w 31,0
np_voidat1: blk.l 18,0
np_voidat2: blk.l 6,0