Changes

Jump to: navigation, search

PROTRACKER372 PTSPLAY H

11,741 bytes added, 21:46, 8 March 2020
no edit summary
PTUPLAY C��\V�W�Ÿ;RUN=CREATE RELOC TBL;pt3.67 micro SLOW player with 1 table;no ini;85 PATTERNS;no IY!;tempo1 MACRO pptba_smp=MUZ+105tba_orn=tba_smp+64PLAYERfrq_A=MUZfrq_B=MUZ+2frq_C=MUZ+4N_frq=MUZ+6vol_A=MUZ+8vol_B=MUZ+9vol_C=MUZ+10frq_E=MUZ+11E_form=MUZ+13play LD HL,int_qty DEC (HL) JP NZ,NOINS;--- nota_A + calc_next_position --- INC HL ;LD HL,A_qty DEC (HL) JR NZ,Aq_0Ach_adr LD DE,tab_vol+16 LD A,(DE) OR A JR NZ,Ps_n0_m1=$+2 LD (N_frq),A ;;5!!! LD D,A ;; LD (sav_SP2+1),SPPsa_beg LD HL,MUZ+201 LD A,(HL) INC A ;AAA;6 JR NZ,Ps_n1 ;NC ;6Psa_lop LD HL,MUZ+201Ps_n1 LD E,(HL) ;6 INC HL LD (Psa_beg+1),HL Psa_chn LD HL,0 ADD HL,DE ADD HL,DE LD SP,HL ;POP HL;ia_pos0 LD BC,MUZ ;ADD HL,BC ;EX DE,HL ;DE=adr_chn_A POP DE POP HL ;ADD HL,BC ;HL=adr_chn_B LD (Bch_adr+1),HL POP HL ;ADD HL,BC ;HL=adr_chn_C LD (Cch_adr+1),HLsav_SP2 LD SP,0Ps_n0_m12=$+1 LD H,'tba_smp CALL An_clc1 LD (Ach_adr+1),DEAi_qty LD A,0 LD (A_qty),A DJNZ Aq_0 LD H,B LD L,B LD (Asl_dsp+1),HLAq_0;--- nota_B --- LD HL,B_qty DEC (HL) JR NZ,Bq_0Bch_adr LD DE,0_m13=$+1 LD H,'tba_smp CALL Bn_clc1 LD (Bch_adr+1),DEBi_qty LD A,0 LD (B_qty),A DJNZ Bq_0 LD H,B LD L,B LD (Bsl_dsp+1),HLBq_0;--- nota_C --- LD HL,C_qty DEC (HL) JR NZ,Cq_0Cch_adr LD DE,0_m14=$+1 LD H,'tba_smp CALL Cn_clc1 LD (Cch_adr+1),DECi_qty LD A,0 LD (C_qty),A DJNZ Cq_0 LD H,B LD L,B LD (Csl_dsp+1),HLCq_0;--- install_E ---Ei_form LD A,0 ;env_form_m11=$+2 LD (E_form),A OR A JR Z,tempEi_frq LD HL,0 ;env_frq LD (E_frq+1),HL XOR A LD L,A LD H,A LD (Ei_form+1),A LD (Esl_frq+1),HL LD (Esl_stp+1),A temp LD A,3 ;temp LD (int_qty),ANOINSplay_0 LD L,0 ;smp_sl_env EXX N_add LD IX,0 ;HX=noise LX=mix LD (sav_SP1+1),SPE_ins0 JR Ei_QEsl_ids LD HL,0 ;stp_sld_env LD (Esl_sds+1),HLEsl_ist LD A,0 ;stp_sld_p LD (Esl_stp+1),A LD (Esl_sts+1),A LD A,24 LD (E_ins0),AEi_Q;---- sampler_A ---- Avb_lok LD A,-1 LD H,A INC A JP Z,Avb_n0 As_adr LD SP,DUMMYSMP ;sample POP DE ;loop E=beg D=endAs_dsp LD A,0 LD L,A INC A CP D JR C,As_n0 ;bug NZ/C LD A,EAs_n0 LD (As_dsp+1),A SLA L SLA L ;ADD HL,HL,HL,HL ADD HL,SP LD SP,HL POP DE ;D= Nm ts ns Tm v3 v2 v1 v0 LD A,D ;E= sv +- N4 N3 N2 N1 N0 Em OR #F0 ;AND 15 LD L,A LD A,E ADD A,AAs_Vsl LD A,16 JR NC,As_VslG JP M,As_n2 SUB 1 JR As_n3As_n2 CP 31As_n3 ADC A,0 LD (As_Vsl+1),AAs_VslG ADD A,L JR C,As_n4 XOR AAs_n4 CP 16 JR C,Ag_vol LD A,15Ag_vol ADD A,#F0 LD L,A LD H,'tab_vol LD A,(HL) SRL E JR C,Am_vo0Am_vol OR PTSPlay C��3w�x{� ;Universal PT2'n'PT3 Turbo Sound player for ZX Spectrum ;2004-2007 S.V.Bulba <vorobey@mail.khstu.ru> ;http://bulba.untergrund.net/ (http://bulba.at.kz/) Release="0" ;read SjAsm or ZXAsm version source for comments. ;Conditional assembly ;1) Current position counters at (Vars1+0) and (Vars2+0) CurPosCounter=0 ;2) Allow channels allocation bits at (START+10) ACBBAC=0 ;3) Allow loop checking and disabling LoopChecker=0 ;4) Insert official identificator IFN ?Id Id=1 ENDIF ;5) Set IY for correct return to ZX Basic IFN ?Basic Basic=0 ENDIF ;ORG #C000 TonA=0 TonB=2 TonC=4 Noise=6 Mixer=7 AmplA=8 AmplB=9 AmplC=10 Env=11 EnvTp=13 ;ChannelsVars ;STRUCT CHP ;reset group PsInOr=0 PsInSm=1 CrAmSl=2 CrNsSl=3 CrEnSl=4 TSlCnt=5 CrTnSl=6 TnAcc=8 COnOff=10 ;reset group OnOffD=11 ;IX for PTDECOD here (+12) OffOnD=12 OrnPtr=13 SamPtr=15 NNtSkp=17 Note=18 SlToNt=19 Env_En=20 Flags=21 ;Enabled - 0, SimpleGliss - 2 TnSlDl=22 TSlStp=23 TnDelt=25 NtSkCn=27 Volume=28 ;ENDS CHP=29 ;STRUCT VRS CurPos=0 PosSub=1 ModNum=2 ;bit0: ChipNum ;bit1: 1-reversed patterns order (AlCo TS) ChanA=3 ChanB=ChanA+CHP ChanC=ChanB+CHP ;GlobalVars MODADDR=ChanC+CHP OrnPtrs=MODADDR+2 SamPtrs=MODADDR+4 PatsPtr=MODADDR+6 AdInPtA=MODADDR+8 AdInPtB=MODADDR+10 AdInPtC=MODADDR+12 CrPsPtr=MODADDR+14 LPosPtr=MODADDR+16 Delay=MODADDR+18 DelyCnt=MODADDR+19 ESldAdd=MODADDR+20 CurESld=MODADDR+22 Env_Del=MODADDR+24 CurEDel=MODADDR+25 Ns_Base=MODADDR+26 AddToNs=MODADDR+27 AddToEn=MODADDR+28 EnvBase=MODADDR+29 AYREGS=MODADDR+31 ;ENDS VRS=AYREGS+14 START LD HL,MDLADDR ;DE - address of 2nd module for TS JR INIT JP PLAY JR MUTE SETUP DB 0 IFN Id DB "=UniPT2/PT3/TS-Player r.",Release,"=" ENDIF IFN LoopChecker CHECKLP LD HL,SETUP BIT 0,(IY-100+ModNum) JR Z,CHL1 SET 6,(HL) JR CHL2 CHL1 SET 7,(HL) CHL2 BIT 0,(HL) RET Z POP HL INC (IY-100+DelyCnt) INC (IY-100+ChanA+NtSkCn) XOR A LD (IY-100+AYREGS+AmplA),A LD (IY-100+AYREGS+AmplB),A LD (IY-100+AYREGS+AmplC),A RET ENDIF MUTE XOR A LD H,A LD L,A LD (VARS1+AYREGS+AmplA),A LD (VARS1+AYREGS+AmplB),HL LD (VARS2+AYREGS+AmplA),A LD (VARS2+AYREGS+AmplB),HL JP ROUT INIT ;HL - AddressOfModule ;DE - AddresOf2ndModule PUSH DE PUSH HL LD HL,VARS LD (HL),0 LD DE,VARS+1 LD BC,VAR0END-VARS-1 LDIR INC HL LD (VARS1+AdInPtA),HL ;ptr to zero LD (VARS2+AdInPtA),HL POP HL LD IY,VARS1+100 LD A,(START+10) AND 2 JP NZ,I_PT2 CALL INITPT3 LD HL,#1F18 ;(e_-SamCnv-2)*256+#18 ;ALASM :( LD (SamCnv),HL LD A,#BA LD (OrnCP),A LD (SamCP),A LD A,#7B LD (OrnLD),A LD (SamLD),A LD A,#87 LD (SamClc2),A POP HL ;Use version and ton table of 1st module LD A,(IX+13-100) ;EXTRACT VERSION NUMBER SUB #30 JR C,L20 CP 10 JR C,L21 L20 LD A,6 L21 LD (Version),A PUSH AF ;VolTable version CP 4 LD A,(IX+99-100) ;TONE TABLE NUMBER RLA AND 7 PUSH AF ;NoteTable number LD IY,VARS2+100 LD A,(START+10) AND 48 JR Z,NOTS CP 16 JR Z,TwoPT3s LD A,(Version) CP 7 JR C,NOTS LD A,(IX+98-100) ;ALCO TS MARKER CP #20 JR Z,NOTS LD HL,VARS1 LD DE,VARS2 LD BC,VRS LDIR SET 1,(IY-100+ModNum) LD C,A ADD A,A ADD A,C SUB 2 LD (TSSub),A JR AlCoTS_ TwoPT3s CALL INITPT3 AlCoTS_ LD A,1 LD (is_ts),A SET 0,(IY-100+ModNum) NOTS LD BC,PT3PD LD HL,0 LD DE,PT3EMPTYORN JR INITCOMMON I_PT2 CALL INITPT2 LD HL,#51CB LD (SamCnv),HL LD A,#BB LD (OrnCP),A LD (SamCP),A LD A,#7A LD (OrnLD),A LD (SamLD),A LD A,#80 LD (SamClc2),A POP HL LD A,5 LD (Version),A PUSH AF LD A,2 PUSH AF LD A,(START+10) AND 48 JR Z,NOTS2 LD IY,VARS2+100 LD A,1 LD (is_ts),A SET 0,(

Navigation menu