* Playrout ine Version IV
* Stand : -> 20-11-1989 <-
* Sound Name : Aliens the second revenge
a_feinfrequenz equ 1
a_vib equ a_feinfrequenz*1
a_arp equ 1
a_megainstr equ 1
a_eff0 equ a_megainstr*1 ;Übergeh-Effect
a_eff1 equ a_megainstr*1 ;Audiomaster-Filter
a_eff2 equ a_megainstr*1 ;C64-Effect
a_eff3 equ a_megainstr*1 ;Sonix-Quetsch
a_eff4 equ a_megainstr*1 ;Sonix-Trägheit
a_eff5 equ a_megainstr*1 ;C64-Neu+normal abspielen
a_eff6 equ a_megainstr*1 ;C64+Filter
a_mod equ 1
a_volume equ 1
a_fade equ a_volume*1
a_freqslide equ a_feinfrequenz*1
a_volslide equ 1
a_asynchron equ 1
debug equ 0
rechenzeit equ 1
monitor equ a_megainstr*0
cia equ 0
bra init0
instnames
* dc.b 'df1:mmah.x',0
* dc.b 'df1:blubzing',0
dc.b 0
dosname dc.b 'dos.library',0
savename dc.b 'ram:sound',0
even
instlengths
ds.l 50
instadrs
ds.l 50
soundadr ds.l 1
soundlength ds.l 1
oldvbi ds.l 1
waittime equ 10
newcop equ $70000
afrika equ 30
time1 equ 14200
time2 equ 500
IFNE a_megainstr
length_voicedata equ 450
ENDC
IFEQ a_megainstr
length_voicedata equ 66
ENDC
mi_length equ 36
di_length equ 28
v_ta equ 0
v_ia equ 4
v_th equ 8
v_sld equ 10
v_vol2 equ 12
v_vsl equ 13
v_arp equ 14
v_arpc equ 15
v_hkc equ 16
v_mc equ 18
v_mod equ 20
v_vol1 equ 21
v_adr equ 22
v_len equ 26
v_rep equ 28
v_rln equ 30
v_freq equ 32
v_adr2 equ 34
v_rep2 equ 38
v_rln2 equ 40
v_in equ 42
v_trp equ 43
v_vc1 equ 44
v_vc2 equ 46
v_phc1 equ 48
v_phc2 equ 50
v_c1 equ 52
v_c2 equ 53
v_c3 equ 54
v_spd equ 56
v_plen equ 57
v_vslsp equ 58
v_vslc equ 59
v_etc equ 60
v_ev equ 62
v_ef equ 63
v_novol equ 64
v_nofreq equ 65
IFNE a_megainstr
v_k1 equ 66
v_k2 equ 194
v_k3 equ 322
ENDC
i_hka equ 0
i_hkl equ 4
i_hkr equ 6
i_va equ 8
i_vl equ 12
i_vr equ 14
i_vs equ 16
i_sa equ 18
i_sln equ 22
i_sr equ 24
i_srln equ 26
i_mlen equ 34
i_mega equ 35
i_ma equ 18
i_ml equ 22
i_mr equ 24
i_l1 equ 26
i_l2 equ 30
i_spd1 equ 26
i_spd2 equ 28
i_res equ 30
i_tim1 equ 31
i_dep equ 32
i_spos equ 33
i_spd equ 30
ifne debug
opt d+
endc
init0 lea instlengths,a0
lea instnames,a2
clr.w d6
init5d lea instruments2,a1 ;Instrumentenlängen suchen
clr.l d5
init5a tst.l (a1)
beq.s init5b
cmp.w i_sa+2(a1),d6
bne.s init5c
cmp.w i_sln(a1),d5
bpl.s init5c
move.w i_sln(a1),d5
init5c adda.l #di_length,a1
bra.s init5a
init5b lsl.l #1,d5
move.l d5,(a0)+
init5e tst.b (a2)+ ;nächsten Filenamen suchen
bne.s init5e
addq.w #1,d6
tst.b (a2) ;noch ein File ?
bne.s init5d
lea instlengths,a0
move.l #voicedatas-data+length_voicedata*4,d0
init1 move.l (a0)+,d1 ;Länge des Sounds feststellen
beq.s init2
add.l d1,d0
bra.s init1
init2 move.l d0,soundlength
move.l 4,a6
moveq.l #3,d1
jsr -198(a6) ;Chip-mem reservieren
move.l d0,soundadr
move.l d0,a0 ;Sound kopieren
lea data,a1
move.w #(voicedatas-data)/4-1,d0
init3 move.l (a1)+,(a0)+
dbra d0,init3
move.l soundadr,a2 ;voicedatas löschen
adda.l #voicedatas-data,a2
move.w #length_voicedata-1,d0
init4 clr.l (a2)+
dbra d0,init4
lea dosname,a1 ;doslib öffnen
clr.l d0
jsr -408(a6)
move.l d0,a6
lea instnames,a3
lea instlengths,a4
lea instadrs,a5
clr.w d6
init5 move.l a3,d1 ;File öffnen
move.l #1005,d2
jsr -30(a6)
beq.s init7 ;File existiert nicht
move.l d0,d7
move.l d0,d1
move.l a2,d2
move.l a2,(a5)+
move.l (a4),d3
jsr -42(a6) ;File lesen
clr.l (a2)
adda.l (a4)+,a2
move.l d7,d1 ;File schliessen
jsr -36(a6)
init6 tst.b (a3)+ ;nächsten Filenamen suchen
bne.s init6
addq.w #1,d6
tst.l (a4) ;noch ein File ?
bne.s init5
init7
move.l #instruments2-data,a0 ;Sample-adrs setzen
lea instadrs,a1
move.l #data,d6
move.l soundadr,d0
adda.l d0,a0
init8 tst.l (a0)
beq.s init9
move.l i_sa(a0),d1
lsl.w #2,d1
move.l (a1,d1),d1
sub.l d0,d1
move.l d1,i_sa(a0)
adda.l #di_length,a0
bra.s init8
init9
move.l #instruments1-data,a0 ;Adressen korrigieren
adda.l d0,a0
move.l #instruments2-data,a1
adda.l d0,a1
init10 cmpa.l a1,a0
beq.s init13
sub.l d6,i_hka(a0)
sub.l d6,i_va(a0)
sub.l d6,i_ma(a0)
move.b i_mega(a0),d1
cmpi.b #6,d1
beq.s init11
sub.l d6,i_l1(a0)
tst.b d1
beq.s init12
cmpi.b #2,d1
bne.s init11
init12 sub.l d6,i_l2(a0)
init11 adda.l #mi_length,a0
bra.s init10
init13
tst.l (a0)
beq.s init14
sub.l d6,i_hka(a0)
sub.l d6,i_va(a0)
adda.l #di_length,a0
bra.s init13
init14
lea patterns_adrs,a0
init15 move.l (a0)+,a1
adda.l d0,a1
init16 sub.l d6,(a1)
sub.l d6,4(a1)
sub.l d6,8(a1)
sub.l d6,12(a1)
adda.l #20,a1
tst.l (a1)
bmi.s init17
bne.s init16
init17 tst.l (a0)
bne.s init15
move.l #savename,d1 ;Sound speichern
move.l #1006,d2
jsr -30(a6)
move.l d0,d7
move.l d0,d1
move.l soundadr,d2
move.l soundlength,d3
jsr -48(a6)
move.l d7,d1
jsr -36(a6)
move.l a6,a1 ;Doslib schliessen
move.l 4,a6
jsr -414(a6)
move.l soundadr,a0
adda.l #ji-data,a0
clr d0
jsr (a0)
******** Monitor *********
ifne monitor
lea newcop,a0
lea coplist,a1 ;Copperliste erstellen
move.w #(coplistend-coplist)/4-1,d0
coploop
move.l (a1)+,(a0)+
dbra d0,coploop
move.l #$fffffffe,(a0)+
lea gfxname,a1
move.l 4,a6
clr d0
jsr -408(a6)
move.l d0,gfxbase
move.l d0,a6
jsr -456(a6) ;Ownblit
move.l #newcop,$dff080 ;Copperliste einschalten
clr.w $dff088
endc
move.l $6c,oldvbi
ifeq debug
move.l #newvbi,$6c
endc
wait
ifne debug ;Debug :
move.l #jm-data,a0 ;Main-routine aufrufen
adda.l soundadr,a0
jsr (a0)
move.l #jp2-data,a0 ;Playold_2 aufrufen
adda.l soundadr,a0
jsr (a0)
endc
move.w #voicedatas-data +length_voicedata+v_etc,a0 *
adda.l soundadr,a0 *
move.w (a0),$dff180 *
cmpi.b #$3d,$bfec01 *
bne.s waita *
move.w #1,d0 *
clr.l d1 *
move.w #40000,d2 *
move.w #400,d3 *
move.w #64,d4 *
move.l #jes-data,a0 *
adda.l soundadr,a0 *
jsr (a0) *
waitb cmpi.b #$3d,$bfec01 *
beq.s waitb *
waita btst.b #6,$bfe001
bne.s wait
move.l soundadr,a0
loop2:
IFEQ debug
IFNE a_fade
move.b #-4,fade-data(a0) ;ausfaden
move.b #1,fadespeed-data(a0)
tst.b volume-data(a0)
bne loop2
ENDC
ENDC
out:
adda.l #js-data,a0 ;Stoppen
jsr (a0)
ifeq debug
move.l a0,-(sp)
ifeq cia-2
lea int(pc),a0
stop1 cmp.l $68,a0
bne.s stop1
endc
move.l (sp)+,a0
ifne cia
move.b #$1,$bfed01
move.b oldcra(pc),$bfee01
move.l oldint(pc),$68
endc
endc
ifne monitor
move.l gfxbase,a6
jsr -462(a6) ;Disownblit
move.l #$420,$dff080 ;alte Copperliste
move.l gfxbase,a1
move.l 4,a6
jsr -414(a6) ;Closelib
endc
move.l oldvbi,$6c
move.l soundadr,a1 ;Speicher freigeben
move.l soundlength,d0
jsr -210(a6)
clr.l d0
rts
********
newvbi
movem.l d0-a6,-(sp)
move.l soundadr,a6
ifne rechenzeit
move.w #2000,d0
wx dbra d0,wx
move.w #$ff0,$dff180
endc
move.w #$20,$dff09c
ifne cia-2
move.l #jm-data,a0 ;Main-routine aufrufen
adda.l soundadr,a0
jsr (a0)
ifne cia
move.w #$2300,sr
move.w #$8020,$dff09c
endc
ifne rechenzeit
clr.w $dff180
endc
endc
ifne monitor
bsr waitblit
move.l screen,d0
add.w monflag,d0
move.l d0,$dff054 ;Blitter vorbereiten
move.w #40,$dff066
move.w #$100,$dff040
clr.w $dff042
move.l #-1,$dff044
move.w #$4014,$dff058
move.l screen,a0
add.w monflag,a0
move.l #voicedatas-data,a1
adda.l soundadr,a1
tst.w monflag
beq.s monleft
adda.l #length_voicedata*2,a1
monleft
move.l a1,a3
clr.l d0
move.w v_rep(a1),d0
move.l v_adr(a1),a1
lsl.l #1,d0
adda.l d0,a1
bsr.s mondraw ;1./3. Kurve zeichnen
move.l #voicedatas-data+length_voicedata,a1
adda.l soundadr,a1
add.l #80*128,a0
tst.w monflag
beq.s monleft2
adda.l #length_voicedata*2,a1
monleft2
move.l a1,a3
clr.l d0
move.w v_rep(a1),d0
move.l v_adr(a1),a1
lsl.l #1,d0
adda.l d0,a1
bsr.s mondraw ;2./4. Kurve zeichnen
eori.w #40,monflag
bne picnotready
move.l screen,a0
move.w a0,$7000e
eori.l #$f000,screen
picnotready
endc
movem.l (sp)+,d0-a6
move.l oldvbi,-(sp)
rts
********
ifne monitor
mondraw
move.w #1,d0 ;Kurve zeichnen ...
move.w #9,d1
clr.w d2
move.b (a1),d2
add.b #128,d2
lsr.b #1,d2
move.w #30,d7
clr.w d4
move.l v_ia(a3),a2
move.b i_mlen(a2),d4
clr.w d5
clr.w d3
monloop
add.w d4,d5
move.w d5,d6
andi.w #$f,d6
bne noline
move.w d5,d6
lsr.w #4,d6
move.b (a1,d6.w),d3
add.b #128,d3
lsr.b #1,d3
movem.w d0-d5/d7,-(sp)
move.l a0,-(sp)
bsr draw
move.l (sp)+,a0
movem.w (sp)+,d0-d5/d7
move.w d1,d0
move.w d3,d2
noline
addq.b #8,d1
dbra d7,monloop
rts
coplist dc.w $180,0,$182,$0f0,$e0, 7,$e2,$c800,$108,0,$8e,$2c81,$90,$2cc1
dc.w $92,$3c,$94,$d4, $100,$9000,$102,0,$104,0
coplistend
temporary ds.w 1
flag dc.w 1
gfxname dc.b 'graphics.library',0
even
gfxbase ds.l 1
savecop ds.l 1
screen dc.l $7a000
monflag dc.w 0
endc
waitblit
andi.w #$4000,$dff002
bne waitblit
rts
*********** Blitdraw !!!!!!!!!
ifne monitor
*********** d0 = Start-x d1 = Ziel-x d2 = Start-y d3 = Ziel-y
draw
sub.w d0,d1 Ziel-x minus Start-x
sub.w d2,d3 Ziel-y minus Start-y
clr.w d4
clr.w d5
clr.w d6
move.w d1,d4 d4 : -d1
bpl draw1
clr.w d1 d1 : abs(d1)
sub.w d4,d1
draw1
move.w d3,d5 d5 : -d3
bpl draw2
clr.w d3 d3 : abs(d3)
sub.w d5,d3
draw2
* d0 : Start-x
* d1 : abs(Ziel-x - Start-x)
* d2 : Start-y
* d3 : abs(Ziel-y - Start-y)
* d4 : Ziel-x - Start-x
* d5 : Ziel-y - Start-y
cmp.w d1,d3
bmi draw3 SUD setzen
subq.w #1,d0
tst.w d4
bpl draw4
ori.b #2,d6 SUL setzen
addq.w #2,d0
draw4
subq.w #1,d2
tst.w d5
bpl draw5
ori.b #1,d6 AUL setzen
addq.w #2,d2
draw5
bra draw6
draw3
move.b #4,d6 SUD setzen
subq.w #1,d2
tst.w d5
bpl draw7
ori.b #2,d6 SUL setzen
addq.w #2,d2
draw7
subq.w #1,d0
tst.w d4
bpl draw8
ori.b #1,d6 AUL setzen
addq.w #2,d0
draw8
draw6
lsl.b #2,d6
addi.w #$0001,d6 BLTCON1 fertig !!!
cmp.w d3,d1
bpl draw10
move.w d1,d7
move.w d3,d1
move d7,d3
draw10
move.w d0,d7
lsr.w #4,d7
lsl.w #1,d7
adda.w d7,a0
mulu #80,d2 ;Screen-Width !!!!!!
adda.w d2,a0 BLTCPT,BLTDPT fertig !!!
* move.w (a0),temporary
lsl.w #8,d0
lsl.w #4,d0
addi.w #$bfa,d0 BLTCON0 fertig !!!
tst.w flag
bne draw11
eori.w #$f0,d0
draw11
move.w d1,d7
addq.w #2,d7
lsl.w #6,d7
addq.w #2,d7 BLTSIZE fertig !!!
move.w d3,d2
lsl.w #2,d2 BLTBMOD fertig !!!
move.w d3,d4
sub.w d1,d4
lsl.w #2,d4 BLTAMOD fertig !!!
lsl.w #1,d3
sub.w d1,d3 BLTAPTL fertig !!!
bsr waitblit
move.w (a0),temporary
move.w d3,$dff052
move.w d4,$dff064
move.w d2,$dff062
move.w d0,$dff040
move.l a0,$dff048
move.l a0,$dff054
move.w d6,$dff042
move.w #80,$dff066
move.w #80,$dff060
move.w #$8000,$dff074
move.w d7,$dff058
move.w temporary,(a0)
rts
endc
*********** Ende von Blitdraw !!!!!!!!!
***************************************
************ Init ***************
***************************************
opt p+
data
ji movem.l d0-d2/a0-a2/a6,-(sp)
bsr.s sndinit ;Init aufrufen
movem.l (sp)+,d0-d2/a0-a2/a6
rts
jm movem.l d0-a6,-(sp)
bsr play ;Main aufrufen
movem.l (sp)+,d0-a6
rts
jp2 movem.l d0-a6,-(sp)
bsr playold_2 ;playold_2 aufrufen
movem.l (sp)+,d0-a6
rts
js move.l a6,-(sp)
bsr stop ;Stop aufrufen
move.l (sp)+,a6
rts
jes movem.l d0/d3/a0,-(sp) ;Effect (Sample) starten
bsr effinit ;d0:Kanal,d1:Adr,d2:Länge
movem.l (sp)+,d0/d3/a0 ;d3:Tonhöhe,d4:Volune
rts
sndinit lea data(pc),a6
tst.w adrsflag-data(a6)
bne in12a
move.w #1,adrsflag-data(a6)
move.l a6,d2
lea instruments1(pc),a0 ;Adressen korrigieren
lea instruments2(pc),a1
in3 cmpa.l a1,a0 ;Instruments1
beq.s in6
add.l d2,i_hka(a0)
add.l d2,i_va(a0)
add.l d2,i_ma(a0)
move.b i_mega(a0),d1
cmpi.b #6,d1
beq.s in5
add.l d2,i_l1(a0)
tst.b d1
beq.s in4
cmpi.b #2,d1
bne.s in5
in4 add.l d2,i_l2(a0)
in5 adda.l #mi_length,a0
bra.s in3
in6
tst.l (a0) ;Instruments2
beq.s in7
add.l d2,i_hka(a0)
add.l d2,i_va(a0)
add.l d2,i_sa(a0)
adda.l #di_length,a0
bra.s in6
in7
lea patterns_adrs(pc),a0 ;Patterns
in8 move.l (a0),a1
adda.l a6,a1
move.l a1,(a0)+
in9 add.l d2,(a1)
add.l d2,4(a1)
add.l d2,8(a1)
add.l d2,12(a1)
adda.l #20,a1
tst.l (a1)
bmi.s in10
bne.s in9
in10 tst.l (a0)
bne.s in8
lea gnnadrs(pc),a0 ;Gnnadrs
in11 add.l d2,(a0)+
tst.l (a0)
bne.s in11
IFNE a_megainstr
lea meadrs(pc),a0 ;Meadrs
in12 add.l d2,(a0)+
tst.l (a0)
bne.s in12
ENDC
in12a
lsl.w #2,d0 ;Pattern-adresse holen
lea patterns_adrs(pc),a0
move.l (a0,d0.w),a0
move.l a0,patterns_adr-data(a6)
lea voicedatas(pc),a1 ;Adressen in voicedatas einsetzen
move.l (a0),a2
move.l a2,v_ta(a1)
move.l 4(a0),a2
move.l a2,v_ta+length_voicedata(a1)
move.l 8(a0),a2
move.l a2,v_ta+length_voicedata*2(a1)
move.l 12(a0),a2
move.l a2,v_ta+length_voicedata*3(a1)
move.b 16(a0),v_trp(a1)
move.b 17(a0),v_trp+length_voicedata(a1)
move.b 18(a0),v_trp+length_voicedata*2(a1)
move.b 19(a0),v_trp+length_voicedata*3(a1)
move.w #3,d0 ;Defaultwerte in voicedatas
in0 move.b #-1,v_mod(a1)
clr.w v_len(a1)
clr.w v_rln(a1)
move.b #6,v_spd(a1)
move.b #16,v_plen(a1)
move.b #5,v_c1(a1)
move.b #-1,v_c2(a1)
clr.w v_c3(a1)
move.w #64*256,v_vol2(a1)
adda.l #length_voicedata,a1
dbra d0,in0
lea defaults(pc),a0 ;Registerdefaults
lea registers(pc),a1
move.w #(def_end-defaults)/2-1,d0
in1 move.w (a0)+,(a1)+
dbra d0,in1
move.w #$f,$dff096
ifne debug
rts
endc
ifeq cia-2
lea int(pc),a0 ;Cia programmieren
lea int2(pc),a1
move.l $68,a2
cmpa.l a2,a0
beq.s in2
cmpa.l a2,a1
beq.s in2
move.l $68,oldint-data(a6)
move.l a1,$68
move.b $bfee01,d0
move.b d0,oldcra-data(a6)
andi.b #$df,d0
ori.b #$19,d0
move.b #$81,$bfed01
move.w #$8008,$dff09a
move.b #time2&255,$bfe401 ;Cia starten
move.b #time2/256,$bfe501
move.b d0,$bfee01
endc
ifeq cia-1
lea int2(pc),a0
cmpa.l $68,a0
beq.s in2
move.l $68,oldint-data(a6)
move.l a0,$68
move.b $bfee01,d0
move.b d0,oldcra-data(a6)
andi.b #$ce,d0
ori.b #8,d0
move.b d0,$bfee01
move.b #$81,$bfed01
move.w #$8008,$dff09a
endc
in2 rts
effinit lea voicedatas(pc),a0
mulu #length_voicedata,d0
move.l d1,v_adr(a0,d0)
lsr.l #1,d2
move.w d2,v_len(a0,d0)
clr.w v_rep(a0,d0)
move.w #1,v_rln(a0,d0)
move.w d3,v_freq(a0,d0)
move.b d4,v_vol1(a0,d0)
mulu d2,d3
divu #35795,d3
addi.w #v_etc,d0
move.w d3,(a0,d0)
move.b #1,v_ef-v_etc(a0,d0)
rts
ifne cia
int
ifeq cia-2
move.b d0,-(sp) ;Cia Main-interrupt
move.b $bfe401,d0
cmp.b $bfe401,d0
bne.s int1a
move.b #time2&255,$bfe401
move.b #time2/256,$bfe501
move.b (sp)+,d0
move.l a0,-(sp)
lea data(pc),a0
move.w $dff01c,oldinten-data(a0)
move.w #$3ff7,$dff09a
move.b #8,$bfed01
move.w #$2000,sr
lea int2(pc),a0
move.l a0,$68
tst.b $bfed01
move.w #8,$dff09c
ifne rechenzeit
move.w #$f,$dff180
endc
bsr jm
ifne rechenzeit
clr.w $dff180
endc
move.l (sp)+,a0
int1 rte
int1a move.b (sp)+,d0
move.l oldint(pc),-(sp)
rts
endc
int2
move.b d0,-(sp) ;Cia Interrupt 2
move.b $bfe401,d0
cmp.b $bfe401,d0
bne.s int3a
ifeq cia-2
move.b ciatime2+1(pc),$bfe401
move.b ciatime2(pc),$bfe501
endc
ifeq cia-1
andi.b #$fe,$bfee01
endc
move.b (sp)+,d0
move.l a0,-(sp)
ifeq cia-2
lea int(pc),a0
move.l a0,$68
endc
tst.b $bfed01
move.w #8,$dff09c
ifne rechenzeit
move.w #$f00,$dff180
endc
bsr jp2
lea data(pc),a0
ifeq cia-2
move.w ciatime(pc),ciatime2-data(a0)
endc
ori.w #$8000,oldinten-data(a0)
move.w oldinten(pc),$dff09a
move.b #$88,$bfed01
move.l (sp)+,a0
int3 rte
int3a move.b (sp)+,d0
move.l oldint(pc),-(sp)
rts
endc
stop lea voicedatas(pc),a0
move.b #-2,v_mod(a0)
move.b #-2,v_mod+length_voicedata(a0)
move.b #-2,v_mod+length_voicedata*2(a0)
move.b #-2,v_mod+length_voicedata*3(a0)
move.w #$f,$dff096
rts
***************************************
******** Hauptprogramm ***********
***************************************
play lea data(pc),a6
ifeq cia-1
move.b #time2&255,$bfe401
move.b #time2/256,$bfe501
move.w $dff01c,oldinten-data(a6)
move.w #$3ff7,$dff09a
move.b #8,$bfed01
move.w #$2000,sr
ori.b #1,$bfee01
endc
bsr playold_1 ;1. Hardware-register setzen
IFNE a_fade
tst.b fade-data(a6)
beq.s nofade ;2. Fade
subq.b #1,fadecounter-data(a6)
bpl.s nofade
move.b fadespeed(pc),fadecounter-data(a6)
move.b fade(pc),d0
add.b d0,volume-data(a6)
bpl.s fade1
clr.b fade-data(a6)
clr.b volume-data(a6)
fade1 cmpi.b #65,volume-data(a6)
bmi.s nofade
clr.b fade-data(a6)
move.b #64,volume-data(a6)
nofade
ENDC
IFEQ cia-2
move.w ciafade(pc),d0 ;Cia-Fade
add.w d0,ciatime-data(a6)
ENDC
IFNE a_asynchron
lea voicedatas(pc),a0 ;3. Neue Noten + Effekte
move.w #3,d7
nn1 cmpi.b #-2,v_mod(a0)
beq.s nn7
tst.w v_etc(a0)
beq.s nn1a
subq.w #1,v_etc(a0)
nn1a addq.b #1,v_c1(a0)
move.b v_c1(a0),d0
cmp.b v_spd(a0),d0
bmi.s nn2
clr.b v_c1(a0) ;neuer Ton
addq.b #1,v_c2(a0)
move.b v_c2(a0),d0
cmp.b v_plen(a0),d0
bmi.s nn3
clr.b v_c2(a0)
addq.w #1,v_c3(a0) ;neues Pattern
nn6 move.l patterns_adr(pc),a1
move.w v_c3(a0),d0
mulu #20,d0
adda.l d0,a1
move.w d7,d1
eori.b #3,d1
tst.l (a1)
beq.s nn4 ;restart
bmi.s nn5 ;stop
move.b 16(a1,d1.w),v_trp(a0) ;Transponation kopieren
lsl.b #2,d1
move.l (a1,d1.w),a2
move.l a2,v_ta(a0) ;Ton-adr kopieren
nn3 bsr nextnote
nn2 bsr effects
nn7 adda.l #length_voicedata,a0
dbra d7,nn1
ENDC
IFEQ a_asynchron
lea voicedatas(pc),a0
move.w #3,d7
nn1 tst.w v_etc(a0)
beq.s nn1a
subq.w #1,v_etc(a0)
nn1a adda.l #length_voicedata,a0
dbra d7,nn1
lea voicedatas(pc),a0
cmpi.b #-2,v_mod(a0)
beq nn7
addq.b #1,s_c1-data(a6)
move.b s_c1(pc),d0
cmp.b s_spd(pc),d0
bmi.s nn2
clr.b s_c1-data(a6) ;neuer Ton
addq.b #1,s_c2-data(a6)
move.b s_c2(pc),d0
cmp.b s_plen(pc),d0
bmi.s nn3
clr.b s_c2-data(a6)
addq.w #1,s_c3-data(a6) ;neues Pattern
nn6 move.l patterns_adr(pc),a1
move.w s_c3(pc),d0
mulu #20,d0
adda.l d0,a1
tst.l (a1)
beq.s nn4 ;restart
bmi.s nn5 ;stop
move.b 16(a1),v_trp(a0) ;Transponation kopieren
move.b 17(a1),v_trp+length_voicedata(a0)
move.b 18(a1),v_trp+length_voicedata*2(a0)
move.b 19(a1),v_trp+length_voicedata*3(a0)
move.l (a1),v_ta(a0) ;Ton-adr kopieren
move.l 4(a1),v_ta+length_voicedata(a0)
move.l 8(a1),v_ta+length_voicedata*2(a0)
move.l 12(a1),v_ta+length_voicedata*3(a0)
nn3 move.w #3,d7
nn3a bsr nextnote
adda.l #length_voicedata,a0
dbra d7,nn3a
lea voicedatas(pc),a0
nn2 move.w #3,d7
nn2a bsr effects
adda.l #length_voicedata,a0
dbra d7,nn2a
nn7
ENDC
ifeq cia
move.w #waittime,d0
hwait dbra d0,hwait
bsr playold_2
endc
IFNE a_megainstr
bsr megaeffects ;4. Instrumente errechnen
ENDC
very_end
rts
IFNE a_asynchron
nn4 clr.w v_c3(a0) ;Kanal auf Pattern 0 stellen
bra.s nn6
nn5 clr.w d0 ;Kanal ausschalten
bset d1,d0
move.w d0,$dff096
lsl.w #4,d1
lea $dff0a8,a1
clr.w (a1,d1.w)
move.b #-2,v_mod(a0)
bra.s nn7
ENDC
IFEQ a_asynchron
nn4 clr.w s_c3-data(a6) ;Kanal auf Pattern 0 stellen
bra nn6
nn5 ;Kanal ausschalten
move.w #$f,$dff096
lea $dff0a8,a1
clr.w (a1)
clr.w $10(a1)
clr.w $20(a1)
clr.w $30(a1)
move.b #-2,v_mod(a0)
move.b #-2,v_mod+length_voicedata(a0)
move.b #-2,v_mod+length_voicedata*2(a0)
move.b #-2,v_mod+length_voicedata*3(a0)
bra.s nn7
ENDC
***************************************
*** Hardware-register setzen 1 ****
***************************************
playold_1
lea voicedatas(pc),a0
clr.w d6
tst.w v_len(a0)
beq.s po1
bset #0,d6
po1 tst.w v_len+length_voicedata(a0)
beq.s po2
bset #1,d6
po2 tst.w v_len+length_voicedata*2(a0)
beq.s po3
bset #2,d6
po3 tst.w v_len+length_voicedata*3(a0)
beq.s po4
bset #3,d6
po4
move.w d6,$dff096
IFNE a_mod
move.w modulation2(pc),$dff09e
move.w modulation(pc),$dff09e
move.w #$8000,modulation-data(a6)
clr.w modulation2-data(a6)
ENDC
move.w #3,d7
lea $dff0a0,a1
po5
IFNE a_mod
tst.b v_novol(a0)
bne.s po5a
ENDC
move.b v_vol1(a0),9(a1)
po5a
IFNE a_mod
tst.b v_nofreq(a0)
bne.s po5b
ENDC
move.w v_freq(a0),6(a1)
po5b tst.w v_len(a0)
beq.s po6
move.l v_adr(a0),(a1)
move.w v_len(a0),4(a1)
po6 move.l v_adr(a0),v_adr2(a0)
move.l v_rep(a0),v_rep2(a0)
clr.w v_len(a0)
clr.w v_rln(a0)
adda.l #length_voicedata,a0
adda.l #$10,a1
dbra d7,po5
move.b d6,attack_zs-data(a6)
rts
***************************************
*** Hardware-register setzen 2 ****
***************************************
playold_2
move.w #$8000,d6
move.b attack_zs(pc),d6
move.w d6,$dff096
lea voicedatas(pc),a0
lea $dff0a0,a1
move.w #3,d7
po7 tst.w v_rln2(a0)
beq.s po8
clr.l d0
move.w v_rep2(a0),d0
lsl.l #1,d0
add.l v_adr2(a0),d0
move.l d0,(a1)
move.w v_rln2(a0),4(a1)
po8 adda.l #length_voicedata,a0
adda.l #$10,a1
dbra d7,po7
rts
***************************************
******* Vol+Freq errechnen ********
***************************************
effects tst.b v_mod(a0)
bmi eff1 ;Kanal ausgeschaltet
move.l v_ia(a0),a1
cmpi.b #1,v_ef(a0)
beq effx
move.l i_hka(a1),a2 ;Lautstärke ausrechnen
move.w v_hkc(a0),d0
clr.w d1
move.b (a2,d0.w),d1 ;Hüllkurve
clr.l d2
move.b v_vol2(a0),d2 ;Lautstärke
mulu d2,d1
lsr.w #6,d1
IFNE a_volume
move.b volume(pc),d2
mulu d2,d1
lsr.w #6,d1
ENDC
move.b d1,v_vol1(a0)
lea noten-data(a6),a2 ;Tonhöhe ausrechnen
IFNE a_arp
lea arpeggios-data(a6),a3
clr.l d5
move.b v_arp(a0),d5
lsl.w #4,d5
clr.l d6
move.b v_arpc(a0),d6
add.w d6,d5 ;Offset des Arpeggios
ENDC
move.w v_th(a0),d0 ;Tonhöhe
IFNE a_vib
move.l i_va(a1),a4 ;Vibrato
move.w v_vc2(a0),d1
clr.w d2
move.b (a4,d1.w),d2
move.w v_vc1(a0),d3
bpl.s eff2
neg.w d3
eff2
subi.w #16384,d3
muls d2,d3
lsl.l #4,d3
swap d3
add.w d3,d0
ENDC
move.w d0,d1
lsr.w #8,d1
IFNE a_vib
sub.b (a3,d5),d1 ;Arpeggio
ENDC
lsl.w #1,d1
move.w (a2,d1),d3 ;endgültige Tonhöhe errechnen
IFNE a_feinfrequenz
andi.w #$ff,d0
beq.s eff3 ;"fastfreq"
move.w 2(a2,d1),d4
sub.w d3,d4
mulu d0,d4
lsr.l #8,d4
add.w d4,d3
eff3
ENDC
move.w d3,v_freq(a0)
effx
IFNE a_freqslide
move.w v_th(a0),d0 ;Freq slide up/down
add.w v_sld(a0),d0
bpl.s eff4
addi.w #72*256,d0
bra.s eff5
eff4 cmpi.w #72*256,d0
bmi.s eff5
subi.w #72*256,d0
eff5 move.w d0,v_th(a0)
ENDC
IFNE a_volslide
tst.b v_vsl(a0)
beq.s eff10 ;Vol slide up/down
subq.b #1,v_vslc(a0)
bpl.s eff10
move.b v_vslsp(a0),v_vslc(a0)
move.b v_vsl(a0),d0
add.b d0,v_vol2(a0)
bpl.s eff11
clr.b v_vsl(a0)
clr.b v_vol2(a0)
eff11 cmpi.b #65,v_vol2(a0)
bmi.s eff10
clr.b v_vsl(a0)
move.b #64,v_vol2(a0)
eff10
ENDC
IFNE a_arp
addq.b #1,v_arpc(a0) ;Arp-counter
andi.b #15,v_arpc(a0)
ENDC
addq.w #1,v_hkc(a0) ;Hüllkurven-counter
move.w v_hkc(a0),d0
cmp.w i_hkl(a1),d0
bne.s eff8
move.w i_hkr(a1),v_hkc(a0)
eff8
IFNE a_vib
addq.w #1,v_vc2(a0) ;Vibrato-counter 2
move.w v_vc2(a0),d0
cmp.w i_vl(a1),d0
bne.s eff9
move.w i_vr(a1),v_vc2(a0)
eff9
move.w i_vs(a1),d0 ;Vibrato-counter 1
add.w d0,v_vc1(a0)
ENDC
eff1
rts
***************************************
******** Musikdaten einlesen ********
***************************************
nextnote
move.l v_ta(a0),a1
lea gnnadrs(pc),a2
gnn0 clr.w d0
move.b (a1)+,d0
beq.s gnn1 ;nichts neues
bpl.s gnn2 ;neues Instrument
cmpi.b #-72,d0
bpl.s gnn3 ;neuer Ton
neg.b d0 ;neuer Effekt
addi.b #effoffset,d0
lsl.b #2,d0
move.l (a2,d0),a3
jmp (a3)
gnn1 move.l a1,v_ta(a0) ;ende
rts
gnn2 move.b d0,v_in(a0) ;Instrument setzen
bra.s gnn0
gnn3 tst.w v_etc(a0)
bne.s gnn0
not.b d0 ;Ton anschlagen
sub.b v_trp(a0),d0
move.b d0,v_th(a0)
clr.b v_th+1(a0)
clr.w v_sld(a0)
tst.b (a1) ;Instrument nach ton angegeben ?
bmi.s gnn5
beq.s gnn5
move.b (a1)+,v_in(a0)
gnn5 move.b v_in(a0),d0
beq.s gnn0
clr.b v_ef(a0)
IFNE a_megainstr
btst #6,d0
beq.s gnn4 ;Digi-Instrument
lea instruments1-data(a6),a5 ;Mega-Instrument
subi.b #64,d0
clr.l d1
move.b d0,d1
mulu #mi_length,d1
lea (a5,d1),a3
move.l a3,v_ia(a0)
clr.l v_arp(a0)
clr.w v_mc(a0)
clr.l v_vc1(a0)
move.b #1,v_mod(a0)
lea v_k1(a0),a4
adda.l kurvenflag(pc),a4
move.l a4,v_adr(a0)
clr.l v_len(a0)
move.b i_mlen(a3),v_len+1(a0)
clr.b v_rln(a0)
move.b i_mlen(a3),v_rln+1(a0)
clr.w v_phc2(a0)
move.b i_spos(a3),v_phc1(a0)
clr.b v_phc1+1(a0)
bra gnn0
ENDC
gnn4 subq.b #1,d0 ;Digi-Instrument
lea instruments2-data(a6),a5
clr.l d1
move.b d0,d1
mulu #di_length,d1
lea (a5,d1),a3
move.l a3,v_ia(a0)
IFNE a_arp
clr.l v_arp(a0)
ENDC
clr.b v_mod(a0)
clr.l v_vc1(a0)
move.l i_sa(a3),a4
move.l a4,v_adr(a0)
move.w i_sln(a3),v_len(a0)
move.w i_sr(a3),v_rep(a0)
move.w i_srln(a3),v_rln(a0)
bra gnn0
gnn6
IFNE a_arp
tst.w v_etc(a0)
bne.s gnn6a
move.b (a1)+,v_arp(a0) ;arp : Arpeggionummer
clr.b v_arpc(a0)
bra gnn0
gnn6a adda.l #1,a1
bra gnn0
ENDC
gnn7
IFNE a_freqslide
tst.w v_etc(a0)
bne.s gnn7a
move.b (a1)+,d0 ;freq : Freq Slide up/down
lsl.w #8,d0
move.b (a1)+,d0
move.w d0,v_sld(a0)
bra gnn0
gnn7a adda.l #2,a1
bra gnn0
ENDC
gnn8
IFNE a_volslide
move.b (a1)+,v_vsl(a0) ;vol : Vol Slide up/down
move.b (a1)+,v_vslsp(a0)
bra gnn0
ENDC
gnn9 move.b (a1)+,v_vol2(a0) ;vol2 : Vol setzen
clr.b v_vsl(a0)
bra gnn0
gnn10
IFNE a_asynchron
move.b (a1)+,d0 ;spd : Speed bei allen
lea voicedatas(pc),a3 ;Stimmen setzen
move.b d0,v_spd(a3)
move.b d0,v_spd+length_voicedata(a3)
move.b d0,v_spd+length_voicedata*2(a3)
move.b d0,v_spd+length_voicedata*3(a3)
bra gnn0
ENDC
IFEQ a_asynchron
move.b (a1)+,s_spd-data(a6)
bra gnn0
ENDC
gnn11 move.b (a1)+,d1 ;rnd : randomize
lsl.w #8,d1
move.b (a1)+,d1
move.w d1,rndnumber-data(a6)
eori.w #$7e28,d1
move.w d1,rndnumber2-data(a6)
bra gnn0
gnn12 tst.w v_etc(a0)
bne gnn0
clr.w v_hkc(a0) ;hl : Hüllkurve neu starten
bra gnn0
gnn13
IFNE a_megainstr
tst.w v_etc(a0)
bne gnn0
clr.w v_mc(a0) ;hl2 : Megakurve neu starten
bra gnn0
ENDC
gnn14 tst.w v_etc(a0)
bne.s gnn14a
move.b (a1)+,d1 ;ton : Tonhöhe setzen
not.b d1
sub.b v_trp(a0),d1
move.b d1,v_th(a0)
IFNE a_feinfrequenz
clr.b v_th+1(a0)
ENDC
IFNE a_freqslide
clr.w v_sld(a0)
ENDC
bra gnn0
gnn14a adda.l #1,a1
bra gnn0
gnn15
IFNE a_fade
move.b (a1)+,fade-data(a6) ;fd : Fade einschalten
move.b (a1)+,fadespeed-data(a6)
bra gnn0
ENDC
gnn16
IFNE a_volume
move.b (a1)+,volume-data(a6) ;fd2 : Gesamtvol setzen
clr.b fade-data(a6)
bra gnn0
ENDC
gnn17
IFNE a_mod
clr.w d0 ;mod : Modulation setzen
move.b (a1)+,d0
move.l a0,a3
adda.l #length_voicedata,a3
tst.w d7
bne.s gnn17a
suba.l #4*length_voicedata,a3
gnn17a move.b d0,v_novol(a3)
move.b d0,v_nofreq(a3)
andi.b #1,v_novol(a3)
andi.b #16,v_nofreq(a3)
move.w #17,d1
* moveq.w #3,d2
sub.w d7,d2
lsl.w d2,d0
lsl.w d2,d1
or.w d0,modulation-data(a6)
or.w d1,modulation2-data(a6)
bra gnn0
ENDC
gnn18
IFNE a_feinfrequenz
tst.w v_etc(a0)
bne.s gnn18a
move.b (a1)+,v_th+1(a0) ;fine : Tonhöhe Feineinstellung
bra gnn0
gnn18a adda.l #1,a1
bra gnn0
ENDC
gnn19
IFNE a_asynchron
move.b (a1)+,v_spd(a0) ;spd2 : Speed in einer Stimme
bra gnn0 ; setzen
ENDC
gnn20
IFEQ cia-2
move.b (a1)+,d1 ;spd3 : ciaspeed setzen
lsl.w #8,d1
move.b (a1)+,d1
subi.w #time2,d1
move.w d1,ciatime-data(a6)
clr.w ciafade-data(a6)
bra gnn0
ENDC
gnn21
IFEQ cia-2
move.b (a1)+,d1 ;spdfd : ciafade setzen
lsl.w #8,d1
move.b (a1)+,d1
move.w d1,ciafade-data(a6)
bra gnn0
ENDC
gnn22
IFNE a_asynchron
move.b (a1)+,d0 ;plen : Länge eines Patterns
lea voicedatas(pc),a3 ;in allen Stimmen setzen
move.b d0,v_plen(a3)
move.b d0,v_plen+length_voicedata(a3)
move.b d0,v_plen+length_voicedata*2(a3)
move.b d0,v_plen+length_voicedata*3(a3)
bra gnn0
ENDC
IFEQ a_asynchron
move.b (a1)+,s_plen-data(a6)
bra gnn0
ENDC
gnn23
IFNE a_asynchron
move.b (a1)+,v_plen(a0) ;plen2 : Länge eines Patterns
bra gnn0 ;in einer Stimme setzen
ENDC
gnnadrs dc.l gnn6-data,gnn7-data,gnn8-data,gnn9-data,gnn10-data
dc.l gnn11-data,gnn12-data,gnn13-data,gnn14-data,gnn15-data
dc.l gnn16-data,gnn17-data,gnn18-data,gnn19-data,gnn20-data
dc.l gnn21-data,gnn22-data,gnn23-data,0
***************************************
***** Instrumente errechnen *******
***************************************
IFNE a_megainstr
megaeffects
lea voicedatas(pc),a0
move.w #3,d7
me1 btst.b #0,v_mod(a0)
beq me3
tst.b v_mod(a0)
bmi me3
move.l v_ia(a0),a1
cmpi.b #1,v_ef(a0)
beq me2
IFNE a_eff0
cmpi.b #5,i_mega(a1)
beq.s me1a
ENDC
clr.w d6
move.b i_mlen(a1),d6
lsl.w #1,d6
subq.w #1,d6
lea v_k1(a0),a2
move.l a2,v_adr(a0)
adda.l kurvenflag(pc),a2
move.w kurvenflag+2(pc),d1
lsr.w #1,d1
move.w d1,v_rep(a0)
clr.w d1
move.b i_mlen(a1),d1
move.w d1,v_rln(a0)
me1a clr.w d1
move.b i_mega(a1),d1
lsl.b #2,d1
lea meadrs(pc),a3
move.l (a3,d1.w),a3
move.l i_ma(a1),a4
move.w v_mc(a0),d1
clr.w d0
move.b (a4,d1.w),d0
jmp (a3)
calc1
IFNE a_eff0
move.l i_l1(a1),a3 ;Effect 0 ( "Mega-effect" )
move.l i_l2(a1),a4
calc2 move.b (a3)+,d1
ext.w d1
move.b (a4)+,d2
ext.w d2
sub.w d1,d2
muls d0,d2
asr.w #7,d2
add.b d1,d2
move.b d2,(a2)+
dbra d6,calc2
bra.s me2
ENDC
calc3
IFNE a_eff1
move.l a2,a3 ;Effect 1 ( Audiomaster-Filter )
move.l kurvenflag(pc),d1
sub.l d1,a3
subi.l #(v_k2-v_k1),d1
bpl.s calc3a
move.l #(v_k3-v_k1),d1
calc3a adda.l d1,a3
cmpi.b #-1,d0
beq.s calc7
cmpi.b #-2,d0
beq.s calc4
btst.b #1,v_mod(a0)
bne.s calc5
calc6 move.l i_l1(a1),a3
bset.b #1,v_mod(a0)
calc5 tst.b d0
bmi calc9a
move.w #128,d1
sub.b d0,d1
move.b (a3,d6.w),d0
ext.w d0
calc8 move.b (a3)+,d2
ext.w d2
sub.w d0,d2
muls d1,d2
asr.w #7,d2
add.w d2,d0
move.b d0,(a2)+
dbra d6,calc8
bra.s me2
calc4 move.b 1(a4,d1.w),d0
bra.s calc6
ENDC
me2 addq.w #1,v_mc(a0)
move.w v_mc(a0),d0
cmp.w i_ml(a1),d0
bne.s me3
move.w i_mr(a1),v_mc(a0)
me3 adda.l #length_voicedata,a0
dbra d7,me1
move.w kurvenflag+2-data(a6),d7
addi.w #(v_k2-v_k1),d7
cmpi.w #(v_k3-v_k1)+1,d7
bmi.s me4
clr.w d7
me4 move.w d7,kurvenflag+2-data(a6)
rts
IFNE a_eff1
calc7 move.w rndnumber(pc),d0 ;Effect 1a ( Rauschen )
lsr.w #1,d6
calc9 mulu d0,d0
lsr.l #4,d0
eori.w #$ac91,d0
move.w d0,(a2)+
dbra d6,calc9
move.w rndnumber2(pc),d1
mulu d1,d1
lsr.l #8,d1
eori.w #$6e47,d1
eor.w d1,d0
move.w d1,rndnumber2-data(a6)
move.w d0,rndnumber-data(a6)
bra.s me2
calc9a move.b d0,d1 ;Effect 1b (Highpassfilter)
neg.b d1
ext.w d1
move.b (a3,d6.w),d0
ext.w d0
move.w d0,d3
calc9b move.b (a3)+,d2
ext.w d2
move.w d2,d4
sub.w d3,d2
move.w d4,d3
add.w d2,d0
muls d1,d0
asr.w #7,d0
move.b d0,(a2)+
dbra d6,calc9b
bra me2
ENDC
calc10
IFNE a_eff2
move.l i_l1(a1),a3 ;Effect 2 ( "C64-Effect" )
move.l i_l2(a1),a4
sub.w d0,d6
subq.w #1,d0
bmi.s calc12
calc11 move.b (a3)+,(a2)+
dbra d0,calc11
tst.w d6
bmi me2
calc12 move.b (a4)+,(a2)+
dbra d6,calc12
bra me2
ENDC
calc13
IFNE a_eff3
move.l i_l1(a1),a3 ;Effect 3 ( Sonix-Phase )
move.l #128*256,d1
ext.w d0
add.w #64,d0
divu d0,d1 ;d1=Steigung im ersten Abschnitt
swap d1
clr.w d1
lsr.l #8,d1
move.w d0,d2
mulu d6,d2
lsr.w #7,d2 ;d2=Länge des ersten Abschnitts
move.w d6,d3 ;d3=Länge des zweiten Abschnitts
sub.w d2,d3 ;d4=counter
clr.l d4
calc14 swap d4
move.b (a3,d4.w),(a2)+
swap d4
add.l d1,d4
dbra d2,calc14
subq.w #1,d3
bmi me2
move.w #128,d1
sub.w d0,d1
move.l #128*256,d0
divu d1,d0 ;d1=Steigung im zweiten Abschnitt
swap d0
clr.w d0
lsr.l #8,d0
calc15 swap d4
move.b (a3,d4.w),(a2)+
swap d4
add.l d0,d4
dbra d3,calc15
bra me2
ENDC
calc16
IFNE a_eff4
move.l i_l1(a1),a3 ;Effect 4 ( Sonixfilter )
clr.w d5
move.b i_res(a1),d5
movea.l a2,a4
btst.b #1,v_mod(a0)
bne.s calc17
movea.l a3,a4
bset.b #1,v_mod(a0)
calc17 clr.l d1
move.b d0,d1
addi.w #32,d1
move.l #$7fff*32,d2
divu d1,d2
move.w #$6000/5/127,d3
ext.w d0
mulu d0,d3
sub.w d3,d2 ;d2 = Trägheit
move.w #$7fff,d3
sub.w d2,d3
mulu d5,d3
lsr.l #8,d3 ;d3 = Bremse
move.b (a4,d6.w),d0
move.b d0,d1
ext.w d0
lsl.w #7,d0 ;d0 = Position
sub.b -1(a4,d6.w),d1
ext.w d1
lsl.w #7,d1 ;d1 = Velocity
calc18 muls d3,d1 ;Bremsen
swap d1
rol.l #1,d1
move.b (a3)+,d4 ;nächstes Byte
ext.w d4
lsl.w #7,d4
sub.w d0,d4 ;Differenz zur Position
muls d2,d4
swap d4
rol.l #1,d4
add.w d4,d1 ;zur Kurve beschleunigen
add.w d1,d0 ;bewegen
move.w d0,d4
lsr.w #7,d4
move.b d4,(a2)+
dbra d6,calc18
bra me2
ENDC
calc19
IFNE a_eff6
move.w v_phc2(a0),d1 ;Effect 6 ( C-64 + Sonix-Filter )
bmi.s calc20
addq.w #1,d1
clr.w d2
move.b i_tim1(a1),d2
cmp.w d2,d1
bmi.s calc21
move.w #-1,d1
calc21 move.w d1,v_phc2(a0)
calc20 move.w i_spd2(a1),d2
tst.w d1
bmi.s calc22
move.w i_spd1(a1),d2
calc22 add.w d2,v_phc1(a0)
move.w v_phc1(a0),d2
bpl.s calc23
neg.w d2
calc23 clr.w d1
move.b i_dep(a1),d1
mulu d1,d2
lsr.l #8,d2
move.w d6,d5
addq.w #1,d5
mulu d5,d2
swap d2
lsr.w #1,d5
add.w d2,d5
subq.w #1,d5
sub.w d5,d6
clr.w d4
move.b i_res(a1),d4
clr.l d1
move.b d0,d1
addi.w #32,d1
move.l #$7fff*32,d2
divu d1,d2
move.w #$6000/5/127,d3
ext.w d0
mulu d0,d3
sub.w d3,d2 ;d2 = Trägheit
move.w #$7fff,d3
sub.w d2,d3
mulu d4,d3
lsr.l #8,d3 ;d3 = Bremse
move.w #128*afrika,d0
clr.w d1
calc24 muls d3,d1 ;Bremsen
swap d1
rol.l #1,d1
move.w #-128*afrika,d4
sub.w d0,d4 ;Differenz zur Position
muls d2,d4
swap d4
rol.l #1,d4
add.w d4,d1 ;zur Kurve beschleunigen
add.w d1,d0 ;bewegen
move.w d0,d4
* move.w d1,d4
lsr.w #7,d4
move.b d4,(a2)+
dbra d6,calc24
calc25 muls d3,d1 ;Bremsen
swap d1
rol.l #1,d1
move.w #128*afrika,d4
sub.w d0,d4 ;Differenz zur Position
muls d2,d4
swap d4
rol.l #1,d4
add.w d4,d1 ;zur Kurve beschleunigen
add.w d1,d0 ;bewegen
move.w d0,d4
* move.w d1,d4
lsr.w #7,d4
move.b d4,(a2)+
dbra d5,calc25
bra me2
ENDC
calc26
IFNE a_eff5
move.l i_l1(a1),a2 ;Effect 5 (Fast 64)
lsl.w #1,d0
ext.l d0
adda.l d0,a2
move.l a2,v_adr(a0)
move.b i_mlen(a1),d1
move.w d1,v_rln(a0)
clr.w v_rep(a0)
bra me2
ENDC
meadrs dc.l calc1-data,calc3-data, calc10-data,calc13-data,calc16-data
dc.l calc26-data,calc19-data,0
ENDC
c1 equ -72
cs1 equ -71
d1 equ -70
ds1 equ -69
e1 equ -68
f1 equ -67
fs1 equ -66
g1 equ -65
gs1 equ -64
a1 equ -63
as1 equ -62
h1 equ -61
c2 equ -60
cs2 equ -59
d2 equ -58
ds2 equ -57
e2 equ -56
f2 equ -55
fs2 equ -54
g2 equ -53
gs2 equ -52
a2 equ -51
as2 equ -50
h2 equ -49
c3 equ -48
cs3 equ -47
d3 equ -46
ds3 equ -45
e3 equ -44
f3 equ -43
fs3 equ -42
g3 equ -41
gs3 equ -40
a3 equ -39
as3 equ -38
h3 equ -37
c4 equ -36
cs4 equ -35
d4 equ -34
ds4 equ -33
e4 equ -32
f4 equ -31
fs4 equ -30
g4 equ -29
gs4 equ -28
a4 equ -27
as4 equ -26
h4 equ -25
c5 equ -24
cs5 equ -23
d5 equ -22
ds5 equ -21
e5 equ -20
f5 equ -19
fs5 equ -18
g5 equ -17
gs5 equ -16
a5 equ -15
as5 equ -14
h5 equ -13
c6 equ -12
cs6 equ -11
d6 equ -10
ds6 equ -9
e6 equ -8
f6 equ -7
fs6 equ -6
g6 equ -5
gs6 equ -4
a6 equ -3
as6 equ -2
h6 equ -1
effoffset equ -100
IFNE a_arp
arp equ -100
ENDC
IFNE a_freqslide
freq equ -101
ENDC
IFNE a_volslide
vol equ -102
ENDC
vol2 equ -103
spd equ -104
rnd equ -105
hl equ -106
IFNE a_megainstr
hl2 equ -107
ENDC
ton equ -108
IFNE a_fade
fd equ -109
ENDC
IFNE a_volume
fd2 equ -110
ENDC
IFNE a_mod
mod equ -111
ENDC
IFNE a_feinfrequenz
fine equ -112
ENDC
IFNE a_asynchron
spd2 equ -113
ENDC
IFEQ cia-2
spd3 equ -114
spdfd equ -115
ENDC
plen equ -116
IFNE a_asynchron
plen2 equ -117
ENDC
attack_zs ds.b 1
IFNE cia
oldcra ds.b 1
ENDC
even
oldint ds.l 1
IFNE cia
oldinten ds.w 1
oldsr ds.w 1
ENDC
IFNE a_megainstr
kurvenflag dc.l 0
ENDC
defaults
IFEQ a_asynchron
s_c1_def dc.b 5
s_c2_def dc.b -1
s_plen_def dc.b 16
s_spd_def dc.b 6
ENDC
IFNE a_fade
f_def dc.b 0
fc_def dc.b 0
fs_def dc.b 0
ENDC
IFNE a_volume
vol_def dc.b 64
ENDC
even
IFEQ a_asynchron
s_c3_def dc.w 0
ENDC
IFNE a_mod
mod_def dc.w $8000
mod2_def dc.w $ff
ENDC
rnd_def dc.w $4e76
rnd2_def dc.w $3218
IFEQ cia-2
ciatime_def dc.w time1-time2
ciafade_def dc.w 0
ENDC
def_end
registers
IFEQ a_asynchron
s_c1 dc.b 0
s_c2 dc.b 0
s_plen dc.b 0
s_spd dc.b 0
ENDC
IFNE a_fade
fade dc.b 0
fadecounter dc.b 0
fadespeed dc.b 0
ENDC
IFNE a_volume
volume dc.b 64
ENDC
even
IFEQ a_asynchron
s_c3 dc.w 0
ENDC
IFNE a_mod
modulation dc.w $8000
modulation2 dc.w $ff
ENDC
rndnumber dc.w $4e76
rndnumber2 dc.w $3218
IFEQ cia-2
ciatime dc.w time1-time2
ciafade dc.w 0
ciatime2 dc.w time1-time2
ENDC
adrsflag dc.w 0
patterns_adrs dc.l patterns4-data,patterns2-data,patterns3-data,
patterns-data,patterns5-data, patterns6-data,patterns7-data,
patterns8-data,patterns9-data, patterns10-data,0
patterns_adr ds.l 1
opt p-
noten
dc.w 62,71,75,80,85,90,95, 101,107,113,120,127
dc.w 135,143,151,160,170, 180,190,202,214,226,240,254
dc.w 269,285,302,320,339, 360,381,404,428,453,480,508
dc.w 538,570,604,640,678, 720,762,808,856,906,960,1016
dc.w 1076,1140,1208,1280, 1356,1440,1524,1616,1712,1812,1920,2032
dc.w 2152,2280,2416,2560, 2712,2880,3048,3232,3424,3624,3840,4064
instruments1
dc.l huell1
dc.w 6,5
dc.l vib2
dc.w 1,0,8000 ;64 / ULTRA BASS
dc.l mega2
dc.w 96,0 ;1162
dc.w 0,500 ;15884
dc.b 255,0,255,32
dc.b 64,6
dc.l huell3
dc.w 4,3
dc.l vib3
dc.w 1,0,8000 ;65 / MELODIE INSTR
dc.l mega3
dc.w 6,5
dc.l instr2
dc.l 0
dc.b 16,1
dc.l huell5
dc.w 4,3
dc.l vib2
dc.w 2,1,8000
dc.l megatest ;66 / C64 - Neu
dc.w 28,0
dc.l instrtest
dc.l 0
dc.b 16,5
dc.l huell4
dc.w 28,27
dc.l vib4
dc.w 25,24,8000
dc.l megatest ;67 / C64 - Normal abspielen
dc.w 1,0
dc.l instr1
dc.l 0
dc.b 16,5
dc.l huell4
dc.w 28,27
dc.l vib4
dc.w 25,24,8000
dc.l megatest ;68 / C64 - Normal abspielen
dc.w 1,0
dc.l instr3
dc.l 0
dc.b 16,5
dc.l huell1
dc.w 6,5
dc.l vib2
dc.w 1,0,8000 ;69 / ULTRA BASS
dc.l mega2
dc.w 1162,0
dc.w 0,15884
dc.b 255,0,255,32
dc.b 64,6
dc.l huell4
dc.w 28,27
dc.l vib5
dc.w 1,0,18000
dc.l megatest ;70 / C64 - Normal abspielen - II
dc.w 1,0
dc.l instr1
dc.l 0
dc.b 16,5
instruments2
* dc.l huell1
* dc.w 1,0
* dc.l vib1
* dc.w 1,0,0
* dc.l 0
* dc.w 2000,0,1
dc.l 0
patterns:
dc.l x13,x1,x1,x14
dc.b 0,0,0,0
dc.l x15,x1,x1,x16
dc.b -4,0,0,-4
dc.l x15,x1,x1,x16
dc.b -2,0,0,-2
dc.l x15,x1,x1,x16
dc.b 0,0,0,0
dc.l x15,x5,x5-1,x16
dc.b 0,0,0,0
dc.l x15,x6,x6-1,x16
dc.b -4,0,0,-4
dc.l x15,x7,x7-1,x16
dc.b -2,0,0,-2
dc.l x15,x8,x8-1,x16
dc.b 0,0,0,0
dc.l x3,x9,x9-1,x3
dc.b -12,0,0,-12
dc.l x4,x1,x1,x17
dc.b -4,0,0,-4
dc.l x4,x1,x1,x17
dc.b -2,0,0,-2
dc.l x4,x1,x1,x17
dc.b 0,0,0,0
dc.l x4,x10,x10-1,x17
dc.b 3,0,0,3
dc.l x4,x11,x11-1,x17
dc.b 2,0,0,2
dc.l x4,x1,x1,x17
dc.b 0,0,0,0
dc.l x4,x1,x1,x17
dc.b 0,0,0,0
dc.l x4,x10,x10-1,x17
dc.b 3,12,12,3
dc.l x4,x12,x12-1,x17
dc.b 2,12,12,2
dc.l x4,x1,x1,x17
dc.b 0,0,0,0
dc.l x4,x1,x1,x17
dc.b 0,0,0,0
dc.l x18,x0,x0,x19
dc.b 0,0,0,0
dc.l x1,x0,x0,x1
dc.b 0,0,0,0
dc.l x1,x0,x0,x1
dc.b 0,0,0,0
dc.l x1,x0,x0,x1
dc.b 0,0,0,0
dc.l x1,x0,x0,x1
dc.b 0,0,0,0
dc.l x1,x0,x0,x1
dc.b 0,0,0,0
dc.l x1,x0,x0,x1
dc.b 0,0,0,0
dc.l x1,x0,x0,x1
dc.b 0,0,0,0
dc.l x1,x0,x0,x1
dc.b 0,0,0,0
dc.l x1,x0,x0,x1
dc.b 0,0,0,0
dc.l x0,x0,x0,x0
dc.b 0,0,0,0
dc.l x0,x0,x0,x0
dc.b 0,0,0,0
dc.l -1
patterns2:
dc.l o2,o6,o6-2,o6-4
dc.b -7,0,-6,-7
dc.l o4,o1,o1,o1
dc.b -7,0,0,0
dc.l o4,o6,o6-2,o6-4
dc.b -9,-2,1,0
dc.l o4,o1,o1,o1
dc.b -9,0,0,0
dc.l o4,o6,o6-2,o6-4
dc.b -7,0,-6,-7
dc.l o4,o1,o1,o1
dc.b -7,0,0,0
dc.l o4,o6,o6-2,o6-4
dc.b -4,-4,3,1
dc.l o4,o1,o1,o1
dc.b -4,0,0,0
dc.l o4,o6,o6-2,o6-4
dc.b -2,-2,6,5
dc.l o4,o1,o1,o1
dc.b -2,0,0,0
dc.l o4,o6,o6-2,o6-4
dc.b -4,-4,3,1
dc.l o4,o1,o1,o1
dc.b -4,0,0,0
dc.l o7,o6,o6-2,o6-4
dc.b 0,0,8,7
dc.l o1,o1,o1,o1
dc.b 0,0,0,0
dc.l o1,o1,o1,o1
dc.b 0,0,0,0
dc.l o1,o1,o1,o1
dc.b 0,0,0,0
dc.l o1,o1,o1,o1
dc.b 0,0,0,0
dc.l o0,o0,o0,o0
dc.b 0,0,0,0
dc.l -1
patterns3:
dc.l s2,s2,s3,s3
dc.b -2,-9,-9,-2
dc.l s2,s2,s3,s3
dc.b -4,-11,-11,-4
dc.l s2,s2,s3,s3
dc.b -9,-14,-14,-9
dc.l s2,s2,s3,s3
dc.b -6,-11,-11,-6
dc.l s4,s5,s5,s4
dc.b -2,-4,-11,-9
dc.l s6,s7,s7,s6
dc.b -9,-6,-11,-14
dc.l s4,s5,s5,s4
dc.b -2,-4,-11,-9
dc.l s6,s7,s7,s6
dc.b -11,-9,-16,-18
dc.l s4,s5,s5,s4
dc.b -6,-4,-11,-14
dc.l s6,s7,s7,s6
dc.b -11,-14,-21,-18
dc.l s8,s8-1,s8-2,s8-3
dc.b -11,-14,-18,-21
dc.l s1,s1,s1,s1
dc.b 0,0,0,0
dc.l s1,s1,s1,s1
dc.b 0,0,0,0
dc.l -1
patterns4:
dc.l z2,z5,z6,z7
dc.b -4,0,0,0
dc.l z4,z8,z9,z10
dc.b -2,0,0,0
dc.l z4,z5,z6,z7
dc.b -4,0,0,0
dc.l z4,z11,z12,z13
dc.b 0,0,0,0
dc.l z4,z5,z6,z7
dc.b -16,0,0,0
dc.l z4,z8,z9,z10
dc.b -14,0,0,0
dc.l z4,z5,z6,z7
dc.b -16,0,0,0
dc.l z4,z11,z12,z13
dc.b -12,0,0,0
dc.l z14,z5,z6,z7
dc.b -4,0,0,0
dc.l z4,z8,z9,z10
dc.b -2,0,0,0
dc.l z4,z5,z6,z7
dc.b -4,0,0,0
dc.l z4,z11,z12,z13
dc.b 0,0,0,0
dc.l z4,z5,z6,z7
dc.b -16,0,0,0
dc.l z4,z8,z9,z10
dc.b -14,0,0,0
dc.l z4,z5,z6,z7
dc.b -16,0,0,0
dc.l z4,z11,z12,z13
dc.b -12,0,0,0
dc.l -1
patterns5:
dc.l u5,u5,u7,u7-2
dc.b 0,-12,0,0
dc.l u6,u6,u8,u8-2
dc.b 0,-12,0,0
dc.l u5,u5,u9,u9-2
dc.b 0,-12,0,0
dc.l u6,u6,u10,u10-2
dc.b 0,-12,0,0
dc.l u5,u5,u7,u7-2
dc.b 0,-12,0,0
dc.l u6,u6,u8,u8-2
dc.b 0,-12,0,0
dc.l u5,u5,u9,u9-2
dc.b 0,-12,0,0
dc.l u6,u6,u10,u10-2
dc.b 0,-12,0,0
dc.l u11,u5,u7,u7-2
dc.b 0,-12,0,0
dc.l u6,u6,u8,u8-2
dc.b 0,-12,0,0
dc.l u5,u5,u9,u9-2
dc.b 0,-12,0,0
dc.l u6,u6,u10,u10-2
dc.b 0,-12,0,0
dc.l -1
patterns6:
dc.l w1,w3,w4,w2
dc.b 0,0,0,0
dc.l w0,w0,w0,w0
dc.b 0,0,0,0
dc.l w0,w0,w0,w0
dc.b 0,0,0,0
dc.l -1
patterns7:
dc.l r1,r1,r1,r1
dc.b 0,3,8,-28
dc.l r2,r2,r2,r2
dc.b 0,3,8,-28
dc.l r3,r3,r3,r3
dc.b 0,3,8,-28
dc.l -1
patterns8:
dc.l t1,t1,t1,t1
dc.b 0,3,7,12
dc.l t2,t2,t2,t2
dc.b 0,1,2,3
dc.l t0,t0,t0,t0
dc.b 0,1,2,3
dc.l -1
patterns9:
dc.l i1,i1-1,i1-2,i1-3
dc.b 12,7,4,0
dc.l i2-3,i2-2,i2-1,i2
dc.b 12,7,3,0
dc.l -1
patterns10:
dc.l p1,p2,p3,p4
dc.b 0,0,0,0
dc.l p5,p5,p5,p5
dc.b 0,0,0,0
dc.l p0,p0,p0,p0
dc.b 0,0,0,0
dc.l p0,p0,p0,p0
dc.b 0,0,0,0
dc.l -1
vib1
dc.b 0
vib2
dc.b 20,10,30
vib3
dc.b $0a
vib4
dc.b 0,1,2,3,4,5,6,8,9,10,10,10,10, 10,10,10,10,10,10,10,10,10,10,10,30
vib5
dc.b 255
huell1
dc.b 44,64,44,34,24,30,0
huell3
dc.b 60,50,40,30,20,10
huell4
dc.b 20,30,40,50,60,64,62,60,58,56,54, 52,50,48,46,44,42,40,38,36, 34,32,30,28,26,24,22,20
huell5
dc.b 64,50,40,64
instr2
dc.b $01,$02,$04,$08,$10,$20,$40,$7f, $40,$20,$10,$08,$04,$02,$01,$b0,$ff,$fe,$fc,
$f8,$f0,$e0,$c0,$81,$c0,$e0,$f0,$f8,$fc,$ff,$00
instrtest
dc.b 127,127,127,127,127,127,127,127,127,127,127, 127,127,127,127,127,127,127,127,127,127,127,127,127,
127,127,127,127,127,127,127,127
dc.b -127,-127,-127,-127,-127,-127,-127, -127,-127,-127,-127,-127,-127,-127,-127,
-127,-127,-127,-127,-127,-127,-127,-127,-127,-127,-127,-127,-127,-127,-127,-127,-127
instr1
dc.b 0,16,32,48,64,80,96,112,127,112,96,80,64,48,32,16,0
dc.b -16,-32,-48,-64,-80,-96, -112,-127,-112,-96,-80,-64,-48,-32,-16,-127
dc.b 0,16,32,48,64,80,96,112, 127,112,96,80,64,48,32,16,0
dc.b -16,-32,-48,-64,-80,-96, -112,-127,-112,-96,-80,-64,-48,-32,-16,-127
instr3
dc.b 0,16,32,48,-64,80,96, 112,-127,112,96,80,64,48,32,16,127
dc.b -16,-32,-48,-64,-80,-96, -112,-127,-112,-96,-80,-64,-48,-32,-16,-127
instr10
dc.b -63,63
megatest
* dc.b 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
* dc.b 14,13,12,11,10,9,8,7,6,5,4,3,2
dc.b mega3
dc.b $0a,$14,$1e,$23,$28,$00
mega4
dc.b 1
arpeggios
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
dc.b 2,8,-6,5,-9,-1,3,-7,0,4,8,4,-6,-1,-11,7
dc.b 7,4,0,7,4,0,7,4,0,7,4,0,7,4,0,7
dc.b 7,3,0,7,3,0,7,3,0,7,3,0,7,3,0,7
x0
dc.b vol,-2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
x1
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
x2
dc.b c5,64,vol2,64,mod,0,0
dc.b 0
dc.b ton,c5,hl,0
dc.b 0
dc.b ton,c5,hl,0
dc.b 0
dc.b ton,c5,hl,0
dc.b 0
dc.b ton,c5,hl,0
dc.b 0
dc.b ton,c5,hl,0
dc.b 0
dc.b ton,c5,hl,0
dc.b 0
dc.b ton,c5,hl,0
dc.b 0
x3
dc.b c5,64,fine,15,vol2,64,0
dc.b 0
dc.b ton,c5,hl,0
dc.b 0
dc.b ton,c5,hl,0
dc.b 0
dc.b ton,c5,hl,0
dc.b 0
dc.b ton,c5,hl,0
dc.b 0
dc.b ton,c5,hl,0
dc.b 0
dc.b ton,c5,hl,0
dc.b 0
dc.b ton,c5,hl,0
dc.b 0
x4
dc.b ton,c4,hl,0
dc.b 0
dc.b ton,c4,hl,0
dc.b 0
dc.b ton,c4,hl,0
dc.b 0
dc.b ton,c4,hl,0
dc.b 0
dc.b ton,c4,hl,0
dc.b 0
dc.b ton,c4,hl,0
dc.b 0
dc.b ton,c4,hl,0
dc.b 0
dc.b ton,c4,hl,0
dc.b ton,c4,hl,0
x5
dc.b c5,67,vol2,64,0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b d5,0
dc.b 0
dc.b 0
dc.b 0
x6
dc.b ds5,0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b ds5,freq,-1,$ea,0
dc.b 0
dc.b 0
dc.b 0
dc.b ton,f5,0
dc.b 0
dc.b ds5,0
dc.b 0
x7
dc.b d5,0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b g4,0
dc.b 0
dc.b 0
dc.b 0
x8
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b f4,0
dc.b 0
dc.b g4,0
dc.b 0
dc.b f4,0
dc.b 0
dc.b 0
dc.b 0
x9
dc.b c4,0
dc.b 0
dc.b 0
dc.b 0
dc.b as3,0
dc.b 0
dc.b c4,0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
x10
dc.b ds4,0
dc.b 0
dc.b 0
dc.b 0
dc.b c4,0
dc.b 0
dc.b 0
dc.b 0
dc.b ds4,0
dc.b 0
dc.b 0
dc.b 0
dc.b c4,0
dc.b 0
dc.b 0
dc.b 0
x11
dc.b f4,68,0
dc.b 0
dc.b 0
dc.b 0
dc.b ds4,67,0
dc.b 0
dc.b 0
dc.b 0
dc.b d4,0
dc.b 0
dc.b freq,0,20,0
dc.b 0
dc.b as3,0
dc.b 0
dc.b c4,0
dc.b 0
x12
dc.b gs4,68,0
dc.b 0
dc.b 0
dc.b 0
dc.b g4,67,0
dc.b 0
dc.b 0
dc.b 0
dc.b f4,0
dc.b 0
dc.b g4,0
dc.b 0
dc.b gs4,0
dc.b 0
dc.b g4,0
dc.b 0
x13
dc.b c4,64,vol2,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
x14
dc.b c4,64,fine,35,vol2,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
x15
dc.b ton,c4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
x16
dc.b ton,c4,fine,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
x17
dc.b ton,c4,hl,fine,35,0
dc.b 0
dc.b ton,c4,hl,fine,35,0
dc.b 0
dc.b ton,c4,hl,fine,35,0
dc.b 0
dc.b ton,c4,hl,fine,35,0
dc.b 0
dc.b ton,c4,hl,fine,35,0
dc.b 0
dc.b ton,c4,hl,fine,35,0
dc.b 0
dc.b ton,c4,hl,fine,35,0
dc.b 0
dc.b ton,c4,hl,fine,35,0
dc.b ton,c4,hl,fine,35,0
x18
dc.b c4,69,vol2,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
x19
dc.b c4,69,fine,135,vol2,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
o0
dc.b vol,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
o1
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
o2
dc.b c5,64,vol2,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
o3
dc.b c5,64,fine,35,vol2,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
o4
dc.b ton,c5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
o5
dc.b ton,c5,fine,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
o6
dc.b c5,67,vol2,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
o7
dc.b c5,69,vol2,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
s0
dc.b vol,-2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
s1
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
s2
dc.b c5,65,vol2,64,0
dc.b 0
dc.b 0
dc.b c5,vol2,32,0
dc.b 0
dc.b 0
dc.b c5,vol2,16,0
dc.b 0
dc.b 0
dc.b c5,vol2,8,0
dc.b 0
dc.b 0
dc.b c5,vol2,4,0
dc.b 0
dc.b c5,vol2,2,0
dc.b 0
s3
dc.b c5,65,vol2,64,fine,40,0
dc.b 0
dc.b 0
dc.b c5,vol2,32,fine,40,0
dc.b 0
dc.b 0
dc.b c5,vol2,16,fine,40,0
dc.b 0
dc.b 0
dc.b c5,vol2,8,fine,40,0
dc.b 0
dc.b 0
dc.b c5,vol2,4,fine,40,0
dc.b 0
dc.b c5,vol2,2,fine,40,0
dc.b 0
s4
dc.b c5,65,vol2,64,0
dc.b 0
dc.b 0
dc.b 0
dc.b c5,65,vol2,64,0
dc.b 0
dc.b c5,65,vol2,64,0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
s5
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b c5,65,vol2,64,0
dc.b 0
dc.b 0
dc.b 0
dc.b c5,65,vol2,64,0
dc.b 0
dc.b 0
dc.b 0
s6
dc.b c5,65,vol2,64,0
dc.b 0
dc.b 0
dc.b 0
dc.b c5,65,vol2,64,0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
s7
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b c5,65,vol2,64,0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
s8
dc.b c5,65,vol2,32,0
dc.b 0
dc.b 0
dc.b 0
dc.b c5,vol2,26,0
dc.b 0
dc.b 0
dc.b 0
dc.b c5,vol2,20,0
dc.b 0
dc.b 0
dc.b 0
dc.b c5,vol2,14,0
dc.b 0
dc.b 0
dc.b 0
z0
dc.b vol,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
z1
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
z2
dc.b c5,64,vol2,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
z4
dc.b ton,c5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
z5
dc.b ds5,65,vol2,32,0
dc.b 0
dc.b 0
dc.b ds5,0
dc.b 0
dc.b 0
dc.b d5,0
dc.b 0
dc.b 0
dc.b d5,0
dc.b 0
dc.b 0
dc.b d5,0
dc.b 0
dc.b 0
dc.b ds5,0
z6
dc.b 0
dc.b d5,65,vol2,32,0
dc.b 0
dc.b 0
dc.b d5,0
dc.b 0
dc.b 0
dc.b ds5,0
dc.b 0
dc.b 0
dc.b c5,0
dc.b 0
dc.b 0
dc.b c5,0
dc.b 0
dc.b 0
z7
dc.b 0
dc.b 0
dc.b c5,65,vol2,32,0
dc.b 0
dc.b 0
dc.b c5,0
dc.b 0
dc.b 0
dc.b ds5,0
dc.b 0
dc.b 0
dc.b ds5,0
dc.b 0
dc.b 0
dc.b d5,0
dc.b 0
z8
dc.b f5,65,vol2,32,0
dc.b 0
dc.b 0
dc.b f5,0
dc.b 0
dc.b 0
dc.b ds5,0
dc.b 0
dc.b 0
dc.b ds5,0
dc.b 0
dc.b 0
dc.b ds5,0
dc.b 0
dc.b 0
dc.b f5,0
z9
dc.b 0
dc.b ds5,65,vol2,32,0
dc.b 0
dc.b 0
dc.b ds5,0
dc.b 0
dc.b 0
dc.b f5,0
dc.b 0
dc.b 0
dc.b d5,0
dc.b 0
dc.b 0
dc.b d5,0
dc.b 0
dc.b 0
z10
dc.b 0
dc.b 0
dc.b d5,65,vol2,32,0
dc.b 0
dc.b 0
dc.b d5,0
dc.b 0
dc.b 0
dc.b f5,0
dc.b 0
dc.b 0
dc.b f5,0
dc.b 0
dc.b 0
dc.b ds5,0
dc.b 0
z11
dc.b g5,65,0
dc.b 0
dc.b 0
dc.b g5,0
dc.b 0
dc.b 0
dc.b f5,0
dc.b 0
dc.b 0
dc.b g5,0
dc.b 0
dc.b 0
dc.b f5,0
dc.b 0
dc.b 0
dc.b 0
z12
dc.b 0
dc.b f5,0
dc.b 0
dc.b 0
dc.b f5,0
dc.b 0
dc.b 0
dc.b g5,0
dc.b 0
dc.b 0
dc.b gs5,0
dc.b 0
dc.b 0
dc.b ds5,0
dc.b 0
dc.b 0
z13
dc.b 0
dc.b 0
dc.b ds5,0
dc.b 0
dc.b 0
dc.b ds5,0
dc.b 0
dc.b 0
dc.b g5,0
dc.b 0
dc.b 0
dc.b g5,0
dc.b 0
dc.b 0
dc.b 0
dc.b d5,0
z14
dc.b ton,c5,fd2,64,fd,-1,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
u0
dc.b vol,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
u1
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
u2
dc.b c5,64,vol2,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
u4
dc.b ton,c5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
u5
dc.b ds4,64,vol2,64,0
dc.b 0
dc.b 0
dc.b 0
dc.b ton,ds5,hl,0
dc.b 0
dc.b 0
dc.b 0
dc.b ton,f4,hl,0
dc.b 0
dc.b 0
dc.b 0
dc.b ton,f5,hl,0
dc.b 0
dc.b 0
dc.b 0
u6
dc.b ton,g4,hl,0
dc.b 0
dc.b 0
dc.b 0
dc.b ton,g5,hl,0
dc.b 0
dc.b 0
dc.b 0
dc.b ton,f4,hl,0
dc.b 0
dc.b 0
dc.b 0
dc.b ton,f5,hl,0
dc.b 0
dc.b 0
dc.b 0
u7
dc.b g4,67,vol2,16,0
dc.b 0
dc.b a4,0
dc.b 0
dc.b as4,0
dc.b 0
dc.b as4,0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b as4,0
dc.b 0
dc.b d5,0
dc.b 0
u8
dc.b as4,0
dc.b 0
dc.b a4,0
dc.b 0
dc.b as4,0
dc.b 0
dc.b g4,0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b f4,0
dc.b 0
dc.b g4,0
dc.b 0
u9
dc.b as5,0
dc.b 0
dc.b d5,0
dc.b 0
dc.b as5,0
dc.b 0
dc.b a5,0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b d5,0
dc.b 0
u10
dc.b g5,0
dc.b 0
dc.b d5,0
dc.b 0
dc.b g5,0
dc.b 0
dc.b a5,0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
u11
dc.b ds4,64,vol2,64,fd2,64,fd,-1,8,0
dc.b 0
dc.b 0
dc.b 0
dc.b ton,ds5,hl,0
dc.b 0
dc.b 0
dc.b 0
dc.b ton,f4,hl,0
dc.b 0
dc.b 0
dc.b 0
dc.b ton,f5,hl,0
dc.b 0
dc.b 0
dc.b 0
w0
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
w1
dc.b c5,67,vol2,64,arp,2,spd,9,0
dc.b as4,67,vol2,64,arp,2,0
dc.b 0
dc.b gs4,67,vol2,64,arp,2,0
dc.b 0
dc.b g4,67,vol2,64,arp,2,0
dc.b 0
dc.b f4,67,vol2,64,arp,2,0
dc.b 0
dc.b ds4,67,vol2,64,arp,2,0
dc.b 0
dc.b d4,67,vol2,64,arp,2,0
dc.b d4,67,vol2,64,arp,2,0
dc.b 0
dc.b c4,67,vol2,64,arp,2,0
dc.b fd2,64,fd,-18,30,0
w2
dc.b c5,67,vol2,64,arp,2,fine,50,0
dc.b as4,67,vol2,64,arp,2,fine,50,0
dc.b 0
dc.b gs4,67,vol2,64,arp,2,fine,50,0
dc.b 0
dc.b g4,67,vol2,64,arp,2,fine,50,0
dc.b 0
dc.b f4,67,vol2,64,arp,2,fine,50,0
dc.b 0
dc.b ds4,67,vol2,64,arp,2,fine,50,0
dc.b 0
dc.b d4,67,vol2,64,arp,2,fine,50,0
dc.b d4,67,vol2,64,arp,2,fine,50,0
dc.b 0
dc.b c4,67,vol2,64,arp,2,fine,50,0
dc.b fd2,64,fd,-18,30,0
w3
dc.b c5,69,vol2,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
dc.b fd2,64,fd,-18,30,0
w4
dc.b c5,69,vol2,64,fine,50, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
dc.b fd2,64,fd,-18,30,0
r0
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
r1
dc.b c5,67,vol2,64,0
dc.b 0
dc.b c5,67,vol2,64,0
dc.b 0
dc.b 0
dc.b 0
dc.b c5,67,vol2,64,0
dc.b 0
dc.b 0
dc.b 0
dc.b as4,67,vol2,64,0
dc.b 0
dc.b c5,67,vol2,64,0
dc.b 0
dc.b 0
dc.b 0
r2
dc.b g4,67,vol2,64,0
dc.b 0
dc.b g4,67,vol2,64,0
dc.b 0
dc.b 0
dc.b 0
dc.b g4,67,vol2,64,0
dc.b 0
dc.b 0
dc.b 0
dc.b f4,67,vol2,64,0
dc.b 0
dc.b g4,67,vol2,64,0
dc.b 0
dc.b 0
dc.b 0
r3
dc.b as4,67,vol2,64,0
dc.b 0
dc.b 0
dc.b 0
dc.b g4,67,0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
t0
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
t1
dc.b c2,67,vol2,64,arp,2,freq,-1,200,0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
t2
dc.b fd2,64,fd,-5,10,0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
i0
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
i1
dc.b c4,65,vol2,64,spd,4,0
dc.b 0
dc.b 0
dc.b 0
dc.b ds4,0
dc.b 0
dc.b 0
dc.b 0
dc.b fs4,0
dc.b 0
dc.b 0
dc.b 0
dc.b a4,0
dc.b 0
dc.b 0
dc.b 0
i2
dc.b c5,0
dc.b 0
dc.b 0
dc.b 0
dc.b fd2,64,fd,-15,10,0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
dc.b 0
p0
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
p1
dc.b c5,67,arp,2,vol2,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
p2
dc.b c5,67,arp,2,vol2,64,freq, 0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
p3
dc.b c5,67,arp,2,vol2,64,freq, 0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
p4
dc.b c5,67,arp,2,vol2,64,freq, 0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
p5
dc.b fd2,64,fd,-5,10,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0
even
voicedatas ds.l length_voicedata
dataend |