1,345
edits
Changes
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
ELSE ;twice=1&frq=0
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)
ADD HL,DE
EXX
ADD A,L
LD L,A
EXX
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,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
ADC A,D
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