home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-12-22 | 56.1 KB | 3,942 lines |
- ;----------------- DIGI Booster v1.1 player pure code ----------------
- ; by Tap - Tomasz Piasta
- ; © 20.07.1995
- ;
- ; This player is very easy to use:
- ; - first jump to db_init
- ; - in your own loop jump to db_music
- ; - to switch off player jump to db_end
- ;
- ; The player plays modules from Digi Booster 1.0/1.1 with packed
- ; pattern data. Eight channels modules take about 0.25 frame
- ; (on standard Amiga 1200). The player automticly recognize
- ; processor (old Motorola 68000/68010 or 68020 and higher) and uses
- ; suitable instructions. If you want to use this player in your
- ; productions please buy the original (DIGI Booster with player
- ; source code).
- ; The code of player isn't optimized yet (except the mix routine
- ; which is extremly fast!).
- ; NOTE:
- ; If you want to use interrupt with this player you MUST use a VBL interrupt!
- ;------------------------- effects commands --------------------------
- ; 0xx arpeggio
- ; * 1xx portamento up
- ; * 2xx portamento down
- ; * 3xx glissando
- ; * 4xx vibrato
- ; * 5xx glissando + slide volume
- ; * 6xx vibrato + slide volume
- ; 7xx volume vibrato
- ; * 8xx robot
- ; * 9xx sample offset - main
- ; * axx slide volume
- ; * bxx song repeat
- ; * cxx set volume
- ; * dxx pattern break
- ; * fxx set speed
- ;
- ;----------------------------- exx commands ---------------------------
- ; * e00 filter off
- ; * e01 filter on
- ; * e1x fine slide up
- ; * e2x fine slide down
- ; * e30 backwd play sample
- ; * e31 backwd play sample+loop
- ; * e40 stop playing sample
- ; * e50 channel off
- ; * e51 channel on
- ; * e6x loops
- ; * e8x sample offset 2
- ; * e9x retrace
- ; * eax fine volume up
- ; * ebx fine volume down
- ; * ecx cut sample
- ; edx sample delay
- ; * eex pause
-
-
- Section code,code_p
-
- BuffSize equ 16384
- ChanArea equ 100
-
- PackEnable: equ 26
- PatNum: equ 46
- OrdNum: equ 47
- Orders: equ 48
- SamLens: equ 176
- SamReps: equ 300
- SamReplens: equ 424
- SamVols: equ 548
- SamFins: equ 579
- SongName: equ 610
- SamNames: equ 642
- SongData: equ 1572
-
-
- SamBuffAdr: equ 0 ; 4
- SamRep1: equ 4 ; 4
- SamRep2: equ 8 ; 4
- ChangeAdr: equ 12 ; 1
- MixDon: equ 13 ; 1
- VolA: equ 14 ; 1
- VolB: equ 15 ; 1
- SlideVolOldA equ 16 ; 1
- SlideVolOldB equ 17 ; 1
- ReplaceEnable equ 18 ; 1
- OFFenable equ 19 ; 1
- SamOffsetA equ 20 ; 1
- SamOffsetB equ 21 ; 1
- RetraceCntA equ 22 ; 1
- RetraceCntB equ 23 ; 1
- OldSamNumA: equ 24 ; 1
- OldSamNumB: equ 25 ; 1
- RobotOldVal: equ 26 ; 1
- RobotEnable: equ 27 ; 1
- MainPeriod: equ 28 ; 2
- MainVol: equ 30 ; 1
- MBRpointer equ 31 ; 1
- PlayPointer equ 32 ; 1
- Oldd0 equ 34 ; 2
- Oldd1 equ 36 ; 2
- Oldd2 equ 38 ; 2
- Oldd3 equ 40 ; 2
- Oldd4 equ 42 ; 2
- Oldd5 equ 44 ; 2
- Oldd6 equ 46 ; 2
- loopsdataschanA equ 48 ; 3
- loopsdataschanB equ 51 ; 3
- BACKWDenable: equ 56 ; 1
- EqNewSamA equ 57 ; 1
- EqNewSamB equ 58 ; 1
- MainDTALEN: equ 60 ; 2
- PortUpOldValA equ 62 ; 1
- PortUpOldValB equ 63 ; 1
- PortDownOldValA equ 64 ; 1
- PortDownOldValB equ 65 ; 1
- VibratoDatasA equ 66 ; 4
- VibratoDatasB equ 70 ; 4
- GlissandoDatasA equ 74 ; 6
- GlissandoDatasB equ 80 ; 6
- BuffBegADR equ 86 ; 4
- BuffEndADR equ 90 ; 4
- BuffMixADR equ 94 ; 4
- OnOffChanA equ 98 ; 1
- OnOffChanB equ 99 ; 1
-
- ; ----------------- przyklad wykorzystania playera -------------------
-
- Start: move.w #$4000,$dff09a
- bsr db_Init
- Loop: bsr vbl
- bsr db_Music
- btst #6,$bfe001
- bne.s Loop
- bsr db_end
- move.w #$c000,$dff09a
- rts
-
- vbl: cmp.b #$ff,$dff006
- bne.s vbl
- rts
- ; --------------------------------------------------------------------
-
-
- db_init:
- move.l 4.w,a6
- move.w 296(a6),d0
- move.b #1,OldCPU
- btst #0,d0
- beq.s MC68010
- move.b #1,OldCPU
- MC68010:
- btst #1,d0
- beq.s MC68020
- clr.b OldCPU
- MC68020:
- btst #2,d0
- beq.s MC68030
- clr.b OldCPU
- MC68030:
- btst #3,d0
- beq.s MC68040
- clr.b OldCPU
- MC68040:
- lea Channel1,a0
- move.l #sample_buff1_1,(a0)
- move.l #sample_buff1_1,BuffBegAdr(a0)
- move.l #sample_buff1_1+BuffSize,BuffEndAdr(a0)
- move.l #sample_buff1_2,ChanArea(a0)
- move.l #sample_buff1_2,ChanArea+BuffBegAdr(a0)
- move.l #sample_buff1_2+BuffSize,ChanArea+BuffEndAdr(a0)
- move.l #sample_buff1_3,ChanArea*2(a0)
- move.l #sample_buff1_3,[ChanArea*2]+BuffBegAdr(a0)
- move.l #sample_buff1_3+BuffSize,[ChanArea*2]+BuffEndAdr(a0)
- move.l #sample_buff1_4,ChanArea*3(a0)
- move.l #sample_buff1_4,[ChanArea*3]+BuffBegAdr(a0)
- move.l #sample_buff1_4+BuffSize,[ChanArea*3]+BuffEndAdr(a0)
-
- clr.b SongPos
- clr.b PattPos
- clr.b count
- move.b #6,temp
-
- bset #1,$bfe001
-
- moveq #0,d0
- moveq #0,d1
- moveq #0,d2
- moveq #0,d3
- moveq #0,d4
- moveq #0,d5
- moveq #0,d6
- moveq #0,d7
-
- move.l #0,a0
- move.l #0,a1
- move.l #0,a2
- move.l #0,a3
- move.l #0,a5
-
- bsr db_InitVoices
-
- move.b temp(pc),count
- move.l ModDIGI,a5
-
- lea 1572(a5),a1 ; song data
- lea PattAdresses(pc),a2
- move.l a1,(a2)+
- move.b PatNum(a5),d7
- moveq #0,d0
- db_MakePatAdr
- move.w (a1),d0
- addq #2,d0
- add.l d0,a1
- move.l a1,(a2)+
- dbf d7,db_MakePatAdr
-
- lea SamLens(a5),a0
- move.l a1,d6
- lea sample_starts(pc),a2
- moveq #30,d7
- db_MakeSamAdr
- move.l d6,(a2)+
- add.l (a0)+,d6
- dbf d7,db_MakeSamAdr
-
- lea SamLens(a5),a0
- lea sample_lenghts(pc),a1
- moveq #31-1,d7
- db_cploop1:
- move.l (a0)+,(a1)+
- dbf d7,db_cploop1
-
- bsr make_voltab
- bsr make_tab
- rts
-
- db_InitVoices:
- move.l #sample_buff1_1,$dff0a0
- move.w #166,$dff0a4
- move.w #214,$dff0a6
- clr.w $dff0a8
- move.l #sample_buff1_2,$dff0b0
- move.w #166,$dff0b4
- move.w #214,$dff0b6
- clr.w $dff0b8
- move.l #sample_buff1_3,$dff0c0
- move.w #166,$dff0c4
- move.w #214,$dff0c6
- clr.w $dff0c8
- move.l #sample_buff1_4,$dff0d0
- move.w #166,$dff0d4
- move.w #214,$dff0d6
- clr.w $dff0d8
- rts
-
- PattEnable: dc.b 0
- SongPos: dc.b 0
- PattPos: dc.b 0
- temp: dc.b 0
- count: dc.b 0
- PauseEn: dc.b 0
- PauseVBL: dc.w 0
- JMPEN: dc.b 0
- OldPattPos: dc.b 0
- OldDepAdr: dc.l 0
- modDIGI: dc.l module
- UnPackedData: ds.l 8
- oldcpu: dc.b 0
- DMA1: dc.b 0
- even
-
- db_music:
- move.l ModDIGI,a5
- lea sample_starts(pc),a0 ; sample starts, 124(a0) lenghts
- lea SamReps(a5),a3 ; sample repeats, 124(a3) replens
- lea SamVols(a5),a4 ; sample volumes
-
- move.b count(pc),d7
- cmp.b temp(pc),d7
- blt DepackDone
-
- tst.b temp
- beq.s NoNewPos
- cmp.b #64,pattpos
- bne.s NoNewPos
- clr.b PattPos
- tst.b PattEnable
- bne.s NoNewPos
- addq.b #1,SongPos
- NoNewPos:
- moveq #0,d6
- moveq #0,d7
- move.b OrdNum(a5),d7
- move.b SongPos(pc),d6
- cmp.w d6,d7
- bge.s NoRepeatSong
- clr.b SongPos
- clr.b PattPos
- move.l PattAdresses(pc),a1
- NoRepeatSong:
-
- moveq #0,d7
- move.b SongPos(pc),d7
- move.b Orders(a5,d7.w),d7
- lsl.w #2,d7
- lea PattAdresses(pc),a1
- move.l (a1,d7.w),a1
-
- addq.w #2,a1
- lea (a1),a6
- lea 64(a1),a5
- moveq #0,d7
- move.b PattPos(pc),d7
- add.w d7,a1
- move.b OldPattPos(pc),d6
- addq.b #1,d6
- cmp.b d6,d7
- beq.s NoCalcAdr
-
- tst.w d7
- beq.s DepackData
- subq #1,d7
- move.l a5,d1
- DepackCalcAdr:
- move.b (a6)+,d0
- btst #7,d0
- beq.s DepackNoAdd7
- addq #4,d1
- DepackNoAdd7
- btst #6,d0
- beq.s DepackNoAdd6
- addq #4,d1
- DepackNoAdd6
- btst #5,d0
- beq.s DepackNoAdd5
- addq #4,d1
- DepackNoAdd5
- btst #4,d0
- beq.s DepackNoAdd4
- addq #4,d1
- DepackNoAdd4
- btst #3,d0
- beq.s DepackNoAdd3
- addq #4,d1
- DepackNoAdd3
- btst #2,d0
- beq.s DepackNoAdd2
- addq #4,d1
- DepackNoAdd2
- btst #1,d0
- beq.s DepackNoAdd1
- addq #4,d1
- DepackNoAdd1
- btst #0,d0
- beq.s DepackNoAdd0
- addq #4,d1
- DepackNoAdd0
- dbf d7,DepackCalcAdr
- move.l d1,a5
- move.w #$f,$dff180
- bra.s DepackData
- NoCalcAdr
- move.l OldDepAdr(pc),a5
- DepackData:
- move.b PattPos(pc),OldPattPos
- lea UnPackedData,a6
- moveq #7,d7
- DepackDataLoop
- btst d7,(a1)
- beq.s DepackPutZero
- move.l (a5)+,(a6)+
- dbf d7,DepackDataLoop
- move.l a5,OldDepAdr
- bra.s DepackDone
- DepackPutZero
- clr.l (a6)+
- dbf d7,DepackDataLoop
- move.l a5,OldDepAdr
- DepackDone
-
- lea UnPackedData,a1
- moveq #0,d6
- moveq #0,d5
- lea Channel1(pc),a6
- lea $dff0a0,a5
- bsr playvoice
- moveq #1,d5
- lea Channel2(pc),a6
- lea $dff0b0,a5
- bsr playvoice
- moveq #2,d5
- lea Channel3(pc),a6
- lea $dff0c0,a5
- bsr playvoice
- moveq #3,d5
- lea Channel4(pc),a6
- lea $dff0d0,a5
- bsr playvoice
-
- tst.w d6
- beq.s NoSetDma
-
- bsr Wait_dma
-
- or.w #$8000,d6
- move.w d6,$dff096
-
- NoSetDma:
- move.l ModDIGI,a5
- lea channel1(pc),a6
- bsr MIXCHAN
-
- tst.w PauseVBL
- beq.s NoPause
- move.b #1,PauseEn
- subq.w #1,PauseVBL
- NoPause:
-
- move.b count(pc),d7
- cmp.b temp(pc),d7
- blt.s No_NEW
- clr.b count
-
- tst.w PauseVBL
- bne.s DoPAUSE
- addq.b #1,pattpos
- clr.b PauseEn
- DoPAUSE
- No_NEW
- addq.b #1,count
- rts
-
- playvoice:
- clr.b EqNewSamA(a6)
- clr.b EqNewSamB(a6)
-
- tst.w MainPeriod(a6)
- beq.w PlayOk
-
- tst.b OffEnable(a6)
- beq.s NoOFFchan
- clr.b OffEnable(a6)
-
- tst.w Oldd0(a6)
- beq.s NoData1
- tst.w Oldd4(a6)
- bne.s OFFchan
- NoData1
- tst.b PlayPointer(a6)
- beq.s OFFchan
- move.w Oldd2(a6),d1
- lsr.w #8,d1
- cmp.b #3,d1
- beq.s NoOFFchan
- cmp.b #5,d1
- beq.s NoOFFchan
- move.w Oldd6(a6),d1
- lsr.w #8,d1
- cmp.b #3,d1
- beq.s NoOFFchan
- cmp.b #5,d1
- beq.s NoOFFchan
- OFFchan
- moveq #0,d0
- bset d5,d0
- move.w d0,$dff096
- bset d5,d6
- NoOFFchan
- cmp.w #-1,MainPeriod(a6)
- beq.w StopChan
-
- tst.b MBRpointer(a6)
- bne.s NoPlayMixBuff
- move.l BuffBegAdr(a6),(a5)
- move.w #BuffSize/2,4(a5)
- move.w MainPeriod(a6),6(a5)
- moveq #0,d7
- move.b MainVol(a6),d7
- move.w d7,8(a5)
- move.b #1,PlayPointer(a6)
- bra.s PlayOK
- NoPlayMixBuff
- move.l BuffMixADR(a6),(a5)
- move.w OldD3(a6),d3
- lsr.w #1,d3
- move.w d3,4(a5)
- move.w MainPeriod(a6),6(a5)
- moveq #0,d7
- move.b MainVol(a6),d7
- move.w d7,8(a5)
- bra.s PlayOK
- StopChan
- moveq #0,d0
- bset d5,d0
- bclr d5,d6
- move.w d0,$dff096
- move.b #1,PlayPointer(a6)
- clr.w MainPeriod(a6)
- PlayOK rts
-
-
- WAIT_DMA:
- moveq #0,d1
- move.b $dff006,d1
- ext.w d1
- WAITDMA_loop
- moveq #0,d0
- move.b $dff006,d0
- sub.w #14,d0
- ext.w d0
- cmp.w d1,d0
- blt.s WAITDMA_loop
- rts
-
- MIXCHAN:
- *-------------------- channel 1a,1b mix ---------------------------
- lea sample_pos1(pc),a2 ; sample positions
- move.w Oldd0(a6),d0
- move.w Oldd1(a6),d1
- move.w Oldd2(a6),d2
- move.w Oldd3(a6),d3
- move.w Oldd4(a6),d4
- move.w Oldd5(a6),d5
- move.w Oldd6(a6),d6
-
- tst.w what
- bne.s ok1
- move.l #sample_buff1_MIX,BuffMixADR(a6)
- ok1:
- cmp.w #1,what
- bne.s ok2
- move.l #sample_buff1_MIX+640,BuffMixADR(a6)
- ok2:
- cmp.w #2,what
- bne.s ok3
- move.l #sample_buff1_MIX+1280,BuffMixADR(a6)
- ok3:
- bsr mainPROC
- move.w d0,Oldd0(a6)
- move.w d1,Oldd1(a6)
- move.w d2,Oldd2(a6)
- move.w d3,Oldd3(a6)
- move.w d4,Oldd4(a6)
- move.w d5,Oldd5(a6)
- move.w d6,Oldd6(a6)
-
- *-------------------- channel 2a,2b mix ---------------------------
- lea ChanArea(a6),a6
- lea sample_pos2(pc),a2 ; sample positions
- move.w Oldd0(a6),d0
- move.w Oldd1(a6),d1
- move.w Oldd2(a6),d2
- move.w Oldd3(a6),d3
- move.w Oldd4(a6),d4
- move.w Oldd5(a6),d5
- move.w Oldd6(a6),d6
- lea 8(a1),a1
-
- tst.w what
- bne.s ok1_2
- move.l #sample_buff2_MIX,BuffMixADR(a6)
- ok1_2:
- cmp.w #1,what
- bne.s ok2_2
- move.l #sample_buff2_MIX+640,BuffMixADR(a6)
- ok2_2:
- cmp.w #2,what
- bne.s ok3_2
- move.l #sample_buff2_MIX+1280,BuffMixADR(a6)
- ok3_2:
- bsr mainPROC
- move.w d0,Oldd0(a6)
- move.w d1,Oldd1(a6)
- move.w d2,Oldd2(a6)
- move.w d3,Oldd3(a6)
- move.w d4,Oldd4(a6)
- move.w d5,Oldd5(a6)
- move.w d6,Oldd6(a6)
- *-------------------- channel 3a,3b mix ---------------------------
- lea ChanArea(a6),a6
- lea sample_pos3(pc),a2 ; sample positions
- move.w Oldd0(a6),d0
- move.w Oldd1(a6),d1
- move.w Oldd2(a6),d2
- move.w Oldd3(a6),d3
- move.w Oldd4(a6),d4
- move.w Oldd5(a6),d5
- move.w Oldd6(a6),d6
- lea 8(a1),a1
-
- tst.w what
- bne.s ok1_3
- move.l #sample_buff3_MIX,BuffMixADR(a6)
- ok1_3:
- cmp.w #1,what
- bne.s ok2_3
- move.l #sample_buff3_MIX+640,BuffMixADR(a6)
- ok2_3:
- cmp.w #2,what
- bne.s ok3_3
- move.l #sample_buff3_MIX+1280,BuffMixADR(a6)
- ok3_3:
- bsr mainPROC
- move.w d0,Oldd0(a6)
- move.w d1,Oldd1(a6)
- move.w d2,Oldd2(a6)
- move.w d3,Oldd3(a6)
- move.w d4,Oldd4(a6)
- move.w d5,Oldd5(a6)
- move.w d6,Oldd6(a6)
- *-------------------- channel 4a,4b mix ---------------------------
- lea ChanArea(a6),a6
- lea sample_pos4(pc),a2 ; sample positions
- move.w Oldd0(a6),d0
- move.w Oldd1(a6),d1
- move.w Oldd2(a6),d2
- move.w Oldd3(a6),d3
- move.w Oldd4(a6),d4
- move.w Oldd5(a6),d5
- move.w Oldd6(a6),d6
- lea 8(a1),a1
-
- tst.w what
- bne.s ok1_4
- move.l #sample_buff4_MIX,BuffMixADR(a6)
- ok1_4:
- cmp.w #1,what
- bne.s ok2_4
- move.l #sample_buff4_MIX+640,BuffMixADR(a6)
- ok2_4:
- cmp.w #2,what
- bne.s ok3_4
- move.l #sample_buff4_MIX+1280,BuffMixADR(a6)
- ok3_4:
- bsr mainPROC
- move.w d0,Oldd0(a6)
- move.w d1,Oldd1(a6)
- move.w d2,Oldd2(a6)
- move.w d3,Oldd3(a6)
- move.w d4,Oldd4(a6)
- move.w d5,Oldd5(a6)
- move.w d6,Oldd6(a6)
- * ----------------------------------------------------------
- tst.w what
- bne.s whatok
- move.w #3,what
- whatok
- subq #1,what
- rts
-
- ; -------------- main procedure ----------------------------
- mainPROC:
- tst.b temp
- beq old_data
-
- move.b count(pc),d7
- cmp.b temp(pc),d7
- blt old_data
-
- tst.b PauseEn
- bne.w oldperiod_1
- tst.b OnOffChanA(a6)
- bne.w oldperiod_1
-
- moveq #0,d3
-
- tst.w (a1)
- beq.s oldperiod_1
-
- move.w 2(a1),d7
- and.w #$0f00,d7
- cmp.w #$300,d7
- bne.s NoClrGliss_1
- clr.w GlissandoDatasA+4(a6)
- NoClrGliss_1
-
- clr.b BackWDenable(a6)
- clr.w VibratoDatasA(a6)
-
- move.b #1,OffEnable(a6)
- move.b #1,EqNewSamA(a6)
- move.w (a1),d7
-
- btst #12,d7
- beq.s nohisam1
- move.b #1,hisam
- bclr #12,d7
- tst.w d7
- beq.s oldperiod_1
- nohisam1
- move.w d7,d0
-
- tst.b MixDon(a6)
- beq.s cont1
-
- move.l (a0,d5.w),d7
- add.l 124(a0,d5.w),d7
- cmp.l 124(a2,d5.w),d7
- bgt.s cont1
-
- tst.l (a3,d5.w)
- bne.s cont1
-
- clr.l 124(a2,d5.w)
- moveq #0,d4
- moveq #0,d5
- moveq #0,d6
- clr.b MixDon(a6)
- cont1:
- bra.s newperiod_1
- oldperiod_1:
- moveq #-1,d3
- newperiod_1:
-
- moveq #0,d2
-
- tst.b hisam
- bne.s neweff_1
- tst.w 2(a1)
- beq.w oldeff_1
- neweff_1
- move.w 2(a1),d2
- move.w d2,d7
- lsr.w #8,d7
- lsr.w #4,d7
-
- tst.b hisam
- beq.s nohisam11
- add.w #$10,d7
- clr.b hisam
- nohisam11
-
- tst.b d7
- beq.s oldeff_1
-
- cmp.b #-1,d3
- bne.s noupvol_1
- move.w d1,d3
- lsr.w #2,d3
- move.b (a4,d3.w),VolA(a6)
- and.w #$0fff,d2
- bra.s NoOldNum_1
- noupvol_1:
-
- move.w d7,d1
- subq #1,d1
- lsl.w #2,d1
- move.w d2,d7
- and.w #$0f00,d7
- cmp.w #$300,d7
- bne.s NewAdr_1
-
- tst.l (a2,d1.w)
- bne.s NoNewAdr_1
- moveq #0,d0
- moveq #0,d1
- moveq #0,d2
- bra.s NoOldNum_1
- NewAdr_1
- move.l (a0,d1.w),(a2,d1.w)
- NoNewAdr_1
- move.w d1,d3
- lsr.w #2,d3
- move.b (a4,d3.w),VolA(a6)
- and.w #$0fff,d2
- move.b d1,OldSamNumA(a6)
- bra.s NoOldNum_1
- oldeff_1:
- tst.w (a1)
- beq.s NoOldNum_1
-
- moveq #0,d1
- move.b OldSamNumA(a6),d1
-
- move.w d2,d7
- and.w #$0f00,d7
- cmp.w #$500,d7
- beq.s YeGL_1
- cmp.w #$300,d7
- bne.s NoGL_1
- YeGL_1
- tst.l (a2,d1.w)
- bne.s NoOldNum_1
- moveq #0,d0
- moveq #0,d1
- moveq #0,d2
- bra.s NoOldNum_1
- NoGL_1
-
- move.l (a0,d1.w),(a2,d1.w)
- NoOldNum_1
-
-
-
-
-
- tst.b PauseEn
- bne.w oldperiod_2
- tst.b OnOffChanB(a6)
- bne.s oldperiod_2
-
- moveq #0,d3
-
- tst.w 4(a1)
- beq.s oldperiod_2
-
- move.w 6(a1),d7
- and.w #$0f00,d7
- cmp.w #$300,d7
- bne.s NoClrGliss_2
- clr.w GlissandoDatasB+4(a6)
- NoClrGliss_2
-
- clr.w VibratoDatasB(a6)
- move.b #1,OffEnable(a6)
- move.b #1,EqNewSamB(a6)
-
- move.w 4(a1),d7
-
- btst #12,d7
- beq.s nohisam_2
- move.b #1,hisam
- bclr #12,d7
- tst.w d7
- beq.s oldperiod_2
- nohisam_2:
- move.w d7,d4
-
- tst.b MixDon(a6)
- beq.s cont2
-
- move.l (a0,d1.w),d7
- add.l 124(a0,d1.w),d7
- cmp.l (a2,d1.w),d7
- bgt.s cont2
-
- tst.l (a3,d1.w)
- bne.s cont2
-
- clr.l (a2,d1.w)
- moveq #0,d0
- moveq #0,d1
- moveq #0,d2
- clr.b MixDon(a6)
- cont2:
- bra.s newperiod_2
- oldperiod_2:
- moveq #-1,d3
- newperiod_2:
-
- moveq #0,d6
-
- tst.b hisam
- bne.s neweff_2
- tst.w 6(a1)
- beq.s oldeff_2
- neweff_2
- move.w 6(a1),d6
-
- move.w d6,d7
- lsr.w #8,d7
- lsr.w #4,d7
-
- tst.b hisam
- beq.s nohisam22
- add.w #$10,d7
- clr.b hisam
- nohisam22
-
- tst.b d7
- beq.s OldEff_2
-
- cmp.b #-1,d3
- bne.s noupvol_2
- move.w d5,d3
- lsr.w #2,d3
- move.b (a4,d3.w),VolB(a6)
- and.w #$0fff,d6
- bra.s NoOldNum_2
- noupvol_2:
- move.w d7,d5
- subq #1,d5
- lsl.w #2,d5
-
- move.w d6,d7
- and.w #$0f00,d7
- cmp.w #$300,d7
- bne.s NewAdr_2
-
- tst.l 124(a2,d5.w) ; adres sampla
- bne.s NoNewAdr_2
- moveq #0,d4
- moveq #0,d5
- moveq #0,d6
- bra.s NoOldNum_2
- NewAdr_2
- move.l (a0,d5.w),124(a2,d5.w) ; adres sampla
- NoNewAdr_2
- move.w d5,d3
- lsr.w #2,d3
- move.b (a4,d3.w),VolB(a6)
- and.w #$0fff,d6
- move.b d5,OldSamNumB(a6)
- bra.s NoOldNum_2
- OldEff_2:
- tst.w 4(a1)
- beq.s NoOldNum_2
-
- moveq #0,d5
- move.b OldSamNumB(a6),d5
-
- move.w d6,d7
- and.w #$0f00,d7
- cmp.w #$500,d7
- beq.s YeGL_2
- cmp.w #$300,d7
- bne.s NoGL_2
- YeGL_2
- tst.l 124(a2,d5.w)
- bne.s NoOldNum_2
- moveq #0,d4
- moveq #0,d5
- moveq #0,d6
- bra.s NoOldNum_2
- NoGL_2
- move.l (a0,d5.w),124(a2,d5.w)
- NoOldNum_2
-
- move.l a5,-(sp)
- bsr EffectCommandsA2
- bsr EffectCommandsB2
- move.l (sp)+,a5
-
- tst.b OnOffChanA(a6)
- bne.s Stop1
- cmp.w #$0e40,d2
- bne.s No_stop1
- move.l BuffBegAdr(a6),(a6)
- move.b #1,OffEnable(a6)
- Stop1 moveq #0,d0
- moveq #0,d1
- moveq #0,d2
- No_stop1
- tst.b OnOffChanB(a6)
- bne.s Stop2
- cmp.w #$0e40,d6
- bne.s No_stop2
- move.l BuffBegAdr(a6),(a6)
- move.b #1,OffEnable(a6)
- Stop2 moveq #0,d4
- moveq #0,d5
- moveq #0,d6
- No_stop2
-
- old_data:
-
- move.b temp(pc),d7
- subq #1,d7
- cmp.b count(pc),d7
- bne.s no_CLReff2
- move.w d2,d7
- lsr.w #8,d7
- cmp.b #8,d7
- beq.s no_CLReff1
- cmp.b #3,d7
- beq.s no_CLReff1
- cmp.b #5,d7
- beq.s CLReffSP1
- move.w d2,d7
- lsr.w #4,d7
- cmp.w #$ec,d7
- beq.s no_CLReff1
- moveq #0,d2
- bra.s no_CLReff1
- CLReffSP1:
- move.w #$0300,d2
- no_CLReff1
- move.w d6,d7
- lsr.w #8,d7
- cmp.b #3,d7
- beq.s no_CLReff2
- cmp.b #5,d7
- beq.s CLReffSP2
- move.w d6,d7
- lsr.w #4,d7
- cmp.w #$ec,d7
- beq.s no_CLReff2
- moveq #0,d6
- bra.s no_CLReff2
- CLReffSP2:
- move.w #$0300,d6
- no_CLReff2
-
- cmp.w #113,d0
- bge.w OKKI1
- moveq #0,d0
- moveq #0,d1
- moveq #0,d2
- OKKI1
- cmp.w #113,d4
- bge.s OKKI2
- moveq #0,d4
- moveq #0,d5
- moveq #0,d6
- OKKI2
-
- move.l a5,-(sp)
- bsr EffectCommandsA
- bsr EffectCommandsB
- move.l (sp)+,a5
-
- move.w d0,GlissandoDatasA+2(a6)
- move.w d4,GlissandoDatasB+2(a6)
-
- ; -----------------------------------
-
- tst.w d0
- bne.s NoReplace1
- tst.w d4
- beq.s NoReplace1
- move.l 124(a2,d5.w),(a2,d5.w)
- clr.l 124(a2,d5.w)
- move.w d4,d0
- move.w d5,d1
- move.w d6,d2
- moveq #0,d4
- moveq #0,d5
- moveq #0,d6
- move.b #1,ReplaceEnable(a6)
- move.b VolA(a6),d3
- move.b VolB(a6),VolA(a6)
- move.b d3,VolB(a6)
- NoReplace1
-
- tst.w d4
- bne mixing
-
- clr.b MBRpointer(a6)
-
- tst.w d0
- beq nothing
-
- move.w d0,MainPeriod(a6)
- move.b VolA(a6),MainVol(a6)
-
- tst.b OffEnable(a6)
- beq.s NoAtStartBuff
- tst.b PlayPointer(a6)
- beq.s BuffAtStart
- move.w d2,d7
- lsr.w #8,d7
- cmp.b #3,d7
- beq.s NoAtStartBuff
- cmp.b #5,d7
- beq.s NoAtStartBuff
- BuffAtStart
- move.l BuffBegAdr(a6),(a6)
- NoAtStartBuff
-
- move.l #71590,d3
- divu d0,d3
- and.l #$0000ffff,d3
- ; - - - - - - - - - - - - - - - backwd play - - - - - - - - - - - - - - -
- tst.b BackWDenable(a6)
- bne.s bckOK
-
- move.w d2,d7
- lsr.w #4,d7
- cmp.w #$e3,d7
- bne.s no_backwd
- move.l 124(a0,d1.w),d7
- add.l d7,(a2,d1.w)
- move.b #1,BackWDenable(a6)
-
- move.b d2,d7
- and.b #$0f,d7
- beq.s bckOK
- move.b #2,BackWDenable(a6)
- bckOK
- move.b #1,MBRpointer(a6)
- movem.l d0-d1/a4-a5,-(sp)
-
- move.l (a0,d1.w),d0
- move.w d3,d7
- move.l (a2,d1.w),a5
- move.l BuffMixADR(a6),a4
-
- cmp.b #1,BackWDenable(a6)
- beq.s copy_loopbck1
-
- copy_loopbck2:
- cmp.l d0,a5
- ble.s sampleend_str
- move.b -(a5),(a4)+
- dbf d7,copy_loopbck2
- bra.s bck_done
- sampleend_str:
- clr.b BackWDenable(a6)
- bra.s bck_done
- copy_loopbck1:
- cmp.l d0,a5
- ble.w sampleend
- move.b -(a5),(a4)+
- dbf d7,copy_loopbck1
- bck_done:
-
- movem.l (sp)+,d0-d1/a4-a5
- sub.l d3,(a2,d1.w)
- bra.w Replace2
- no_backwd
- move.w d2,d7
- lsr.w #8,d7
- cmp.b #$8,d7
- beq RobotEffect
-
- tst.b RobotEnable(a6)
- beq.s NoOffCH
- move.b #1,Offenable(a6)
- move.l BuffBegAdr(a6),(a6)
- NoOffCH clr.b RobotEnable(a6)
- ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- addq #1,d3
-
- tst.l 124(a3,d1.w)
- bne sampleloop
-
- movem.l d0-d1/a4-a5,-(sp)
-
- move.l 124(a0,d1.w),d0
- add.l (a0,d1.w),d0
- move.l (a2,d1.w),a5
- cmp.l d0,a5
- blt.s NotSamEnd0
- move.w #-1,MainPeriod(a6)
- bra realsampleend
- NotSamEnd0
-
- move.l (a6),d7
- move.l (a6),d1
- add.l d3,d1
- cmp.l BuffEndAdr(a6),d1
- ble.s NotEndBuff
-
- move.l a5,d7
- add.l d3,d7
- cmp.l d0,d7
- ble.s NotSamEnd2
- move.w #-1,MainPeriod(a6)
- bra realsampleend
- NotSamEnd2
- sub.l BuffEndAdr(a6),d1
- move.w d3,d7
- sub.w d1,d7
- subq.w #1,d7
- move.l (a6),a4
- bsr copy_loop
-
- move.l BuffBegAdr(a6),(a6)
- move.l (a6),a4
-
- move.w d1,d7
- subq.w #1,d7
- bsr copy_loop
- bra.s CopyDone
- NotEndBuff
-
- move.l (a6),a4
-
- move.l a5,d7
- add.l d3,d7
- cmp.l d0,d7
- ble.s NotSamEnd1
- sub.l d0,d7
- move.w d7,d0
- move.w d3,d7
- sub.w d0,d7
- subq.w #1,d7
- bsr copy_loop
-
- move.w d0,d7
- beq.s nosubq1
- subq.w #1,d7
- nosubq1
- bra sampleend
- NotSamEnd1
- move.w d3,d7
- subq #1,d7
- bsr copy_loop
- CopyDone:
- move.l a4,(a6)
- movem.l (sp)+,d0-d1/a4-a5
- add.l d3,(a2,d1.w)
-
- Replace2:
- move.w d3,MainDTALEN(a6)
- Replace_R:
- tst.b ReplaceEnable(a6)
- beq.s NoReplace2
- move.l (a2,d1.w),124(a2,d1.w)
- clr.l (a2,d1.w)
- move.w d0,d4
- move.w d1,d5
- move.w d2,d6
- clr.b ReplaceEnable(a6)
- move.b VolA(a6),d0
- move.b VolB(a6),VolA(a6)
- move.b d0,VolB(a6)
- moveq #0,d0
- moveq #0,d1
- moveq #0,d2
- NoReplace2
- rts
-
- copy_loop:
- tst.w d7
- blt.s copy_loopex
- tst.b VolA(a6)
- beq.s copyclr_loop
- tst.b OldCPU
- bne.s copy_loopL68000
- movem.l d7/a4-a5,-(sp)
- lsr.w #2,d7
- copy_loopL
- move.l (a5)+,(a4)+
- dbf d7,copy_loopL
- movem.l (sp)+,d7/a4-a5
- addq #1,d7
- add.w d7,a5
- add.w d7,a4
- rts
- copy_loopL68000
- move.b (a5)+,(a4)+
- dbf d7,copy_loopL68000
- copy_loopex
- rts
-
- copyclr_loop:
- moveq #0,d6
- tst.b OldCPU
- bne.s copyclr_loopL68000
- movem.l d7/a4-a5,-(sp)
- lsr.w #2,d7
- copy_loopclrL
- move.l d6,(a4)+
- dbf d7,copy_loopclrL
- movem.l (sp)+,d7/a4-a5
- addq #1,d7
- add.w d7,a5
- add.w d7,a4
- rts
- copyclr_loopL68000
- move.b d6,(a4)+
- dbf d7,copyclr_loopL68000
- rts
-
- nothing:
- tst.w MainPeriod(a6)
- beq.s nostopperiod
- move.w #-1,MainPeriod(a6)
- nostopperiod
- rts
-
- sampleend:
- moveq #0,d0
- clr.b -1(a4)
- clr_loop:
- move.b d0,(a4)+
- dbf d7,clr_loop
- realsampleend:
- movem.l (sp)+,d0-d1/a4-a5
- clr.l (a2,d1.w)
- moveq #0,d0
- moveq #0,d1
- moveq #0,d2
- clr.b ReplaceEnable(a6)
- clr.b BackWDenable(a6)
- rts
-
- sampleloop:
- movem.l d0-d4/a4-a5,-(sp)
-
- move.l (a2,d1.w),a5
- move.l 124(a3,d1.w),d4
- add.l (a3,d1.w),d4
- add.l (a0,d1.w),d4
-
- cmp.l d4,a5
- ble.s NotSamEndL
- move.l d4,(a2,d1.w)
- subq.l #1,(a2,d1.w)
- move.l d4,a5
- subq.l #1,a5
- NotSamEndL
-
- move.l (a6),d7
- move.l (a6),d2
- add.l d3,d2
- cmp.l BuffEndAdr(a6),d2
- ble.w NotEndBuff_L
-
- move.l (a6),a4
- move.l a5,d7
- add.l d3,d7
- cmp.l d4,d7
- ble.w NoMakeLoop_EB
-
- sub.l d4,d7 ; loop
- move.w d7,d4
- move.w d3,d7
- sub.w d4,d7
-
- sub.l BuffEndAdr(a6),d2
- move.w d3,d0
- sub.w d2,d0
-
- cmp.w d0,d7
- bge.s Copy_ToEndBuff
- ; d0=>d7 koniec buff pozniej niz petla
-
- move.l BuffEndAdr(a6),d2
-
- move.w d3,d7
- subq #1,d7
- move.l 124(a3,d1.w),d4
- add.l (a3,d1.w),d4
- add.l (a0,d1.w),d4
-
- move.l (a3,d1.w),d0
- add.l (a0,d1.w),d0
- bra.s copy_loop3EBML2
- copy_loop4EBML2:
- move.l d0,a5
- copy_loop3EBML2:
- cmp.l d4,a5
- bge.s copy_loop4EBML2
-
- cmp.l d2,a4
- blt.s EBMLcont
- move.l BuffBegAdr(a6),(a6)
- move.l (a6),a4
- EBMLcont
- move.b (a5)+,(a4)+
- dbf d7,copy_loop3EBML2
- bra.s MakeLoopEB_done
-
- Copy_ToEndBuff
- exg d0,d7
- sub.w d7,d0
- subq #1,d7
- bsr copy_loop
- move.l BuffBegAdr(a6),(a6)
- move.l (a6),a4
- exg d0,d7
- subq #1,d7
- bsr copy_loop
-
- move.w d4,d7
- subq.w #1,d7
- move.l 124(a3,d1.w),d4
- add.l (a3,d1.w),d4
- add.l (a0,d1.w),d4
-
- move.l (a3,d1.w),d0
- add.l (a0,d1.w),d0
- copy_loop4EBML:
- move.l d0,a5
- copy_loop3EBML:
- cmp.l d4,a5
- bge.s copy_loop4EBML
- move.b (a5)+,(a4)+
- dbf d7,copy_loop3EBML
-
- MakeLoopEB_done
- move.l a4,(a6)
- move.l a5,(a2,d1.w)
- movem.l (sp)+,d0-d4/a4-a5
- bsr Replace2
- rts
-
- NoMakeLoop_EB
- sub.l BuffEndAdr(a6),d2
- move.w d3,d7
- sub.w d2,d7
- subq.w #1,d7
- bsr copy_loop
-
- move.l BuffBegAdr(a6),(a6)
- move.l (a6),a4
-
- move.w d2,d7
- subq.w #1,d7
- bsr copy_loop
-
- move.l a4,(a6)
- move.l a5,(a2,d1.w)
- movem.l (sp)+,d0-d4/a4-a5
- bsr Replace2
- rts
-
- NotEndBuff_L
- move.l (a6),a4
- move.l a5,d7
- add.l d3,d7
-
- cmp.l d4,d7
- ble.s NoMakeLoop
-
- sub.l d4,d7
- move.w d7,d4
- move.w d3,d7
- sub.w d4,d7
- subq.w #1,d7
- bsr copy_loop
-
- move.w d4,d7
- subq.w #1,d7
-
- move.l 124(a3,d1.w),d4
- add.l (a3,d1.w),d4
- add.l (a0,d1.w),d4
-
- move.l (a3,d1.w),d0
- add.l (a0,d1.w),d0
- copy_loop4:
- move.l d0,a5
- copy_loop3:
- cmp.l d4,a5
- bge.s copy_loop4
- move.b (a5)+,(a4)+
- dbf d7,copy_loop3
-
- move.l a4,(a6)
- move.l a5,(a2,d1.w)
- movem.l (sp)+,d0-d4/a4-a5
- bsr Replace2
- rts
-
- NoMakeLoop
- move.w d3,d7
- subq #1,d7
- bsr copy_loop
- move.l a4,(a6)
- move.l a5,(a2,d1.w)
- movem.l (sp)+,d0-d4/a4-a5
- bsr Replace2
- rts
-
- ; --------------------------- EffectCommands ---------------------------
-
- EffectCommandsA2:
- ; effects 9xx, bxx, cxx, dxx, fxx chan A
-
- move.w d2,d7
- beq EffComA2exit
- lsr.w #8,d7
- clr.b channelenable
- move.w d2,d3
-
- lea SamoffsetA(a6),a5
- cmp.b #9,d7
- beq SampleOffset
-
- cmp.b #$b,d7
- beq SongRepeat
-
- lea VolA(a6),a5
- cmp.b #$c,d7
- beq SetVolume
-
- lea Hex(pc),a5
- cmp.b #$d,d7
- beq PattBreak
-
- cmp.b #$f,d7
- beq SetTempo
-
- ; effects E0x, E1x, E2x, E6x, E8x, EAx, EBx EEx chan A
-
- cmp.w #$e00,d3
- beq.w OffFilter
-
- cmp.w #$e01,d3
- beq.w OnFilter
-
- cmp.w #$e50,d3
- beq.w OffChannelA
-
- cmp.w #$e51,d3
- beq.w OnChannelA
-
- move.w d2,d7
- lsr.w #4,d7
- move.w d2,d3
-
- cmp.b #$e1,d7
- beq.w FineSlideUp
-
- cmp.b #$e2,d7
- beq.w FineSlideDown
-
- lea loopsdataschanA(a6),a5
- cmp.b #$e6,d7
- beq.w Loops
-
- lea SamOffsetA(a6),a5
- cmp.b #$e8,d7
- beq offsets
-
- lea VolA(a6),a5
- cmp.b #$ea,d7
- beq FineVolUp
-
- cmp.b #$eb,d7
- beq FineVolDown
-
- cmp.b #$ee,d7
- beq Pause
- EffComA2exit
- rts
-
- EffectCommandsB2:
- ; effects 9xx, bxx, cxx, dxx, fxx chan B
-
- move.w d6,d7
- beq EffComB2exit
- lsr.w #8,d7
- move.b #1,channelenable
- move.w d6,d3
-
- lea SamoffsetB(a6),a5
- cmp.b #9,d7
- beq SampleOffset
-
- cmp.b #$b,d7
- beq SongRepeat
-
- lea VolB(a6),a5
- cmp.b #$c,d7
- beq SetVolume
-
- lea Hex(pc),a5
- cmp.b #$d,d7
- beq PattBreak
-
- cmp.b #$f,d7
- beq SetTempo
-
- ; effects E0x, E1x, E2x, E6x, E8x, EAx, EBx EEx chan B
-
- cmp.w #$e00,d3
- beq.w OffFilter
-
- cmp.w #$e01,d3
- beq.w OnFilter
-
- cmp.w #$e50,d3
- beq.w OffChannelB
-
- cmp.w #$e51,d3
- beq.w OnChannelB
-
- move.w d6,d7
- lsr.w #4,d7
- move.w d6,d3
-
- cmp.b #$e1,d7
- beq.w FineSlideUp
-
- cmp.b #$e2,d7
- beq.w FineSlideDown
-
- lea loopsdataschanB(a6),a5
- cmp.b #$e6,d7
- beq.w Loops
-
- lea SamOffsetB(a6),a5
- cmp.b #$e8,d7
- beq offsets
-
- lea VolB(a6),a5
- cmp.b #$ea,d7
- beq FineVolUp
-
- cmp.b #$eb,d7
- beq FineVolDown
-
- cmp.b #$ee,d7
- beq Pause
- EffComB2exit
- rts
-
-
-
-
- EffectCommandsA:
- ; effects 1xx, 2xx, 3xx, 4xx, 5xx, 6xx, axx, chan A
- move.w d2,d7
- beq EffComAexit
- lsr.w #8,d7
- clr.b channelenable
- move.w d2,d3
-
- cmp.b #1,d7
- beq.w PortUp
-
- cmp.b #2,d7
- beq.w PortDown
-
- lea GlissandoDatasA(a6),a5
- cmp.b #3,d7
- beq.w Glissando
-
- lea VibratoDatasA(a6),a5
- cmp.b #4,d7
- beq.w Vibrato
-
- cmp.b #5,d7
- beq.w SlideVolGliss
-
- cmp.b #6,d7
- beq.w SlideVolVib
-
- lea VolA(a6),a5
- cmp.b #$a,d7
- beq SlideVolume
-
- ; effects E9x, ECx chan A
-
- move.w d2,d7
- lsr.w #4,d7
- move.w d2,d3
-
- lea RetraceCntA(a6),a5
- cmp.b #$e9,d7
- beq.w Retrace
-
- lea VolA(a6),a5
- cmp.b #$ec,d7
- beq CutSample
- EffComAexit
- rts
-
-
- EffectCommandsB:
- ; effects 1xx, 2xx, 3xx, 4xx, 5xx, 6xx, axx, chan B
- move.w d6,d7
- beq EffComBexit
- lsr.w #8,d7
- move.b #1,channelenable
- move.w d6,d3
-
- cmp.b #1,d7
- beq.w PortUp
-
- cmp.b #2,d7
- beq.w PortDown
-
- lea GlissandoDatasB(a6),a5
- cmp.b #3,d7
- beq.w Glissando
-
- lea VibratoDatasB(a6),a5
- cmp.b #4,d7
- beq.w Vibrato
-
- cmp.b #5,d7
- beq.w SlideVolGliss
-
- cmp.b #6,d7
- beq.w SlideVolVib
-
- lea VolB(a6),a5
- cmp.b #$a,d7
- beq SlideVolume
-
- ; effects E9x, ECx chan B
-
- move.w d6,d7
- lsr.w #4,d7
- move.w d6,d3
-
- lea RetraceCntB(a6),a5
- cmp.b #$e9,d7
- beq.w Retrace
-
- lea VolB(a6),a5
- cmp.b #$ec,d7
- beq CutSample
- EffComBexit
- rts
-
-
- channelenable:
- dc.w 0
-
- ;------------------------------ effects -------------------------------------
-
- ;looppattpos (a5)
- ;loopsongpos 1(a5)
- ;loophowmany 2(a5)
-
- loops:
- cmp.w #$e60,d3
- bne.s no_loop
- tst.b 2(a5)
- bne.s loops_done
- move.b pattpos(pc),(a5)
- subq.b #1,(a5)
- move.b songpos(pc),1(a5)
- bra.s loops_done
- no_loop
- tst.b 2(a5)
- beq.s storehowmany
- subq.b #1,2(a5)
- bne.s no_done
- clr.b (a5)
- clr.b 1(a5)
- clr.b 2(a5)
- bra.s loops_done
- no_done
- move.b (a5),pattpos
- move.b 1(a5),songpos
- bra.s loops_done
- storehowmany
- and.b #$0f,d3
- move.b d3,2(a5)
- move.b (a5),pattpos
- move.b 1(a5),songpos
- loops_done
- rts
-
- Pause:
- tst.b PauseEn
- bne.s no_pause
-
- moveq #0,d7
- move.b d3,d7
- and.b #$0f,d7
- beq.s No_pause
- moveq #0,d3
- move.b Temp(pc),d3
- mulu d3,d7
- addq.w #1,d7
- move.w d7,PauseVBL
- no_pause
- rts
-
- SongRepeat:
- move.b #-1,pattpos
- moveq #0,d7
- move.b d3,d7
- cmp.w #$7f,d7
- blt.s songrep_ok
- move.b #$7f,d7
- songrep_ok
- move.b d7,songpos
- rts
-
- PattBreak:
- moveq #0,d7
- move.b d3,d7
- cmp.w #$63,d7
- blt.s patt_ok
- move.b #$63,d7
- patt_ok
- cmp.b #-1,pattpos
- beq.s NoAddSP
- addq.b #1,songpos
- NoAddSP
- move.b (a5,d7.w),d7
- move.b d7,pattpos
- subq.b #1,pattpos
- rts
-
- SampleOffset:
- moveq #0,d7
- move.b (a5),d7
- lsl.w #8,d7
- lsl.l #8,d7
- and.w #$00ff,d3
- lsl.w #8,d3
- add.w d3,d7
- tst.b channelenable
- bne.s SamOffsChanB
- add.l d7,(a2,d1.w)
- rts
- SamOffsChanB
- add.l d7,124(a2,d5.w)
- rts
-
-
- offsets:
- move.b d3,d7
- and.b #$0f,d7
- move.b d7,(a5)
- rts
-
- SetTempo:
- moveq #0,d7
- move.b d3,d7
- cmp.w #$1f,d7
- bgt.s old_temp
- move.b d3,temp
- move.b d3,count
- addq.b #1,count
- old_temp
- rts
-
- OffChannelA:
- bset #0,OnOffChanA(a6)
- rts
- OnChannelA:
- bclr #0,OnOffChanA(a6)
- rts
- OffChannelB:
- bset #0,OnOffChanB(a6)
- rts
- OnChannelB:
- bclr #0,OnOffChanB(a6)
- rts
-
- OffFilter:
- bclr #1,$bfe001
- rts
- OnFilter:
- bset #1,$bfe001
- rts
-
-
-
- Retrace:
- cmp.b #1,count
- bne.s retrno_2
- clr.b (a5)
- retrno_2
- moveq #0,d7
- move.b d3,d7
- and.b #$0f,d7
- subq.b #1,d7
- cmp.b (a5),d7
- bne.s retrno_1
-
- tst.b channelenable
- beq.s retr_chan_a
- move.l (a0,d5.w),124(a2,d5.w) ; adres sampla
- bra.s retr_chan_b
- retr_chan_a
- move.l (a0,d1.w),(a2,d1.w) ; adres sampla
- retr_chan_b
- clr.b (a5)
- rts
- retrno_1
- addq.b #1,(a5)
- no_retrace_1
- rts
-
- cutsample:
- moveq #0,d7
- move.b d3,d7
- and.b #$0f,d7
- cmp.b count(pc),d7
- bne.s no_cut_sam
- clr.b (a5)
- no_cut_sam:
- rts
-
- ; ------------- portamento up -------------
-
- PortUp:
- moveq #0,d7
- move.b d3,d7
-
- tst.b channelenable
- bne.s PortUp_chan_b
-
- PortUp_chan_a
- tst.b d7
- bne.s NoOldPortUpA
- move.b PortUpOldValA(a6),d7
- NoOldPortUpA
- move.b d7,PortUpOldValA(a6)
- sub.w d7,d0
- cmp.w #113,d0
- bge.s PortUpOkA
- move.w #113,d0
- PortUpOkA
- rts
-
- PortUp_chan_b
- tst.b d7
- bne.s NoOldPortUpB
- move.b PortUpOldValB(a6),d7
- NoOldPortUpB
- move.b d7,PortUpOldValB(a6)
- sub.w d7,d4
- cmp.w #113,d4
- bge.s PortUpOkB
- move.w #113,d4
- PortUpOkB
- rts
- NoPortUp:
- rts
-
- ; ------------- portamento down -------------
- PortDown:
- moveq #0,d7
- move.b d3,d7
-
- tst.b channelenable
- bne.s PortDown_chan_b
- PortDown_chan_a
- tst.b d7
- bne.s NoOldPortDownA
- move.b PortDownOldValA(a6),d7
- NoOldPortDownA
- move.b d7,PortDownOldValA(a6)
- add.w d7,d0
- cmp.w #856,d0
- ble.s PortDownOkA
- move.w #856,d0
- PortDownOkA
- rts
-
- PortDown_chan_b
- tst.b d7
- bne.s NoOldPortDownB
- move.b PortDownOldValB(a6),d7
- NoOldPortDownB
- move.b d7,PortDownOldValB(a6)
- add.w d7,d4
- cmp.w #856,d4
- ble.s PortDownOkB
- move.w #856,d4
- PortDownOkB
- rts
- noPortDown:
- rts
-
- ; --------------- set volume -------------
- SetVolume:
- move.b d3,(a5)
- rts
-
- ; --------------- slide volume up -------------
- SlideVolume:
- tst.b d3
- bne.s NoOldSlideVol
- move.b 2(a5),d3 ; Old SlideVolVolue
- NoOldSlideVol
- move.b d3,2(a5)
-
- moveq #0,d7
- move.b d3,d7
- cmp.w #$10,d7
- blt.s Voldown
- lsr.b #4,d7
- add.b d7,(a5)
- cmp.b #64,(a5)
- blt.s Voldone
- move.b #64,(a5)
- rts
- Voldown
- sub.b d3,(a5)
- tst.b (a5)
- bgt.s Voldone
- clr.b (a5)
- Voldone:rts
-
-
- ; --------------- fine slide down -------------
- FineSlideDown:
- move.w d3,d7
- and.w #$000f,d7
-
- tst.b channelenable
- bne.s FineSlideDownB
-
- add.w d7,d0
- cmp.w #856,d0
- ble.s FineSlideDownOkA
- move.w #856,d0
- FineSlideDownOkA
- moveq #0,d2
- rts
-
- FineSlideDownB
- add.w d7,d4
- cmp.w #856,d4
- ble.s FineSlideDownOkB
- move.w #856,d4
- FineSlideDownOkB
- moveq #0,d6
- rts
-
- ; --------------- fine slide up -------------
- FineSlideUp:
- move.w d3,d7
- and.w #$000f,d7
-
- tst.b channelenable
- bne.s FineSlideUpB
-
- sub.w d7,d0
- cmp.w #113,d0
- bge.s FineSlideUpOkA
- move.w #113,d0
- FineSlideUpOkA
- moveq #0,d2
- rts
-
- FineSlideUpB
- sub.w d7,d4
- cmp.w #113,d4
- bge.s FineSlideUpOkB
- move.w #113,d4
- FineSlideUpOkB
- moveq #0,d6
- rts
-
- ; --------------- fine volume up -------------
- FineVolUp:
- move.w d3,d7
- and.b #$0f,d7
- add.b d7,(a5)
- cmp.b #64,(a5)
- blt.s FVUOK
- move.b #64,(a5)
- FVUOK
- tst.b channelenable
- bne.s FVUClrVolB
- moveq #0,d2
- rts
- FVUClrVolB
- moveq #0,d6
- rts
-
-
- ; --------------- fine volume down -------------
- FineVolDown:
- move.w d3,d7
- and.b #$0f,d7
- sub.b d7,(a5)
- tst.b (a5)
- bge.s FVDOK
- clr.b (a5)
- FVDOK
- tst.b channelenable
- bne.s FVDClrVolB
- moveq #0,d2
- rts
- FVDClrVolB
- moveq #0,d6
- NoFVD rts
-
-
- ; ------------- glissando -------------
-
- ;GlissOldValue: (a5)
- ;GlissEnable: 1(a5)
- ;GlissOldPeriod: 2(a5)
- ;GlissNewPeriod: 4(a5)
-
- Glissando:
- move.w d3,d7
- tst.b d3
- bne.s NoOLDgliss
- move.b (a5),d3
- NoOLDgliss
-
- cmp.b #1,count
- bne.s NoStore
- move.b d3,(a5)
- NoStore
-
- tst.w 2(a5)
- beq.w GlissRTS
-
- tst.b channelenable
- bne.s GlissOK1B
-
- GlissOK1A:
- tst.w 4(a5)
- bne.s GlissOk2
- move.w d0,d7
- move.w d0,4(a5)
- move.w 2(a5),d0
- clr.b 1(a5)
- cmp.w d0,d7
- beq.s ClrNP
- bge.w GlissRTS
- move.b #1,1(a5)
- rts
-
- GlissOK1B:
- tst.w 4(a5)
- bne.s GlissOk2
- move.w d4,d7
- move.w d4,4(a5)
- move.w 2(a5),d4
- clr.b 1(a5)
- cmp.w d4,d7
- beq.s ClrNP
- bge.s GlissRTS
- move.b #1,1(a5)
- rts
-
- ClrNP: clr.w 4(a5)
- rts
-
- GlissOk2:
- move.w d3,d7
- and.w #$0ff,d7
- tst.w 4(a5)
- beq.s Glissrts
- tst.b 1(a5)
- bne.s Glisssub
- add.w d7,2(a5)
- move.w 4(a5),d7
- cmp.w 2(a5),d7
- bgt.s GlissOK3
- move.w 4(a5),2(a5)
- clr.w 4(a5)
- GlissOK3:
- tst.b channelenable
- bne.s GlissChanB
- GlissChanA
- move.w 2(a5),d0
- rts
- GlissChanB
- move.w 2(a5),d4
- rts
-
- Glisssub:
- sub.w d7,2(a5)
- move.w 4(a5),d7
- cmp.w 2(a5),d7
- blt.s GlissOK3
- move.w 4(a5),2(a5)
- clr.w 4(a5)
- bra.s GlissOK3
-
- Glissrts:
- rts
-
- SlideVolGliss:
- and.w #$00ff,d3
- add.w #$a00,d3
- tst.b channelenable
- bne.s SlideChanB
- lea VolA(a6),a5
- bra.s DoSlideChan
- SlideChanB
- lea VolB(a6),a5
- DoSlideChan
- bsr SlideVolume
-
- move.w #$0300,d3
- tst.b channelenable
- bne.s GlissBChan
- lea GlissandoDatasA(a6),a5
- bra.s DoGlissChan
- GlissBChan
- lea GlissandoDatasB(a6),a5
- DoGlissChan
- bra Glissando
-
-
-
-
- SlideVolVib:
- and.w #$00ff,d3
- add.w #$a00,d3
- tst.b channelenable
- bne.s SlideChanBV
- lea VolA(a6),a5
- bra.s DoSlideChanV
- SlideChanBV
- lea VolB(a6),a5
- DoSlideChanV
- bsr SlideVolume
-
- move.w #$0400,d3
- tst.b channelenable
- bne.s VibBChan
- lea VibratoDatasA(a6),a5
- bra.s DoVibChan
- VibBChan
- lea VibratoDatasB(a6),a5
- DoVibChan
- bra Vibrato
-
-
- ;VibPeriod (a5)
- ;VibValue 2(a5)
- ;ViboldValue 3(a5)
-
- Vibrato:
- movem.l d2/d5,-(sp)
-
- move.w d4,d2
- tst.b channelenable
- bne.s VibCHANB1
- move.w d0,d2
- VibCHANB1
- bsr VibratoMain
- tst.b channelenable
- bne.s VibCHANB2
- move.w d2,d0
- bra.s VibMainDone
- VibCHANB2
- move.w d2,d4
- VibMainDone
- movem.l (sp)+,d2/d5
- rts
-
- VibratoMain:
- move.b d3,d5
- and.b #$0f,d5
- bne.s NoNew1
- move.b 3(a5),d5
- and.b #$0f,d5
- add.b d5,d3
- NoNew1
- move.b d3,d5
- and.b #$f0,d5
- bne.s NoNew2
- move.b 3(a5),d5
- and.b #$f0,d5
- add.b d5,d3
- NoNew2
- move.w d3,-(sp)
-
- move.b d3,3(a5)
-
- tst.w (a5)
- bne.s NoNewPeriod
- move.w d2,(a5)
- NoNewPeriod
-
- move.b d3,d7
- move.b 2(a5),d3
- lsr.w #2,d3
- and.w #$1f,d3
- moveq #0,d5
- move.b VibSin(pc,d3.w),d5
- mulu #4,d5
- divu #6,d5
-
- move.b d7,d3
- and.w #$f,d3
- mulu d3,d5
- lsr.w #7,d5
-
- tst.b 2(a5)
- bmi.s VibSub
- add.w d5,d2
- bra.s VibNext
- VibSub:
- sub.w d5,d2
- VibNext:
- move.w d2,d5
- move.b d7,d5
- lsr.w #2,d5
- and.w #$3c,d5
- add.b d5,2(a5)
- move.w (sp)+,d3
-
- move.b temp(pc),d7
- subq #2,d7
- cmp.b count(pc),d7
- bne.s NoVibrato
-
- move.w (a5),d2
- clr.w (a5)
- NoVibrato
- rts
- VibSin:
- 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
-
-
- FindPeriod:
- move.w d1,d3
- move.w d2,d4
- sub.w d0,d1
- sub.w d0,d2
-
- tst.w d1
- bge.s periodOK1
- muls #-1,d1
- periodOK1
- tst.w d1
- bge.s periodOK2
- muls #-1,d2
- periodOK2
- cmp.w d1,d2
- blt.s periodOK3
- move.w d3,d7
- rts
- periodOK3
- move.w d4,d7
- periodOK4
- rts
-
- OriginalPeriodA: dc.w 0
- OriginalPeriodB: dc.w 0
-
- mixing:
- move.w d0,OriginalPeriodA
- move.w d4,OriginalPeriodB
-
- movem.l d0-d4/a3,-(sp)
- lea periods(pc),a3
- Seek1 cmp.w (a3)+,d0
- blt.s Seek1
- move.w -2(a3),d1
- move.w -4(a3),d2
- bsr FindPeriod
- movem.l (sp)+,d0-d4/a3
- move.w d7,d0
-
- movem.l d0-d4/a3,-(sp)
- lea periods(pc),a3
- Seek2 cmp.w (a3)+,d4
- blt.s Seek2
- move.w d4,d0
- move.w -2(a3),d1
- move.w -4(a3),d2
- bsr FindPeriod
- movem.l (sp)+,d0-d4/a3
- move.w d7,d4
-
- move.l #35800,d3
- divu d0,d3
- and.l #$0000ffff,d3
- add.w d3,d3
-
- movem.l d0-d6/a0-a4,-(sp)
-
- move.l (a2,d1.w),a0
-
- move.l #35800,d0
- divu d4,d0
- and.l #$0000ffff,d0
- add.w d0,d0
- move.l 124(a2,d5.w),a1
-
- move.w d0,d4
-
- cmp.w d3,d4
- ble noreplace
-
- add.l d0,124(a2,d5.w)
- exg d1,d5
- lea -124(a2),a2
-
- exg d3,d4
- exg d2,d6
- exg a0,a1
- move.w d3,leng
- move.b VolA(a6),d7
- move.b VolB(a6),VolA(a6)
- move.b d7,VolB(a6)
-
- bsr mix
- lea 124(a2),a2
-
- movem.l (sp)+,d0-d6/a0-a4
-
- move.w leng(pc),d3
- exg d0,d4
- bsr play
- exg d0,d4
- move.b VolA(a6),d7
- move.b VolB(a6),VolA(a6)
- move.b d7,VolB(a6)
-
- tst.b ChangeADR(a6)
- beq.s nochadr1
- move.l SamRep2(a6),124(a2,d5.w)
- nochadr1:
- move.w OriginalPeriodA(pc),d0
- move.w OriginalPeriodB(pc),d4
-
- cmp.b #1,MixDon(a6)
- beq.s offsam1
- rts
-
- offsam1:clr.l (a2,d1.w)
- clr.l 124(a2,d5.w)
- moveq #0,d4
- moveq #0,d5
- moveq #0,d6
- moveq #0,d0
- moveq #0,d1
- moveq #0,d2
- clr.b MixDon(a6)
- rts
-
- noreplace
- add.l d3,(a2,d1.w)
- bsr mix
-
- movem.l (sp)+,d0-d6/a0-a4
-
- bsr play
-
- tst.b ChangeADR(a6)
- beq.s nochadr2
- move.l SamRep2(a6),(a2,d1.w)
- nochadr2:
-
- move.w OriginalPeriodA(pc),d0
- move.w OriginalPeriodB(pc),d4
-
- cmp.b #1,MixDon(a6)
- beq.s offsam1
- rts
-
-
- ; --------------- robot -------------
-
- MakeBuff_ROBOT:
- move.b #1,MBRpointer(a6)
-
- tst.l 124(a3,d1.w)
- bne sampleloop_R
-
- movem.l d0-d1/a4-a5,-(sp)
- move.l BuffMixADR(a6),a4
- move.l 124(a0,d1.w),d0
- add.l (a0,d1.w),d0
- move.w d3,d7
- subq #1,d7
- move.l (a2,d1.w),a5
- cmp.l d0,a5
- bgt realsampleend
- move.l a5,d1
- copy_loop_R:
- cmp.l d0,a5
- bgt sampleend
- move.b (a5)+,(a4)+
- dbf d7,copy_loop_R
- movem.l (sp)+,d0-d1/a4-a5
- add.l d3,(a2,d1.w)
- rts
-
- sampleloop_R:
- movem.l d0-d4/a4-a5,-(sp)
- move.l 124(a3,d1.w),d4
- add.l (a3,d1.w),d4
- add.l (a0,d1.w),d4
-
- move.w d3,d7
- subq #1,d7
- move.l (a2,d1.w),a5
- move.l BuffMixADR(a6),a4
- copy_loop2_R:
- cmp.l d4,a5
- bge.s makeloop_R
- move.b (a5)+,(a4)+
- dbf d7,copy_loop2_R
- movem.l (sp)+,d0-d4/a4-a5
- add.l d3,(a2,d1.w)
- rts
-
- makeloop_R:
- move.l (a3,d1.w),d0
- add.l (a0,d1.w),d0
- copy_loop4_R:
- move.l d0,a5
- copy_loop3_R:
- cmp.l d4,a5
- bge.s copy_loop4_R
- move.b (a5)+,(a4)+
- dbf d7,copy_loop3_R
- move.l a5,(a2,d1.w)
- movem.l (sp)+,d0-d4/a4-a5
- rts
-
- RobotEffect:
- tst.b RobotEnable(a6)
- bne.s NoROffCH
- move.b #1,Offenable(a6)
- NoROffCH
- move.b #1,RobotEnable(a6)
- bsr MakeBuff_robot
- move.w d3,MainDTALEN(a6)
- bsr RobotMain
- bsr Replace_R
- rts
-
- RobotMain:
- tst.b d2
- bne.s NoOldRobot
- move.b RobotOLDVal(a6),d2
- NoOldRobot
- move.b d2,RobotOLDVal(a6)
-
- moveq #0,d7
- move.b d2,d7
- add.w #80,d7
-
- move.w d3,d4
- lsr.w #6,d4
- lsr.w #2,d7
- mulu d7,d4
-
- cmp.w d4,d3
- ble.s CLRrobot
- sub.w d4,d3
- addq #1,d3
- bra.s NoRobot
- CLRrobot:
- moveq #2,d3
- NoRobot:
- moveq #0,d4
- rts
-
-
- play: move.w d0,MainPeriod(a6)
- move.b #$40,MainVol(a6)
- rts
-
- db_end:
- move.w #$f,$dff096
- clr.w $dff0a8
- clr.w $dff0b8
- clr.w $dff0c8
- clr.w $dff0d8
- rts
-
- mix:
- move.b #1,MBRpointer(a6)
-
- cmp.b #1,OffEnable(a6)
- bne.w NoSet3OnEn
-
- cmp.w d3,d4
- beq.s NoSet2OnEn
-
- cmp.w MainDTALEN(a6),d3
- beq.s NoSet3OnEn
- move.b #1,OffEnable(a6)
- bra.s NoSet2OnEn
- NoSet3OnEn
-
- cmp.b #2,OffEnable(a6) ; jesli jedn. dwa mix sampl. to wait
- bne.w NoSet1OnEn
- move.b #1,OffEnable(a6)
- bra.s NoSet2OnEn
- NoSet1OnEn
- clr.b OffEnable(a6)
- tst.b PlayPointer(a6)
- beq.s NoSet2OnEn
- clr.b PlayPointer(a6)
- move.b #1,OffEnable(a6)
- NoSet2OnEn
-
- move.w d3,MainDTALEN(a6)
-
- movem.l d5/a2,-(sp)
- lea sample_starts(pc),a4
- lea (a3),a5 ; smaple repeats
-
- ******
- lea mix_tab1,a3
- move.l BuffMixADR(a6),a2
-
- move.w d3,d0
- mulu #18,d0
- add.l d0,a3
- move.l (a3,d4.w),a3
-
- move.w d4,d2
- move.w d3,d7
- subq #1,d7
- ******
-
- tst.l 124(a5,d1.w)
- beq.s nosamloop2
- move.l (a5,d1.w),d4
- add.l 124(a5,d1.w),d4
- add.l (a4,d1.w),d4
-
- tst.l 124(a5,d5.w)
- bne.s doubleloop
- bra samloopmix2
- doubleloop
- move.l (a5,d5.w),d6
- add.l 124(a5,d5.w),d6
- add.l (a4,d5.w),d6
- bra samloopmix3
- nosamloop2:
-
- move.l 124(a4,d1.w),d4
- add.l (a4,d1.w),d4
-
- tst.l 124(a5,d5.w)
- beq.s nosamloop1
- move.l (a5,d5.w),d6
- add.l 124(a5,d5.w),d6
- add.l (a4,d5.w),d6
- bra samloopmix1
- nosamloop1:
-
- move.l 124(a4,d5.w),d6
- add.l (a4,d5.w),d6
- move.l d6,d5
-
- ; -------------- mixing norm. sample + norm. sample
-
- moveq #0,d0
- moveq #0,d1
- move.b VolA(a6),d0
- move.b VolB(a6),d1
- lsl.w #8,d0
- lsl.w #8,d1
- lea voltab,a4
- lea voltab,a5
- add.l d0,a4
- add.l d1,a5
-
- cmp.l d4,a0
- bge.w sammixloop1_11
-
- cmp.l d5,a1
- bge.w sammixloop1_111
-
- move.l a0,d0
- add.l d3,d0
- cmp.l d4,d0
- bge.w sammixloop1_1111
-
- move.l a1,d1
- add.l d2,d1
- cmp.l d5,d1
- bge.w sammixloop1_1111
-
- sammixloop1_1:
- moveq #0,d0
- moveq #0,d1
- moveq #0,d2
- moveq #0,d6
- mixloop1_1:
-
- move.b (a0)+,d1
- move.b (a4,d1.w),d1
-
- tst.b (a3)+
- bne.s newdata1_1
-
- add.b d2,d1
- move.b d1,(a2)+
-
- dbf d7,mixloop1_1
- bra mixdone
-
- newdata1_1
- move.b (a1)+,d2
- move.b (a5,d2.w),d2
-
- add.b d2,d1
- move.b d1,(a2)+
-
- dbf d7,mixloop1_1
- bra mixdone
-
- ; test d5,a1
-
- sammixloop1_11:
- moveq #0,d0
- moveq #0,d1
- moveq #0,d2
- moveq #0,d6
- mixloop1_11:
- tst.b (a3)+
- bne.s newdata1_11
-
- move.b d2,(a2)+
-
- dbf d7,mixloop1_11
- bra mixdone
-
- newdata1_11
- cmp.l a1,d5
- bgt.s mixgoon2_11
-
- moveq #0,d2
- move.b d2,(a2)+
-
- dbf d7,mixloop1_11
- bra mixdone
- mixgoon2_11
- move.b (a1)+,d2
- move.b (a5,d2.w),d2
- move.b d2,(a2)+
-
- dbf d7,mixloop1_11
- bra mixdone
-
- ; test d4,a0
-
- sammixloop1_111:
- moveq #0,d0
- moveq #0,d1
- moveq #0,d2
- moveq #0,d6
-
- mixloop1_111:
- move.b (a0)+,d1
- move.b (a4,d1.w),d1
-
- cmp.l a0,d4
- bgt.s mixgoon1_111
-
- clr.b (a2)+
-
- dbf d7,mixloop1_111
- bra mixdone
-
- mixgoon1_111
- move.b d1,(a2)+
-
- dbf d7,mixloop1_111
- bra mixdone
-
- ; test d4,a0, d5,a1
-
- sammixloop1_1111:
- moveq #0,d0
- moveq #0,d1
- moveq #0,d2
- moveq #0,d6
- mixloop1_1111:
-
- move.b (a0)+,d1
- move.b (a4,d1.w),d1
-
- cmp.l a0,d4
- bgt.s mixgoon1_1111
-
- moveq #0,d1
- mixgoon1_1111
-
- tst.b (a3)+
- bne.s newdata1_1111
-
- add.b d2,d1
- move.b d1,(a2)+
-
- dbf d7,mixloop1_1111
- bra mixdone
-
- newdata1_1111
- move.b (a1)+,d2
- move.b (a5,d2.w),d2
-
- cmp.l a1,d5
- bgt.s mixgoon2_1111
- moveq #0,d2
-
- move.b d1,(a2)+
-
- dbf d7,mixloop1_1111
- bra mixdone
- mixgoon2_1111
-
- add.b d2,d1
- move.b d1,(a2)+
-
- dbf d7,mixloop1_1111
- bra mixdone
-
- ; -------------- mixing norm. sample + loop. sample
-
- samloopmix1:
- move.l (a5,d5.w),d0
- add.l (a4,d5.w),d0
- move.l d0,SamRep1(a6)
- move.l d6,d5
-
- moveq #0,d0
- moveq #0,d1
- move.b VolA(a6),d0
- move.b VolB(a6),d1
- lsl.w #8,d0
- lsl.w #8,d1
- lea voltab,a4
- lea voltab,a5
- add.l d0,a4
- add.l d1,a5
-
- cmp.l a0,d4
- blt.w sammixloop1_22
-
- move.l a0,d0
- add.l d3,d0
- cmp.l d4,d0
- bge.w sammixloop1_2
-
- move.l a1,d1
- add.l d2,d1
- cmp.l d5,d1
- bge.w sammixloop1_2
-
- bra sammixloop1_1
-
- sammixloop1_2:
- moveq #0,d0
- moveq #0,d1
- moveq #0,d2
- moveq #0,d6
-
- mixloop1_2:
- move.b (a0)+,d1
- move.b (a4,d1.w),d1
-
- cmp.l a0,d4
- bgt.s mixgoon1_2
-
- moveq #0,d1
- mixgoon1_2
-
- tst.b (a3)+
- bne.s newdata1_2
-
- add.b d2,d1
- move.b d1,(a2)+
-
- dbf d7,mixloop1_2
- bra mixdone
-
-
- newdata1_2
- move.b (a1)+,d2
- move.b (a5,d2.w),d2
-
- cmp.l a1,d5
- bgt.s mixgoon2_2
-
- move.l SamRep1(a6),a1 ; samrep1
- mixgoon2_2
-
- add.b d2,d1
- move.b d1,(a2)+
-
- dbf d7,mixloop1_2
- bra mixdone
-
-
-
- sammixloop1_22:
- moveq #0,d0
- moveq #0,d1
- moveq #0,d2
- moveq #0,d6
- mixloop1_22:
- tst.b (a3)+
- bne.s newdata1_22
-
- move.b d2,(a2)+
-
- dbf d7,mixloop1_22
- bra mixdone
-
- newdata1_22
- move.b (a1)+,d2
- move.b (a5,d2.w),d2
-
- cmp.l a1,d5
- bgt.s mixgoon2_22
- move.l SamRep1(a6),a1 ; samrep1
- mixgoon2_22
- move.b d2,(a2)+
-
- dbf d7,mixloop1_22
- bra mixdone
-
- ; -------------- mixing loop. sample + norm. sample
-
- samloopmix2:
- move.l 124(a4,d5.w),d6
- add.l (a4,d5.w),d6
- move.l d6,d5
-
- move.l (a5,d1.w),d0
- add.l (a4,d1.w),d0
- move.l d0,SamRep2(a6)
-
- moveq #0,d0
- moveq #0,d1
- move.b VolA(a6),d0
- move.b VolB(a6),d1
- lsl.w #8,d0
- lsl.w #8,d1
- lea voltab,a4
- lea voltab,a5
- add.l d0,a4
- add.l d1,a5
-
- cmp.l a1,d5
- blt.w sammixloop1_33
-
- move.l a0,d0
- add.l d3,d0
- cmp.l d4,d0
- bge.w sammixloop1_3
-
- move.l a1,d1
- add.l d2,d1
- cmp.l d5,d1
- bge.w sammixloop1_3
-
- bra sammixloop1_1
- sammixloop1_3
- moveq #0,d0
- moveq #0,d1
- moveq #0,d2
- moveq #0,d6
-
- mixloop1_3:
- move.b (a0)+,d1
- move.b (a4,d1.w),d1
-
- cmp.l a0,d4
- bgt.s mixgoon1_3
-
- move.l SamRep2(a6),a0
- move.b #1,ChangeADR(a6)
- mixgoon1_3
-
- tst.b (a3)+
- bne.s newdata1_3
-
- add.b d2,d1
- move.b d1,(a2)+
-
- dbf d7,mixloop1_3
- bra mixdone
-
-
- newdata1_3
- move.b (a1)+,d2
- move.b (a5,d2.w),d2
-
- cmp.l a1,d5
- bgt.s mixgoon2_3
-
- moveq #0,d2
-
- move.b d1,(a2)+
-
- dbf d7,mixloop1_3
- bra mixdone
-
- mixgoon2_3
-
- add.b d2,d1
- move.b d1,(a2)+
-
- dbf d7,mixloop1_3
- bra mixdone
-
-
- sammixloop1_33
- moveq #0,d0
- moveq #0,d1
- moveq #0,d2
- moveq #0,d6
- mixloop1_33:
- move.b (a0)+,d1
-
- cmp.l a0,d4
- bgt.s mixgoon1_33
-
- move.l SamRep2(a6),a0
- move.b #1,ChangeADR(a6)
- mixgoon1_33
- move.b (a4,d1.w),(a2)+
-
- dbf d7,mixloop1_33
- bra mixdone
-
- ; -------------- mixing loop. sample + loop. sample
-
- samloopmix3:
- move.l (a5,d5.w),d0
- add.l (a4,d5.w),d0
- move.l d0,SamRep1(a6)
-
- move.l (a5,d1.w),d0
- add.l (a4,d1.w),d0
- move.l d0,SamRep2(a6)
-
- move.l d6,d5
-
- moveq #0,d0
- moveq #0,d1
- move.b VolA(a6),d0
- move.b VolB(a6),d1
- lsl.w #8,d0
- lsl.w #8,d1
- lea voltab,a4
- lea voltab,a5
- add.l d0,a4
- add.l d1,a5
-
- moveq #0,d0
- moveq #0,d1
- moveq #0,d2
- moveq #0,d6
-
- mixloop1_4:
- move.b (a0)+,d1
- move.b (a4,d1.w),d1
-
- cmp.l a0,d4
- bgt.s mixgoon1_4
- move.l SamRep2(a6),a0
- move.b #1,ChangeADR(a6)
- mixgoon1_4
-
- tst.b (a3)+
- bne.s newdata1_4
-
- add.b d2,d1
- move.b d1,(a2)+
-
- dbf d7,mixloop1_4
- bra mixdone
-
- newdata1_4
- move.b (a1)+,d2
- move.b (a5,d2.w),d2
-
- cmp.l a1,d5
- bgt.s mixgoon2_4
-
- move.l SamRep1(a6),a1
- mixgoon2_4
-
- add.b d2,d1
- move.b d1,(a2)+
-
- dbf d7,mixloop1_4
- bra mixdone
-
- ; --------------------------------------------------
-
- mixdone:
- lea MixDon(a6),a4
- cmp.l a0,d4
- bge.s notyet3
- move.b #3,(a4)
- notyet3
- cmp.l a1,d5
- bge.s notyet2
- move.b #2,(a4)
- notyet2
- cmp.l a1,d5
- bge.s notyet1
- cmp.l a0,d4
- bge.s notyet1
- move.b #1,(a4)
- notyet1
- movem.l (sp)+,d5/a2
- move.l a0,SamRep2(a6)
- move.l a1,124(a2,d5.w)
- rts
-
- leng: dc.w 0
- what: dc.w 0
- hisam: dc.b 0
- offset: dc.b 0
- even
-
- ; Channel 1A&1B
- Channel1: blk.b ChanArea,0
- ; Channel 2A&2B datas
- Channel2: blk.b ChanArea,0
- ; Channel 3A&3B datas
- Channel3: blk.b ChanArea,0
- ; Channel 4A&4B datas
- Channel4: blk.b ChanArea,0
- even
- make_tab:
- lea tab(pc),a0
- lea mix_tab1,a3
- lea mix_tab2,a1
- moveq #12,d6
- moveq #1,d2
- make_loop2:
- moveq #0,d0
- moveq #0,d1
- move.w (a0)+,d0
- move.w (a0)+,d1
-
- cmp.w #-1,d0
- beq.s make_exit
-
- move.l #35800,d3
- divu d0,d3
- add.w d3,d3
- move.w d3,d0
-
- move.l #35800,d3
- divu d1,d3
- add.w d3,d3
- move.w d3,d1
-
- lea (a1),a2
- move.w d0,d7
- lsr.w #2,d7
- moveq #0,d4
- make_clr:
- move.l d4,(a2)+
- dbf d7,make_clr
-
- move.w d0,d3
- mulu #18,d3
- add.l d3,a3
- move.l a1,(a3,d1.w)
- sub.l d3,a3
-
- moveq #0,d3
- move.w d1,d7
- add.w #20,d7
- move.w d0,d5
- lsl.l d6,d0
- divu d1,d0
- make_loop:
- move.w d0,d4
- mulu d3,d4
- lsr.l d6,d4
- move.b d2,(a1,d4.w)
- addq #1,d3
- dbf d7,make_loop
-
- add.l d5,a1
- bra.s make_loop2
- make_exit
- rts
-
- make_voltab:
- lea voltab,a0
- moveq #0,d2
- move.w #128,d3
-
- moveq #64,d6
- make_voltabl2
- move.w #$ff,d7
- moveq #0,d0
- make_voltabl1
- move.b d0,d1
- ext.w d1
- muls d2,d1
- divs d3,d1
- cmp.b #63,d1
- blt.s make_volok1
- moveq #63,d1
- make_volok1
- cmp.b #-64,d1
- bgt.s make_volok2
- moveq #-64,d1
- make_volok2
- move.b d1,(a0)+
- addq #1,d0
- dbf d7,make_voltabl1
- addq #2,d2
- dbf d6,make_voltabl2
- rts
-
-
- PattAdresses:
- blk.l 129,0
- sample_starts:
- blk.l 31,0
- sample_lenghts:
- blk.l 31,0
-
- sample_pos1:
- blk.l 31,0
- blk.l 31,0
- sample_pos2:
- blk.l 31,0
- blk.l 31,0
- sample_pos3:
- blk.l 31,0
- blk.l 31,0
- sample_pos4:
- blk.l 31,0
- blk.l 31,0
- Hex:
- dc.b 0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0,10,11,12,13,14,15,16,17,18,19
- dc.b 0,0,0,0,0,0,20,21,22,23,24,25,26,27,28,29,0,0,0,0,0,0,30,31
- dc.b 32,33,34,35,36,37,38,39,0,0,0,0,0,0,40,41,42,43,44,45,46,47
- dc.b 48,49,0,0,0,0,0,0,50,51,52,53,54,55,56,57,58,59,0,0,0,0,0,0
- dc.b 60,61,62,63
- Periods:
- dc.w 856,808,762,720,678,640,604,570,538,508,480,453
- dc.w 428,404,381,360,339,320,302,285,269,254,240,226
- dc.w 214,202,190,180,170,160,151,143,135,127,120,113
- PeriodsEnd:
- dc.w 1
-
- tab:
- dc.w 113,856
- dc.w 113,808
- dc.w 113,762
- dc.w 113,720
- dc.w 113,678
- dc.w 113,640
- dc.w 113,604
- dc.w 113,570
- dc.w 113,538
- dc.w 113,508
- dc.w 113,480
- dc.w 113,453
- dc.w 113,428
- dc.w 113,404
- dc.w 113,381
- dc.w 113,360
- dc.w 113,339
- dc.w 113,320
- dc.w 113,302
- dc.w 113,285
- dc.w 113,269
- dc.w 113,254
- dc.w 113,240
- dc.w 113,226
- dc.w 113,214
- dc.w 113,202
- dc.w 113,190
- dc.w 113,180
- dc.w 113,170
- dc.w 113,160
- dc.w 113,151
- dc.w 113,143
- dc.w 113,135
- dc.w 113,127
- dc.w 113,120
- dc.w 113,113
-
- dc.w 120,856
- dc.w 120,808
- dc.w 120,762
- dc.w 120,720
- dc.w 120,678
- dc.w 120,640
- dc.w 120,604
- dc.w 120,570
- dc.w 120,538
- dc.w 120,508
- dc.w 120,480
- dc.w 120,453
- dc.w 120,428
- dc.w 120,404
- dc.w 120,381
- dc.w 120,360
- dc.w 120,339
- dc.w 120,320
- dc.w 120,302
- dc.w 120,285
- dc.w 120,269
- dc.w 120,254
- dc.w 120,240
- dc.w 120,226
- dc.w 120,214
- dc.w 120,202
- dc.w 120,190
- dc.w 120,180
- dc.w 120,170
- dc.w 120,160
- dc.w 120,151
- dc.w 120,143
- dc.w 120,135
- dc.w 120,127
- dc.w 120,120
-
- dc.w 127,856
- dc.w 127,808
- dc.w 127,762
- dc.w 127,720
- dc.w 127,678
- dc.w 127,640
- dc.w 127,604
- dc.w 127,570
- dc.w 127,538
- dc.w 127,508
- dc.w 127,480
- dc.w 127,453
- dc.w 127,428
- dc.w 127,404
- dc.w 127,381
- dc.w 127,360
- dc.w 127,339
- dc.w 127,320
- dc.w 127,302
- dc.w 127,285
- dc.w 127,269
- dc.w 127,254
- dc.w 127,240
- dc.w 127,226
- dc.w 127,214
- dc.w 127,202
- dc.w 127,190
- dc.w 127,180
- dc.w 127,170
- dc.w 127,160
- dc.w 127,151
- dc.w 127,143
- dc.w 127,135
- dc.w 127,127
-
- dc.w 135,856
- dc.w 135,808
- dc.w 135,762
- dc.w 135,720
- dc.w 135,678
- dc.w 135,640
- dc.w 135,604
- dc.w 135,570
- dc.w 135,538
- dc.w 135,508
- dc.w 135,480
- dc.w 135,453
- dc.w 135,428
- dc.w 135,404
- dc.w 135,381
- dc.w 135,360
- dc.w 135,339
- dc.w 135,320
- dc.w 135,302
- dc.w 135,285
- dc.w 135,269
- dc.w 135,254
- dc.w 135,240
- dc.w 135,226
- dc.w 135,214
- dc.w 135,202
- dc.w 135,190
- dc.w 135,180
- dc.w 135,170
- dc.w 135,160
- dc.w 135,151
- dc.w 135,143
- dc.w 135,135
-
- dc.w 143,856
- dc.w 143,808
- dc.w 143,762
- dc.w 143,720
- dc.w 143,678
- dc.w 143,640
- dc.w 143,604
- dc.w 143,570
- dc.w 143,538
- dc.w 143,508
- dc.w 143,480
- dc.w 143,453
- dc.w 143,428
- dc.w 143,404
- dc.w 143,381
- dc.w 143,360
- dc.w 143,339
- dc.w 143,320
- dc.w 143,302
- dc.w 143,285
- dc.w 143,269
- dc.w 143,254
- dc.w 143,240
- dc.w 143,226
- dc.w 143,214
- dc.w 143,202
- dc.w 143,190
- dc.w 143,180
- dc.w 143,170
- dc.w 143,160
- dc.w 143,151
- dc.w 143,143
-
- dc.w 151,856
- dc.w 151,808
- dc.w 151,762
- dc.w 151,720
- dc.w 151,678
- dc.w 151,640
- dc.w 151,604
- dc.w 151,570
- dc.w 151,538
- dc.w 151,508
- dc.w 151,480
- dc.w 151,453
- dc.w 151,428
- dc.w 151,404
- dc.w 151,381
- dc.w 151,360
- dc.w 151,339
- dc.w 151,320
- dc.w 151,302
- dc.w 151,285
- dc.w 151,269
- dc.w 151,254
- dc.w 151,240
- dc.w 151,226
- dc.w 151,214
- dc.w 151,202
- dc.w 151,190
- dc.w 151,180
- dc.w 151,170
- dc.w 151,160
- dc.w 151,151
-
- dc.w 160,856
- dc.w 160,808
- dc.w 160,762
- dc.w 160,720
- dc.w 160,678
- dc.w 160,640
- dc.w 160,604
- dc.w 160,570
- dc.w 160,538
- dc.w 160,508
- dc.w 160,480
- dc.w 160,453
- dc.w 160,428
- dc.w 160,404
- dc.w 160,381
- dc.w 160,360
- dc.w 160,339
- dc.w 160,320
- dc.w 160,302
- dc.w 160,285
- dc.w 160,269
- dc.w 160,254
- dc.w 160,240
- dc.w 160,226
- dc.w 160,214
- dc.w 160,202
- dc.w 160,190
- dc.w 160,180
- dc.w 160,170
- dc.w 160,160
-
- dc.w 170,856
- dc.w 170,808
- dc.w 170,762
- dc.w 170,720
- dc.w 170,678
- dc.w 170,640
- dc.w 170,604
- dc.w 170,570
- dc.w 170,538
- dc.w 170,508
- dc.w 170,480
- dc.w 170,453
- dc.w 170,428
- dc.w 170,404
- dc.w 170,381
- dc.w 170,360
- dc.w 170,339
- dc.w 170,320
- dc.w 170,302
- dc.w 170,285
- dc.w 170,269
- dc.w 170,254
- dc.w 170,240
- dc.w 170,226
- dc.w 170,214
- dc.w 170,202
- dc.w 170,190
- dc.w 170,180
- dc.w 170,170
-
- dc.w 180,856
- dc.w 180,808
- dc.w 180,762
- dc.w 180,720
- dc.w 180,678
- dc.w 180,640
- dc.w 180,604
- dc.w 180,570
- dc.w 180,538
- dc.w 180,508
- dc.w 180,480
- dc.w 180,453
- dc.w 180,428
- dc.w 180,404
- dc.w 180,381
- dc.w 180,360
- dc.w 180,339
- dc.w 180,320
- dc.w 180,302
- dc.w 180,285
- dc.w 180,269
- dc.w 180,254
- dc.w 180,240
- dc.w 180,226
- dc.w 180,214
- dc.w 180,202
- dc.w 180,190
- dc.w 180,180
-
- dc.w 190,856
- dc.w 190,808
- dc.w 190,762
- dc.w 190,720
- dc.w 190,678
- dc.w 190,640
- dc.w 190,604
- dc.w 190,570
- dc.w 190,538
- dc.w 190,508
- dc.w 190,480
- dc.w 190,453
- dc.w 190,428
- dc.w 190,404
- dc.w 190,381
- dc.w 190,360
- dc.w 190,339
- dc.w 190,320
- dc.w 190,302
- dc.w 190,285
- dc.w 190,269
- dc.w 190,254
- dc.w 190,240
- dc.w 190,226
- dc.w 190,214
- dc.w 190,202
- dc.w 190,190
-
- dc.w 202,856
- dc.w 202,808
- dc.w 202,762
- dc.w 202,720
- dc.w 202,678
- dc.w 202,640
- dc.w 202,604
- dc.w 202,570
- dc.w 202,538
- dc.w 202,508
- dc.w 202,480
- dc.w 202,453
- dc.w 202,428
- dc.w 202,404
- dc.w 202,381
- dc.w 202,360
- dc.w 202,339
- dc.w 202,320
- dc.w 202,302
- dc.w 202,285
- dc.w 202,269
- dc.w 202,254
- dc.w 202,240
- dc.w 202,226
- dc.w 202,214
- dc.w 202,202
-
- dc.w 214,856
- dc.w 214,808
- dc.w 214,762
- dc.w 214,720
- dc.w 214,678
- dc.w 214,640
- dc.w 214,604
- dc.w 214,570
- dc.w 214,538
- dc.w 214,508
- dc.w 214,480
- dc.w 214,453
- dc.w 214,428
- dc.w 214,404
- dc.w 214,381
- dc.w 214,360
- dc.w 214,339
- dc.w 214,320
- dc.w 214,302
- dc.w 214,285
- dc.w 214,269
- dc.w 214,254
- dc.w 214,240
- dc.w 214,226
- dc.w 214,214
-
- dc.w 226,856
- dc.w 226,808
- dc.w 226,762
- dc.w 226,720
- dc.w 226,678
- dc.w 226,640
- dc.w 226,604
- dc.w 226,570
- dc.w 226,538
- dc.w 226,508
- dc.w 226,480
- dc.w 226,453
- dc.w 226,428
- dc.w 226,404
- dc.w 226,381
- dc.w 226,360
- dc.w 226,339
- dc.w 226,320
- dc.w 226,302
- dc.w 226,285
- dc.w 226,269
- dc.w 226,254
- dc.w 226,240
- dc.w 226,226
-
- dc.w 240,856
- dc.w 240,808
- dc.w 240,762
- dc.w 240,720
- dc.w 240,678
- dc.w 240,640
- dc.w 240,604
- dc.w 240,570
- dc.w 240,538
- dc.w 240,508
- dc.w 240,480
- dc.w 240,453
- dc.w 240,428
- dc.w 240,404
- dc.w 240,381
- dc.w 240,360
- dc.w 240,339
- dc.w 240,320
- dc.w 240,302
- dc.w 240,285
- dc.w 240,269
- dc.w 240,254
- dc.w 240,240
-
- dc.w 254,856
- dc.w 254,808
- dc.w 254,762
- dc.w 254,720
- dc.w 254,678
- dc.w 254,640
- dc.w 254,604
- dc.w 254,570
- dc.w 254,538
- dc.w 254,508
- dc.w 254,480
- dc.w 254,453
- dc.w 254,428
- dc.w 254,404
- dc.w 254,381
- dc.w 254,360
- dc.w 254,339
- dc.w 254,320
- dc.w 254,302
- dc.w 254,285
- dc.w 254,269
- dc.w 254,254
-
- dc.w 269,856
- dc.w 269,808
- dc.w 269,762
- dc.w 269,720
- dc.w 269,678
- dc.w 269,640
- dc.w 269,604
- dc.w 269,570
- dc.w 269,538
- dc.w 269,508
- dc.w 269,480
- dc.w 269,453
- dc.w 269,428
- dc.w 269,404
- dc.w 269,381
- dc.w 269,360
- dc.w 269,339
- dc.w 269,320
- dc.w 269,302
- dc.w 269,285
- dc.w 269,269
-
- dc.w 285,856
- dc.w 285,808
- dc.w 285,762
- dc.w 285,720
- dc.w 285,678
- dc.w 285,640
- dc.w 285,604
- dc.w 285,570
- dc.w 285,538
- dc.w 285,508
- dc.w 285,480
- dc.w 285,453
- dc.w 285,428
- dc.w 285,404
- dc.w 285,381
- dc.w 285,360
- dc.w 285,339
- dc.w 285,320
- dc.w 285,302
- dc.w 285,285
-
- dc.w 302,856
- dc.w 302,808
- dc.w 302,762
- dc.w 302,720
- dc.w 302,678
- dc.w 302,640
- dc.w 302,604
- dc.w 302,570
- dc.w 302,538
- dc.w 302,508
- dc.w 302,480
- dc.w 302,453
- dc.w 302,428
- dc.w 302,404
- dc.w 302,381
- dc.w 302,360
- dc.w 302,339
- dc.w 302,320
- dc.w 302,302
-
- dc.w 320,856
- dc.w 320,808
- dc.w 320,762
- dc.w 320,720
- dc.w 320,678
- dc.w 320,640
- dc.w 320,604
- dc.w 320,570
- dc.w 320,538
- dc.w 320,508
- dc.w 320,480
- dc.w 320,453
- dc.w 320,428
- dc.w 320,404
- dc.w 320,381
- dc.w 320,360
- dc.w 320,339
- dc.w 320,320
-
- dc.w 339,856
- dc.w 339,808
- dc.w 339,762
- dc.w 339,720
- dc.w 339,678
- dc.w 339,640
- dc.w 339,604
- dc.w 339,570
- dc.w 339,538
- dc.w 339,508
- dc.w 339,480
- dc.w 339,453
- dc.w 339,428
- dc.w 339,404
- dc.w 339,381
- dc.w 339,360
- dc.w 339,339
-
- dc.w 360,856
- dc.w 360,808
- dc.w 360,762
- dc.w 360,720
- dc.w 360,678
- dc.w 360,640
- dc.w 360,604
- dc.w 360,570
- dc.w 360,538
- dc.w 360,508
- dc.w 360,480
- dc.w 360,453
- dc.w 360,428
- dc.w 360,404
- dc.w 360,381
- dc.w 360,360
-
- dc.w 381,856
- dc.w 381,808
- dc.w 381,762
- dc.w 381,720
- dc.w 381,678
- dc.w 381,640
- dc.w 381,604
- dc.w 381,570
- dc.w 381,538
- dc.w 381,508
- dc.w 381,480
- dc.w 381,453
- dc.w 381,428
- dc.w 381,404
- dc.w 381,381
-
- dc.w 404,856
- dc.w 404,808
- dc.w 404,762
- dc.w 404,720
- dc.w 404,678
- dc.w 404,640
- dc.w 404,604
- dc.w 404,570
- dc.w 404,538
- dc.w 404,508
- dc.w 404,480
- dc.w 404,453
- dc.w 404,428
- dc.w 404,404
-
- dc.w 428,856
- dc.w 428,808
- dc.w 428,762
- dc.w 428,720
- dc.w 428,678
- dc.w 428,640
- dc.w 428,604
- dc.w 428,570
- dc.w 428,538
- dc.w 428,508
- dc.w 428,480
- dc.w 428,453
- dc.w 428,428
-
- dc.w 453,856
- dc.w 453,808
- dc.w 453,762
- dc.w 453,720
- dc.w 453,678
- dc.w 453,640
- dc.w 453,604
- dc.w 453,570
- dc.w 453,538
- dc.w 453,508
- dc.w 453,480
- dc.w 453,453
-
- dc.w 480,856
- dc.w 480,808
- dc.w 480,762
- dc.w 480,720
- dc.w 480,678
- dc.w 480,640
- dc.w 480,604
- dc.w 480,570
- dc.w 480,538
- dc.w 480,508
- dc.w 480,480
-
- dc.w 508,856
- dc.w 508,808
- dc.w 508,762
- dc.w 508,720
- dc.w 508,678
- dc.w 508,640
- dc.w 508,604
- dc.w 508,570
- dc.w 508,538
- dc.w 508,508
-
- dc.w 538,856
- dc.w 538,808
- dc.w 538,762
- dc.w 538,720
- dc.w 538,678
- dc.w 538,640
- dc.w 538,604
- dc.w 538,570
- dc.w 538,538
-
- dc.w 570,856
- dc.w 570,808
- dc.w 570,762
- dc.w 570,720
- dc.w 570,678
- dc.w 570,640
- dc.w 570,604
- dc.w 570,570
-
- dc.w 604,856
- dc.w 604,808
- dc.w 604,762
- dc.w 604,720
- dc.w 604,678
- dc.w 604,640
- dc.w 604,604
-
- dc.w 640,856
- dc.w 640,808
- dc.w 640,762
- dc.w 640,720
- dc.w 640,678
- dc.w 640,640
-
- dc.w 678,856
- dc.w 678,808
- dc.w 678,762
- dc.w 678,720
- dc.w 678,678
-
- dc.w 720,856
- dc.w 720,808
- dc.w 720,762
- dc.w 720,720
-
- dc.w 762,856
- dc.w 762,808
- dc.w 762,762
-
- dc.w 808,856
- dc.w 808,808
-
- dc.w 856,856
- dc.w $ffff
- endtab
-
- Section bufors,bss_c
-
- sample_buff1_4:
- ds.b BuffSize+4
- sample_buff1_1:
- ds.b BuffSize+4
- sample_buff1_2:
- ds.b BuffSize+4
- sample_buff1_3:
- ds.b BuffSize+4
-
- sample_buff1_MIX:
- ds.b 640*3
- sample_buff2_MIX:
- ds.b 640*3
- sample_buff3_MIX:
- ds.b 640*3
- sample_buff4_MIX:
- ds.b 640*3
-
- Section tabs,bss_p
-
- mix_tab1: ds.b $3000
- mix_tab2: ds.b 239130
- voltab: ds.b 16720
-
- Section module,data_p
-
- module: incbin "df0:modules/rave base.digi"
-