Changes

Jump to: navigation, search

PROTRACKER372 MIC&RC H

1,183 bytes added, 20:02, 8 March 2020
no edit summary
mic&rc C��ZY�Z-╚ ;player mic,rc,hrip SLOW ;todo frq нов.ноты 3xxx считать заранее,ч/з п/п twice=1;перемещаемый модуль и многокр.инициализация frq=1;all freq tables frqrosh=1;all freq tables(3.4x)by Roshin IFN frqrosh twice=1 frq=1 ENDIF hrip=0;при hrip=1 ниже включить: smpfix=1;vol,T,E/N cumulations in SMPs sld12=1;glisses 1,2 port3=1;tone port. dsmp4=1;smp.offset dorn5=1;orn.offset vib6=1;vibrate Esld9A=1;env.gliss ts2=0;2nd TS player;играет пат47 вместо пат0 и т.д. ;#720..#B3C MACRO ornsmp ornPP ADD A,A ADD A,tba_orn-tba_smp smpPP ADD A,tba_smp LD L,A LD H,'compile LD A,(HL),(BC),A INC L,BC LD A,(HL),(BC),A XOR A RET ;16 ENDM MACRO npush NPUSH RLA ADD A,L LD L,A LD A,(HL) INC L LD H,(HL) LD L,A EX (SP),HL LD A,(BC) EXA JP (HL) ENDM MACRO outer OUTI OUTER LD B,D OUT (C),L LD B,E DEC A JR NZ,OUTER-2 RET ENDM MACRO swaper NEWF0 DEC E IFN twice LD A,(DE),C,A ENDIF LD A,(HL),(DE),A IFN twice LD (HL),C ENDIF DEC E DEC HL NEWFdj DJNZ NEWF0 INC B,E JR NZ,NEWF0 ENDM MACRO shut LD DE,#E00 LD BC,-3 DEC D OUT (C),D LD B,#BF OUT (C),E JR NZ,$-10 ENDM MACRO eipp EiPP LD (Ei_form+1),A LD A,(DE),H,A INC DE LD A,(DE),L,A INC DE LD (Ei_frq+1),HL LD A,16 RET ENDM MACRO l LD A,(DE) INC DE LD (\0),A RET ENDM MACRO gethl IGETHL INC DE GETHL EX DE,HL LD E,(HL) INC HL LD D,(HL) INC HL EX DE,HL XOR A RET ENDM IFN hrip compile LD HL,module+30 JP INIT JP PLAY ELSE ORG #C000 compile LD HL,module JR $+5 JP play ;DI ENDIF init IFN twice LD (ia_pos0+1),HL PUSH HL IFN frq LD BC,99 ADD HL,BC IFN frqrosh PUSH HL LD E,(HL) LD D,B LD HL,NT_DATA LD BC,T_ ADD HL,DE ADD HL,DE ADD HL,DE LD E,(HL) CALL MAKEfrq POP HL POP BC INC HL PUSH HL INC HL ELSE ;frqrosh=0 LD B,(HL) EX DE,HLOLDfrq LD HL,0 CALL SWAPpp ;inc de LD HL,tab0frq+#8E DJNZ $+3 LD L,B DJNZ $+5 LD HL,tab2frq+#8E DJNZ $+3 DEC HL CALL SWAPpp ;inc de EX DE,HL POP BC ENDIF ELSE ;twice=1&frq=0 LD BC,100 ADD HL,BC POP BC PUSH HL INC HL ENDIF LD (sav_SP0+1),SP LD SP,HL ELSE ;twice=0 LD (sav_SP0+1),SP IFN frq LD SP,module+99 POP BC LD B,C IF0 hrip DEC HL ENDIF DEC B JR Z,NOsWAP DJNZ $+5 LD HL,tab2frq+#8E DEC B LD DE,tab_frq+#BF LD B,49 JR Z,NEWFdj-1 swaperNOsWAP LD BC,module ELSE ;twice=0&frq=0 LD B,H,C,L LD SP,module+101 ENDIF ENDIF POP AF,HL ADD HL,BC LD (Psa_chn+1),HL LD HL,tba_smpia_s0 EX DE,HL POP HL ADD HL,BC EX DE,HL LD (HL),E INC L LD (HL),D INC L JR NZ,ia_s0 IFN twice INC L LD H,L LD (int_qty),HL LD (B_qty),HL LD (Psa_beg+1),SP DEC H ELSE LD H,L ENDIF LD L,A ADD HL,SP LD (Psa_lop+1),HLsav_SP0 LD SP,0 IFN twice XOR A LD (Am_vol+1),A ;NO ENV LD (Bm_vol+1),A LD (Cm_vol+1),A ;LD HL,(tba_orn) LD HL,DUMMYORN LD (Ao_adr+1),HL LD (Bo_adr+1),HL LD (Co_adr+1),HL ;LD HL,(tba_smp) LD (As_adr+1),HL LD (Bs_adr+1),HL LD (Cs_adr+1),HL ;LD HL,tab_vol+16 =DUMMYORN LD (Ach_adr+1),HL SUB 16 ;FIX LD (Ag_vol+1),A ;VOL=15 LD (Bg_vol+1),A LD (Cg_vol+1),A SBC A,A LD (Avb_lok+1),A LD (Bvb_lok+1),A LD (Cvb_lok+1),A
IFN frq
LD BC,99 ADD HL,BC IFN frqrosh PUSH HL LD E,(HL) LD D,B LD HL,NT_DATA LD BC,T_ ADD HL,DE ADD HL,DE ADD HL,DE LD E,(HL) CALL MAKEfrq POP HL POP BC INC HL PUSH HL INC HL POP ELSE ;frqrosh=0 LD B,(HL) EX DE,HL OLDfrq LD HL,0 CALL SWAPpp ;inc de LD HL,tab0frq+#8E DJNZ $+3eff_tmp l temp LD L,B DJNZ $+15 ELSE LD HL,tab2frq+#8E DJNZ $+3 DEC HL CALL SWAPpp ;inc de EX DE,HL POP BC RET ENDIF ornsmp
ELSE ;twice=1&frq=0
POP DE LD BC,100eff_tmp l temp+1 ADD HL,BCouter ;10 POP BCgethl ;9 PUSH HLeipp ;15 INC HL
ENDIF
LD (sav_SP0+1),SP
LD SP,HL
ELSE ;twice=0
LD (sav_SP0+1),SP IFN frq LD SP,module+99 POP BC LD B,C IF0 hrip DEC HL ENDIF DEC B JR Z,NOsWAP DJNZ $+5 LD HL,tab2frq+#8E DEC B LD DE,moduletab_frq+100#BF LD B,49eff_tmp l temp+ JR Z,NEWFdj-1 swaper NOsWAP LD BC,module IF0 ELSE ;twice=0&frq=0ornsmp ;16 LD B,H,C,Leipp ;15 LD SP,module+101
ENDIF
ENDIF
POP AF,HL ADD HL,BC LD (Psa_chn+1),HL LD HL,tba_smp ia_s0 EX DE,HL POP HL ADD HL,BC EX DE,HL LD (HL),E INC L LD (HL),D INC L JR NZ,ia_s0 IFN twice INC L LD H,L LD (int_qty),HL LD (B_qty),HL LD (Psa_beg+1),SP DEC H ELSE LD H,L ENDIF LD L,A ADD HL,SP LD (Psa_lop+1),HL sav_SP0 LD SP,0 IFN twice XOR A LD (Am_vol+1),A ;NO ENV LD (Bm_vol+1),A LD (Cm_vol+1),A ;LD HL,(tba_orn) LD HL,DUMMYORN LD (Ao_adr+1),HL LD (Bo_adr+1),HL LD (Co_adr+1),HL ;LD HL,(tba_smp) LD (As_adr+1),HL LD (Bs_adr+1),HL LD (Cs_adr+1),HL IF0 Esld9A;LD HL,tab_vol+16 =DUMMYORN LD (Ach_adr+1),HL SUB 16 ;FIX LD (Ag_vol+1),A ;VOL=15 LD (Bg_vol+1),A LD (Cg_vol+1),A SBC A,A LD (Avb_lok+1),A LD (Bvb_lok+1),A LD (Cvb_lok+1),A IFN frq IFN frqrosh POP DE eff_tmp l temp+1 ELSE RET ENDIF ornsmp ELSE ;twice=1&frq=0 POP DE eff_tmp l temp+1 outer ;10 gethl ;9 eipp ;15 ENDIF Eef_sld ELSE ;twice=0 LD DE,module+100 eff_tmp l temp+1 IF0 frq ornsmp ;16 eipp ;15 ENDIF
ENDIF
IF0 Esld9A Eef_sld=0 ENDIF MACRO tabl IF0 sld12 \0ef_slT=0 ENDIF IF0 port3 \0ef_nsT=0 ENDIF IF0 dsmp4 \0ef_dSm=0 ENDIF IF0 dorn5 \0ef_dOr=0 ENDIF IF0 vib6 \0ef_vib=0 ENDIF \0_eff DW \0ef_slT ;1/2xxx DW \0ef_nsT ;3xxx DW \0ef_dSm ;4.xx DW \0ef_dOr ;5.xx DW \0ef_vib ;6.xx DS 4,1 DW Eef_sld DW eff_tmp IFN $-18!$&#FF00 DISPLAY "ERROR \0_eff ENDIF ENDM IF0 twice outer ;10 npush ;11 tabl A tabl B tabl C B_qty=$-6 ENDIF tba_smp DS 64 tba_orn DS 32 DISPLAY $ tab_vol frq_A DW 0 frq_B DW 0 frq_C DW 0 N_frq DB 0 ;;4 DB 1 ;mix ;no_use vol_A DB 0 vol_B DB 0 vol_C DB 0 frq_E DW 0 E_form DB 0 int_qty DB 1 A_qty DB 1 DUMMYORN DUMMYSMP DB 0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1 DB 0,0,0,0,1,1,1,1,1,1,1,1,2,2,2,2 DB 0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3 DB 0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4 DB 0,0,1,1,1,2,2,2,3,3,3,4,4,4,5,5 DB 0,0,1,1,2,2,2,3,3,4,4,4,5,5,6,6 DB 0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7 DB 0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8 DB 0,1,1,2,2,3,4,4,5,5,6,7,7,8,8,9 DD 0001010203030405050607070809090A DD 000101020304040506070708090A0A0B DD 0001020203040506060708090A0A0B0C DD 00010203030405060708090A0A0B0C0D DD 00010203040506070708090A0B0C0D0E DD 000102030405060708090A0B0C0D0E0F tab_frq DS #C0 IFN twice tabl A tabl B tabl C B_qty=$-6 ENDIF IFN ?NPUSH npush ;11 ENDIF IFN ?OUTER outer ;10 ENDIF IFN ?ornPP ornsmp ;16 ENDIF IFN ?EiPP eipp ;15 ENDIF IFN ?GETHL gethl ;9 ENDIF C_qty=B_qty+1 play LD HL,int_qty DEC (HL) JP NZ,NOINS ;--- nota_A + calc_next_position --- INC HL ;LD HL,int_qtyA_qty
DEC (HL)
JP NZ,NOINS;--- nota_A + calc_next_position --- INC HL ;LD HL,A_qty DEC (HL) JR NZ,Aq_0 Ach_adr LD DE,tab_vol+16 LD A,(DE) OR A JR NZ,Ps_n0 LD (N_frq),A ;;5!!! LD D,A ;; LD (sav_SP2+1),SP Psa_beg LD HL,module+201 LD A,(HL) INC A ;AAA;6 JR NZ,Ps_n1 ;NC ;6 Psa_lop LD HL,module+201 Ps_n1 IFN ts2 LD A,47*3 SUB (HL) LD E,A ELSE LD E,(HL) ;6 ENDIF INC HL LD (Psa_beg+1),HL Psa_chn LD HL,0 ADD HL,DE
ADD HL,DE
ADD HL,DE LD SP,HL POP HL ia_pos0 LD BC,module ADD HL,BC EX DE,HL ;DE=adr_chn_A 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),HL sav_SP2 LD SP,0 Ps_n0 CALL An_clc1 LD (Ach_adr+1),DE Ai_qty LD A,0,(A_qty),A DJNZ Aq_0 LD H,B,L,B LD (Asl_dsp+1),HL Aq_0 ;--- nota_B --- LD HL,B_qty DEC (HL) JR NZ,Bq_0 Bch_adr LD DE,0 CALL Bn_clc1 LD (Bch_adr+1),DE Bi_qty LD A,0,(B_qty),A DJNZ Bq_0 LD H,B,L,B LD (Bsl_dsp+1),HL Bq_0 ;--- nota_C --- LD HL,C_qty DEC (HL) JR NZ,Cq_0 Cch_adr LD DE,0 CALL Cn_clc1 LD (Cch_adr+1),DE Ci_qty LD A,0,(C_qty),A DJNZ Cq_0 LD H,B,L,B LD (Csl_dsp+1),HL Cq_0 ;--- install_E --- Ei_form LD A,0 ;env_form LD (E_form),A OR A JR Z,temp Ei_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,(int_qty),A NOINS play_0 LD L,0 ;smp_sl_env EXX N_add LD IX,0 ;HX=noise LX=mix LD (sav_SP1+1),SP E_ins0 JR Ei_Q Esl_ids LD HL,0 ;stp_sld_env LD (Esl_sds+1),HL Esl_ist LD A,0 ;stp_sld_p LD (Esl_stp+1),A LD (Esl_sts+1),A LD A,24 LD (E_ins0),A Ei_Q MACRO sam1 \0vb_lok LD A,-1 LD H,A INC A JP Z,\0vb_n0 \0s_adr LD SP,DUMMYSMP ;sample POP DE ;loop E=beg D=end \0s_dsp LD A,0 LD L,A INC A CP D JR C,$+3 ;bug NZ/C LD A,E LD (\0s_dsp+1),A 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 IFN smpfix OR #F0 LD L,A LD A,E ADD A,A \0s_Vsl LD A,16 JR NC,\0s_VslG JP M,\0s_n2 SUB 1 JR $+4 \0s_n2 CP 31 ADC A,0 LD (\0s_Vsl+1),A \0s_VslG ADD A,L JR C,$+3 XOR A CP 16 JR C,$+4 LD A,15 ELSE AND 15 ENDIF \0g_vol ADD A,#F0 LD L,A,H,'tab_vol LD A,(HL) SRL E JR C,$+4 \0m_vol OR 0 EXA LD A,D RLCA JR C,\0s_n5 IFN smpfix \0s_Nsl LD A,0 ADD A,E BIT 5,D JR Z,$+5 LD (\0s_Nsl+1),A LD HX,A ELSE LD HX,E ENDIF JR \0s_n7 \0s_n5 LD A,E AND 31 CP 16 JR C,$+4 OR #F0 IFN smpfix \0s_Esl ADD A,0 BIT 5,D JR Z,$+5 LD (\0s_Esl+1),A ENDIF
EXX
N_add LD IX,0 ;HX=noise LX=mix
LD (sav_SP1+1),SP
E_ins0 JR Ei_Q
Esl_ids LD HL,0 ;stp_sld_env
LD (Esl_sds+1),HL
Esl_ist LD A,0 ;stp_sld_p
LD (Esl_stp+1),A
LD (Esl_sts+1),A
LD A,24
LD (E_ins0),A
Ei_Q
MACRO sam1
\0vb_lok LD A,-1
LD H,A
INC A
JP Z,\0vb_n0
\0s_adr LD SP,DUMMYSMP ;sample
POP DE ;loop E=beg D=end
\0s_dsp LD A,0
LD L,A
INC A
CP D
JR C,$+3 ;bug NZ/C
LD A,E
LD (\0s_dsp+1),A
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
IFN smpfix
OR #F0
LD L,A
LD A,E
ADD A,A
\0s_Vsl LD A,16
JR NC,\0s_VslG
JP M,\0s_n2
SUB 1
JR $+4
\0s_n2 CP 31
ADC A,0
LD (\0s_Vsl+1),A
\0s_VslG
ADD A,L
JR C,$+3
XOR A
CP 16
JR C,$+4
LD A,15
ELSE
AND 15
ENDIF
\0g_vol ADD A,#F0
LD L,A,H,'tab_vol
LD A,(HL)
SRL E
JR C,$+4
\0m_vol OR 0
EXA
LD A,D
RLCA
JR C,\0s_n5
IFN smpfix
\0s_Nsl LD A,0
ADD A,E
BIT 5,D
JR Z,$+5
LD (\0s_Nsl+1),A
LD HX,A
ELSE
LD HX,E
ENDIF
JR \0s_n7
 
\0s_n5 LD A,E
AND 31
CP 16
JR C,$+4
OR #F0
IFN smpfix
\0s_Esl ADD A,0
BIT 5,D
JR Z,$+5
LD (\0s_Esl+1),A
ENDIF
EXX
ADD A,L
LD L,A
EXX
\0s_n7 LD A,D
RRCA
RRCA
AND 36
ENDM
 
MACRO sam2
LD LX,A
IFN smpfix
POP BC
\0s_dtn LD HL,0 ;dsp_frq_smp
ADD HL,BC
BIT 6,D
JR Z,$+5
LD (\0s_dtn+1),HL
EX DE,HL
ELSE
POP DE
ENDIF
 
\0o_adr LD SP,DUMMYORN ;ornament
POP BC ;loop C=beg B=end
\0o_dsp LD A,0
LD L,A
INC A
CP B
JR C,$+3 ;bug NZ/C
LD A,C
LD (\0o_dsp+1),A
LD H,0
ADD HL,SP
IFN port3
LD A,(\0s_note+1)
ELSE
\0s_note LD A,0
ENDIF
ADD A,(HL) ;dsp_orn
ADD A,A
JR NC,$+3
XOR A
LD L,A,H,'tab_frq
LD SP,HL
POP HL
ADD HL,DE
\0sl_dsp LD BC,0
ADD HL,BC
LD (frq_\0),HL
 
\0sl_stp LD A,0
DEC A
JP M,\0sl_s0
JR NZ,\0sl_s1
\0sl_tfr LD DE,0
ADD HL,DE
EX DE,HL
ADD HL,BC
LD (\0sl_dsp+1),HL
IFN port3
JR \0sl_sts ;port off/on
\0sl_plk
\0sl_not LD A,0
LD L,A
ADD HL,HL
LD H,'tab_frq
LD SP,HL
POP HL
\0s_note CP 0
JR NC,$+3
EX DE,HL
SBC HL,DE
JR C,\0sl_sts
LD (\0s_note+1),A
XOR A
LD L,A
LD (\0sl_dsp+1),HL
JR $+4
ENDIF
\0sl_sts LD A,0
\0sl_s1 LD (\0sl_stp+1),A
\0sl_s0 EXA
 
\0vb_n0 LD (vol_\0),A
IFN vib6
\0vb_stp LD A,0
DEC A
JP M,\0smpQ
JR NZ,\0vb_n1
DEC A ;;
LD HL,\0vb_lok+1;;
XOR (HL) ;;
LD (HL),A ;;4
\0vb_frq LD A,0
JR NZ,$+4
\0vb_sts LD A,0
\0vb_n1 LD (\0vb_stp+1),A
ENDIF
\0smpQ
ENDM
sam1 A
RRCA
RRCA
sam2 A
sam1 B
RRCA
OR LX
sam2 B
sam1 C
OR LX
sam2 C
;---- sampler_E ----
EXX
\0s_n7 LD A,LD RRCA RRCA AND 36 ENDM MACRO sam2 LD LX,A IFN smpfix POP BCEsl_frq \0s_dtn LD DEHL,0 ;stp_sl_envdsp_frq_smpE_frq ADD HL,BC BIT 6,D JR Z,$+5 LD (\0s_dtn+1),HL EX DE,HL ELSE POP DE ENDIF \0o_adr LD SP,DUMMYORN ;ornament POP BC ;loop C=beg B=end \0o_dsp LD A,0 LD L,A INC A CP B JR C,$+3 ;frq_envbug NZ/C LD A,C LD (\0o_dsp+1),A LD H,0 ADD HL,SP IFN port3 LD A,(\0s_note+1) ELSE \0s_note LD A,0 ENDIF ADD A,L(HL) ;dsp_orn ADD A,A JR NC,$+3 XOR A LD L,A,H,'tab_frq LD SP,HL POP HL ADD HL,DE \0sl_dsp LD BC,0 ADD HL,BC LD (frq_Efrq_\0),HLEsl_stp \0sl_stp LD A,0 DEC A JP M,sav_SP1\0sl_s0 JR NZ,E_n0\0sl_s1Esl_sds \0sl_tfr LD HLDE,0
ADD HL,DE
LD (Esl_frq+1),HL
Esl_sts LD A,0
E_n0 LD (Esl_stp+1),A
 
;---- out_to_processor ----
sav_SP1 LD SP,0
out_
LD DE,#FFBF
LD C,-3
LD HL,frq_A
 
LD A,7
CALL OUTER
 
LD A,HX ;noise
LD (N_add+3),A
ADD A,(HL)
OUT (C),A
INC L
LD B,D
OUT (C),L
LD A,LX ;mix
LD B,E
OUT (C),A
INC L
 
LD A,6
CALL OUTER
 
OR (HL)
RET Z
OUT (C),A
LD (HL),0 ;;4
RET
 
MACRO nota
\0ni_not LD (\0s_note+1),A
XOR A
LD H,A,L,A
LD (\0s_dsp+1),A
LD (\0o_dsp+1),A
LD (\0sl_stp+1),A
LD (\0vb_lok+1),A
IFN vib6
LD (\0vb_stp+1),A
ENDIF
IFN smpfix
LD (\0s_Nsl+1),A
LD (\0s_Esl+1),A
LD (\0s_dtn+1),HL
LD A,16,(\0s_Vsl+1),A
ENDIF
LD B,1
RET
 
\0ni_vol JR NZ,\0ni_v0
IFN vib6
LD (\0vb_stp+1),A
ENDIF
DEC A
LD (\0vb_lok+1),A
RET
\0ni_v0
DUP 4
ADD A,A
EDUP
LD (\0g_vol+1),A
JR \0n_clc2
\0ni_s_o
LD BC,\0o_adr+1
CALL ornPP
\0ni_vse
CALL NZ,EiPP
\0ni_sm0 LD (\0m_vol+1),A
XOR A
LD (\0o_dsp+1),A
LD A,(DE)
INC DE
JR $+4
\0ni_smp RET Z
ADD A,A
LD BC,\0s_adr+1
CALL smpPP
\0n_clc1 LD BC,#1020
\0n_clc2 LD A,(DE)
INC DE
ADD A,B
JR C,\0ni_s_o
ADD A,C
JR C,\0ni_smp
ADD A,B
JR C,\0ni_vol
ADD A,B
JR C,\0ni_vqe
ADD A,96
JR C,\0ni_not
ADD A,B
JR C,\0ni_orn
IF0 "\0 "-"B "
ADD A,C
JR C,\0ni_noi
ADD A,B
ELSE
ADD A,48
ENDIF
JR C,\0ni_vse
LD HL,-256&\0_eff+.(\0_eff+30)
LD BC,\0s_note+1
CALL NPUSH
JR \0n_clc1
IF0 "\0 "-"B "
\0ni_noi LD (N_frq),A;GLOBALnoise
JR \0n_clc2
ENDIF
\0ni_vqe JR Z,\0ni_v1
DEC A
JR NZ,\0ni_e0
LD A,(DE)
LD (\0i_qty+1),A
INC DE
JR \0n_clc2
 
\0ni_e0 CALL EiPP
\0ni_v1 LD (\0m_vol+1),A
JR \0n_clc2
\0ni_orn
LD BC,\0o_adr+1
CALL ornPP
LD (\0o_dsp+1),A
JR \0n_clc1
ENDM
nota A
nota B
nota C
;---- special_effects_COM.xxxx ----
IFN vib6
MACRO vib
\0ef_vib LD A,(DE)
INC DE
LD (\0vb_sts+1),A
LD (\0vb_stp+1),A
l \0vb_frq+1
ENDM
vib A
vib B
vib C
ENDIF
 
IFN Esld9A
Eef_sld LD A,(DE)
LD (Esl_ist+1),A
CALL IGETHL
LD (Esl_ids+1),HL
LD A,6,(E_ins0),A
RET
ENDIF
 
IFN sld12|port3
MACRO slT
\0ef_slT LD A,(DE)
LD (\0sl_stp+1),A
LD (\0sl_sts+1),A
CALL IGETHL ;sld_ton
LD (\0sl_tfr+1),HL
IFN vib6
LD (\0vb_stp+1),A
ENDIF
IFN port3
LD A,\0sl_sts-\0sl_plk
LD (\0sl_plk-1),A ;port_off
ENDIF
RET
ENDM
slT A
slT B
slT C
ENDIF
IFN port3
MACRO nsT
\0ef_nsT CALL \0ef_slT
CALL GETHL
LD (\0sl_tfr+1),HL
LD B,A,(\0sl_plk-1),A ;port_on
LD HL,\0s_note+1
LD A,(HL),(\0sl_not+1),A
EXA
LD (HL),A
RET
ENDM
nsT A
nsT B
nsT C
ENDIF
IFN dsmp4
Aef_dSm l As_dsp+1
Bef_dSm l Bs_dsp+1
Cef_dSm l Cs_dsp+1
ENDIF
IFN dorn5
Aef_dOr l Ao_dsp+1
Bef_dOr l Bo_dsp+1
Cef_dOr l Co_dsp+1
ENDIF
 
IFN frq
IF0 frqrosh
IFN twice
SWAPpp LD (OLDfrq+1),HL
LD A,L
OR A
JR Z,eff_tmp
PUSH BC,DE
CP tab0frq+#8D
LD DE,tab_frq+#BF
LD B,49
JR Z,NEWFdj
swaper
POP DE,BC
eff_tmp LD A,(DE) ;temp
INC DE
LD (temp+1),A
RET
ENDIF
tab2frq INCBIN "KOZASM
tab3frq DW #CDA
tab0frq INCBIN "KOZPT
ELSE
MAKEfrq
;Roshin
INC HL
EX DE,HL
ADD HL,BC LD (\0sl_dsp+1),HL IFN port3 JR \0sl_sts ;port off/on \0sl_plk \0sl_not LD A,0 LD L,A ADD HL,BCHL LD H,'tab_frq LD SP,HL POP HL \0s_note CP 0 JR NC,$+3 EX DE,HL SBC HL,DE JR C,\0sl_sts LD (\0s_note+1),A XOR A LD L,A LD (\0sl_dsp+1),HL JR $+4 ENDIF \0sl_sts LD A,0 \0sl_s1 LD (\0sl_stp+1),A \0sl_s0 EXA \0vb_n0 LD (vol_\0),A IFN vib6 \0vb_stp LD A,0 DEC A JP M,\0smpQ JR NZ,\0vb_n1 DEC A ;; LD HL,\0vb_lok+1;; XOR (HL) ;; LD (HL),A ;;4 \0vb_frq LD A,0 JR NZ,$+4 \0vb_sts LD A,0 \0vb_n1 LD (\0vb_stp+1),A ENDIF \0smpQ ENDM sam1 A RRCA RRCA sam2 A sam1 B RRCA OR LX sam2 B sam1 C OR LX sam2 C ;---- sampler_E ---- EXX LD A,L Esl_frq LD DE,0 ;stp_sl_env E_frq LD HL,0 ;frq_env ADD A,L LD L,A ADD HL,DE LD (frq_E),HL Esl_stp LD A,0 DEC A JP M,sav_SP1 JR NZ,E_n0 Esl_sds LD HL,0 ADD HL,DE LD (Esl_frq+1),HL Esl_sts LD A,0 E_n0 LD (Esl_stp+1),A ;---- out_to_processor ---- sav_SP1 LD SP,0 out_ LD DE,#FFBF LD C,-3 LD HL,frq_A LD A,7 CALL OUTER LD A,HX ;noise LD (N_add+3),A ADD A,(HL) OUT (C),A INC L LD B,D OUT (C),L LD A,LX ;mix LD B,E OUT (C),A INC L LD A,6 CALL OUTER OR (HL) RET Z OUT (C),A LD (HL),0 ;;4 RET MACRO nota \0ni_not LD (\0s_note+1),A XOR A LD H,A,L,A LD (\0s_dsp+1),A LD (\0o_dsp+1),A LD (\0sl_stp+1),A LD (\0vb_lok+1),A IFN vib6 LD (\0vb_stp+1),A ENDIF IFN smpfix LD (\0s_Nsl+1),A LD (\0s_Esl+1),A LD (\0s_dtn+1),HL LD A,16,(COPF3\0s_Vsl+1),A ENDIF LD B,1 RET \0ni_vol JR NZ,\0ni_v0 IFN vib6 LD (\0vb_stp+1),A ENDIF DEC A LD (\0vb_lok+1),A RET \0ni_v0 DUP 4 ADD A,A EDUP LD (\0g_vol+1),A JR \0n_clc2 \0ni_s_o LD BC,\0o_adr+1 CALL ornPP \0ni_vse CALL NZ,EiPP \0ni_sm0 LD (\0m_vol+1),A XOR A LD (\0o_dsp+1),A LD A,(DE) INC DE JR $+4 \0ni_smp RET Z ADD A,A LD BC,\0s_adr+1 CALL smpPP \0n_clc1 LD BC,#1020 \0n_clc2 LD A,(DE) INC DE ADD A,B JR C,\0ni_s_o ADD A,C JR C,\0ni_smp ADD A,B JR C,\0ni_vol ADD A,B JR C,\0ni_vqe ADD A,96 JR C,\0ni_not ADD A,B JR C,\0ni_orn IF0 "\0 "-"B " ADD A,C JR C,\0ni_noi ADD A,B ELSE ADD A,48 ENDIF JR C,\0ni_vse LD HL,-256&\0_eff+.(\0_eff+30) LD BC,\0s_note+1 CALL NPUSH JR \0n_clc1 IF0 "\0 "-"B " \0ni_noi LD (N_frq),A;GLOBALnoise JR \0n_clc2 ENDIF \0ni_vqe JR Z,\0ni_v1 DEC A JR NZ,\0ni_e0 LD A,(DE) LD (\0i_qty+1),A INC DE JR \0n_clc2 \0ni_e0 CALL EiPP \0ni_v1 LD (\0m_vol+1),A JR \0n_clc2 \0ni_orn LD BC,\0o_adr+1 CALL ornPP LD (\0o_dsp+1),A JR \0n_clc1 ENDM nota A nota B nota C ;---- special_effects_COM.xxxx ---- IFN vib6 MACRO vib \0ef_vib LD A,(DE) INC DE LD (\0vb_sts+1),A LD (\0vb_stp+1),A l \0vb_frq+1 ENDM vib A vib B vib C ADC ENDIF IFN Esld9A Eef_sld LD A,(DE) LD (Esl_ist+1),A CALL IGETHL LD (Esl_ids+1),HL LD A,6,(E_ins0),A RET ENDIF IFN sld12|port3 MACRO slT \0ef_slT LD A,(DE) LD (\0sl_stp+1),A LD (\0sl_sts+1),A CALL IGETHL ;sld_ton LD (\0sl_tfr+1),HL IFN vib6 LD (\0vb_stp+1),A ENDIF IFN port3 LD A,\0sl_sts-\0sl_plk LD (\0sl_plk-1),A ;port_off ENDIF RET ENDM slT A slT B slT C ENDIF SUB IFN port3 MACRO nsT \0ef_nsT CALL \0ef_slT CALL GETHL LD (\0sl_tfr+1),HL LD B,A,(\0sl_plk-1),A ;port_on LD HL,\0s_note+1 LD A,(HL),(\0sl_not+1),A EXA LD (HL),A RET ENDM nsT A nsT B nsT C ENDIF IFN dsmp4 Aef_dSm l As_dsp+1 Bef_dSm l Bs_dsp+1 Cef_dSm l Cs_dsp+1 ENDIF IFN dorn5 Aef_dOr l Ao_dsp+1 Bef_dOr l Bo_dsp+1 Cef_dOr l Co_dsp+1 ENDIF IFN frq IF0 frqrosh IFN twice SWAPpp LD (OLDfrq+1),HL LD A,L OR A JR Z,eff_tmp PUSH BC,DE CP tab0frq+#8D LD DE,tab_frq+#BF LD B,49 JR Z,NEWFdj swaper POP DE,BC eff_tmp LD A,(DE) ;temp INC DE LD (temp+1),A RET ENDIF tab2frq INCBIN "KOZASM tab3frq DW #CDA tab0frq INCBIN "KOZPT ELSE MAKEfrq ;Roshin INC HL EX DE,HL ADD HL,BC LD A,(DE) LD (COPF3),A INC DE LD A,(DE) ADD A,C LD C,A ADC A,B SUB C LD B,A PUSH BC LD DE,tab_frq PUSH DE LD B,12 COPF1 PUSH BC LD C,(HL) INC HL PUSH HL LD B,(HL) PUSH DE EX DE,HL LD DE,23 LD HX,8 COPF2 SRL B RR C ;COPF3 NOP ;AND A LD A,C COPF3 ADC A,D ;=ADC 0 LD (HL),A INC HL LD A,B ADC A,D LD (HL),A ADD HL,DE DEC HX JR NZ,COPF2 POP DE INC DE,DE POP HL INC HL POP BC DJNZ COPF1 POP HL POP DE ;LD A,E ;CP TCOLD_1 ;JR NZ,CORR_1 ;LD A,#FD,(FrTab+#2E),A CORR_1 LD A,(DE) AND A RET Z INC DE RRA
PUSH HL
PUSH AF ADD A,A LD BC,A ADD HL,BC POP AF INC (HL) JR NC,$+4 DEC (HL),(HL) PUSH DEPOP HL EX DE,HL;AND A LD DE;SBC HL,23BC JR CORR_1 NT_DATA DB T_NEW_0-T_ LD HXADC A,8DCOPF2 SRL B DB TCNEW_0-T_ RR C;DB T_OLD_0-T_ ;COPF3 NOP AND A ;DB TCOLD_0-T_ DB T_NEW_1-T_ AND A DB TCNEW_1-T_ ;DB T_OLD_1-T_ LD ;AND A,CCOPF3 ;DB TCOLD_1-T_ DB T_NEW_2-T_ ADC A,D DB TCNEW_2-T_ ;=ADC 0DB T_OLD_2-T_ LD (HL),A;NOP INC HL;DB TCOLD_2-T_ LD A,B DB T_NEW_3-T_
ADC A,D
LD (HL),A ADD HL,DE DEC HX JR NZ,COPF2 POP DE INC DE,DE POP HL INC HL POP BC DJNZ COPF1  POP HL POP DE  ;LD A,E ;CP TCOLD_1 ;JR NZ,CORR_1 ;LD A,#FD,(FrTab+#2E),ACORR_1 LD A,(DE) AND A RET Z INC DE RRA PUSH HL PUSH AF ADD A,A LD C,A ADD HL,BC POP AF INC (HL) JR NC,$+4 DEC (HL),(HL) POP HL ;AND A ;SBC HL,BC JR CORR_1 NT_DATA DB T_NEW_0TCNEW_3-T_ ADC A,D DB TCNEW_0-T_ ;DB T_OLD_0-T_ ;AND A ;DB TCOLD_0-T_  DB T_NEW_1-T_ AND A DB TCNEW_1-T_ ;DB T_OLD_1-T_ ;AND A ;DB TCOLD_1-T_  DB T_NEW_2T_OLD_3-T_ ADC A,D DB TCNEW_2-T_ ;DB T_OLD_2-T_ ;NOP ;DB TCOLD_2-T_  DB T_NEW_3-T_ ADC A,D DB TCNEW_3-T_ ;DB T_OLD_3-T_ ;NOP ;DB TCOLD_3-T_ T_ ;COLD_0 DB #00+1,#04+1,#08+1,#0A+1,#0C+1,#0E+1,#12+1,#14+1 ; DB #18+1,#24+1,#3C+1,0 TCNEW_1 TCOLD_1 DB #5C+1,0 ;COLD_2 DB #30+1,#36+1,#4C+1,#52+1,#5E+1,#70+1,#82,#8C,#9C ; DB #9E,#A0,#A6,#A8,#AA,#AC,#AE,#AE,0 TCNEW_3 DB #56+1 TCOLD_3 DB #1E+1,#22+1,#24+1,#28+1,#2C+1,#2E+1,#32+1,#BE+1,0 TCNEW_0 DB #1C+1,#20+1,#22+1,#26+1,#2A+1,#2C+1,#30+1,#54+1 DB #BC+1,#BE+1,0 TCNEW_2 DB #1A+1,#20+1,#24+1,#28+1,#2A+1,#3A+1,#4C+1,#5E+1 DB #BA+1,#BC+1,#BE+1,0 ;first 12 values of tone tables T_NEW_1 T_OLD_1 DW #0EF8*2,#0E10*2,#0D60*2,#0C80*2,#0BD8*2,#0B28*2 DW #0A88*2,#09F0*2,#0960*2,#08E0*2,#0858*2,#07E0*2 ;_OLD_2 DW #0D3E*2,#0C80*2,#0BCC*2,#0B22*2,#0A82*2,#09EC*2 ; DW #095C*2,#08D6*2,#0858*2,#07E0*2,#076E*2,#0704*2 T_NEW_3 T_OLD_3 DW #0CDA*2,#0C22*2,#0B73*2,#0ACF*2,#0A33*2,#09A1*2 DW #0917*2,#0894*2,#0819*2,#07A4*2,#0737*2,#06CF*2 T_OLD_0=T_OLD_3+2 T_NEW_0=T_OLD_3+2 DW #066D*2 T_NEW_2 DW #0D10*2,#0C55*2,#0BA4*2,#0AFC*2,#0A5F*2,#09CA*2 DW #093D*2,#08B8*2,#083B*2,#07C5*2,#0755*2,#06EC*2 ENDIF ENDIF IFN hrip l8FA0=#8FA0 l8FA3=#8FA3 CALL play LD A,#FD IN A,(-2) BIT 3,A JR NZ,$+8 CALL play,play LD HL,#5A00 LD E,8 CALL LL8d9e,LL8d9e LL8d9e LD BC,#FFFD OUT (C),E IN A,(C) AND #F JR Z,LL8db2 LD B,A LL8dad LD (HL),7 INC HL DJNZ LL8dad LL8db2 CPL ADD A,33 LD B,A LL8dba LD (HL),0 INC HL DJNZ LL8dba INC DE RET INIT LD (LL8df4),DE LD IX,l8FA0 LD DE,l8FA3 ;NAME LD A,#D LD BC,32 LDIR LD (DE),A INC DE INC HL,HL,HL,HL XOR A LD BC,32 LDIR LD (DE),A LD (IX),A LD HL,#616,(l8FA0+1),HL CALL CALLER LD HL,#010,(l8FA0+1),HL LD HL,l8FA3 LD A,3 LL8e09 LD B,#F LD (HL),#7F INC HL DJNZ $-3 LD (HL),#D INC HL DEC A JR NZ,LL8e09 LD (HL),A DI shut LD A,#17,(#69A8),A LD DE,tab_frq+#BF LD HL,tab0frq+#8E CALL initCALLER JP 0LL8df4=$-2module=#C000END ELSE ENDmodule INCBIN "si*.m" ENDIF ORG tab_frq ;INCBIN "tb_ST DD F80E100E600D800CD80B280B880AF0096009E0085808E007 DD 7C070807B0064006EC0594054405F804B00470042C04FD03 DD BE03840358032003F602CA02A2027C02580238021602F801 DD DF01C201AC0190017B01650151013E012C011C010A01FC00 DD EF00E100D600C800BD00B200A8009F0096008E0085007E00 DD 770070006B0064005E00590054004F004B00470042003F00 DD 3B003800350032002F002C002A0027002500230021001F00 DD 1D001C001A00190017001600150013001200110010000F00 IF0 frqIF0 .{module+99}-0 ORG tab_frq ;INCBIN "tb_PT DD 220C730BCF0A330AA109170994081908A4073707CF066D06 DD 1106BA0567051A05D0048B044A040C04D2039B0367033703 DD 0803DD02B4028D026802460225020602E901CE01B4019B01 DD 84016E015A0146013401230112010301F500E700DA00CE00 DD C200B700AD00A3009A009100890082007A0073006D006700 DD 61005C00560052004D004900450041003D003A0036003300 DD 31002E002B00290027002400220020001F001D001B001A00 DD 180017001600140013001200110010000F000E000D000C00ENDIF IF0 .{module+99}-2 ORG tab_frq ;INCBIN "tb_ASM DD 100D550CA40BFC0A5F0ACA093D09B8083B08C5075507EC06 DD 88062A06D2057E052F05E5049E045C041D04E203AB037603 DD 44031503E902BF02980272024F022E020F02F101D501BB01 DD A2018B01740160014C013901280117010701F900EB00DD00 DD D100C500BA00B000A6009D0094008C0084007C0075006F00 DD 690063005D00580053004E004A00460042003E003B003700 DD 340031002F002C00290027002500230021001F001D001C00 DD 1A00190017001600150014001200110010000F000E000D00ENDIF IF0 .{module+99}-3 ORG tab_frq ;INCBIN "tb_REAL DD DA0C220C730BCF0A330AA109170994081908A4073707CF06 DD 6D061106BA0567051A05D0048B044A040C04D2039B036703 DD 37030803DD02B4028D026802460225020602E901CE01B401 DD 9B0184016E015A0146013401230112010301F500E700DA00 DD CE00C200B700AD00A3009A009100890082007A0073006D00 DD 670061005C00560052004D004900450041003D003A003600 DD 330031002E002B00290027002400220020001F001D001B00 DD 1A00180017001600140013001200110010000F000E000D00ENDIF ENDIF DISPLAY "SIZE=",END-compile  ORG #7000 IF0 hrip
DI
shut LD A,#17,(#69A8),A LD DE,tab_frq+#BF LD HL,tab0frq+#8E CALL init CALLER JP 0 LL8df4=$-2 module=#C000 END ELSE END module INCBIN "si*.m" ENDIF ORG tab_frq ;INCBIN "tb_ST DD F80E100E600D800CD80B280B880AF0096009E0085808E007 DD 7C070807B0064006EC0594054405F804B00470042C04FD03 DD BE03840358032003F602CA02A2027C02580238021602F801 DD DF01C201AC0190017B01650151013E012C011C010A01FC00 DD EF00E100D600C800BD00B200A8009F0096008E0085007E00 DD 770070006B0064005E00590054004F004B00470042003F00 DD 3B003800350032002F002C002A0027002500230021001F00 DD 1D001C001A00190017001600150013001200110010000F00 IF0 frq IF0 .{module+99}-0 ORG tab_frq ;INCBIN "tb_PT DD 220C730BCF0A330AA109170994081908A4073707CF066D06 DD 1106BA0567051A05D0048B044A040C04D2039B0367033703 DD 0803DD02B4028D026802460225020602E901CE01B4019B01 DD 84016E015A0146013401230112010301F500E700DA00CE00 DD C200B700AD00A3009A009100890082007A0073006D006700 DD 61005C00560052004D004900450041003D003A0036003300 DD 31002E002B00290027002400220020001F001D001B001A00 DD 180017001600140013001200110010000F000E000D000C00 ENDIF IF0 .{module+99}-2 ORG tab_frq ;INCBIN "tb_ASM DD 100D550CA40BFC0A5F0ACA093D09B8083B08C5075507EC06 DD 88062A06D2057E052F05E5049E045C041D04E203AB037603 DD 44031503E902BF02980272024F022E020F02F101D501BB01 DD A2018B01740160014C013901280117010701F900EB00DD00 DD D100C500BA00B000A6009D0094008C0084007C0075006F00 DD 690063005D00580053004E004A00460042003E003B003700 DD 340031002F002C00290027002500230021001F001D001C00 DD 1A00190017001600150014001200110010000F000E000D00 ENDIF IF0 .{module+99}-3 ORG tab_frq ;INCBIN "tb_REAL DD DA0C220C730BCF0A330AA109170994081908A4073707CF06 DD 6D061106BA0567051A05D0048B044A040C04D2039B036703 DD 37030803DD02B4028D026802460225020602E901CE01B401 DD 9B0184016E015A0146013401230112010301F500E700DA00 DD CE00C200B700AD00A3009A009100890082007A0073006D00 DD 670061005C00560052004D004900450041003D003A003600 DD 330031002E002B00290027002400220020001F001D001B00 DD 1A00180017001600140013001200110010000F000E000D00 ENDIF ENDIF DISPLAY "SIZE=",END-compile ORG #7000 IF0 hrip DI CALL compile play_l EI HALT CALL play LD A,#7F IN A,(-2) RRA JR C,play_l ENDIF shut RET (DE),A INC DE INC HL,HL,HL,HL XOR A LD BC,32 LDIR LD (DE),A LD (IX),A LD HL,#616,(l8FA0+1),HL

Navigation menu