Difference between revisions of "PROTRACKER372 MIC&RC H"
From MSX MUSIC WIKI
(Created page with "mic&rc C��ZY�Z-╚;player mic,rc,hrip SLOW ;todo frq нов.ноты 3xxx считать заранее,ч/з п/п twice=1;перемещаемый модуль и м...") (Tags: Mobile edit, Mobile web edit) |
(Tags: Mobile edit, Mobile web edit) |
||
Line 1: | Line 1: | ||
− | mic&rc C��ZY�Z-╚;player mic,rc,hrip SLOW | + | mic&rc C��ZY�Z-╚ |
− | ;todo frq нов.ноты 3xxx считать заранее,ч/з п/п | + | ;player mic,rc,hrip SLOW |
− | twice=1;перемещаемый модуль и многокр.инициализация | + | ;todo frq нов.ноты 3xxx считать заранее,ч/з п/п |
− | frq=1;all freq tables | + | twice=1;перемещаемый модуль и многокр.инициализация |
− | frqrosh=1;all freq tables(3.4x)by Roshin | + | frq=1;all freq tables |
− | + | frqrosh=1;all freq tables(3.4x)by Roshin | |
− | + | IFN frqrosh | |
− | + | twice=1 | |
− | + | frq=1 | |
− | hrip=0;при hrip=1 ниже включить: | + | ENDIF |
− | smpfix=1;vol,T,E/N cumulations in SMPs | + | hrip=0;при hrip=1 ниже включить: |
− | sld12=1;glisses 1,2 | + | smpfix=1;vol,T,E/N cumulations in SMPs |
− | port3=1;tone port. | + | sld12=1;glisses 1,2 |
− | dsmp4=1;smp.offset | + | port3=1;tone port. |
− | dorn5=1;orn.offset | + | dsmp4=1;smp.offset |
− | vib6=1;vibrate | + | dorn5=1;orn.offset |
− | Esld9A=1;env.gliss | + | vib6=1;vibrate |
− | ts2=0;2nd TS player;играет пат47 вместо пат0 и т.д. | + | Esld9A=1;env.gliss |
− | ;#720..#B3C | + | ts2=0;2nd TS player;играет пат47 вместо пат0 и т.д. |
− | + | ;#720..#B3C | |
− | ornPP ADD A,A | + | MACRO ornsmp |
− | + | ornPP ADD A,A | |
− | smpPP ADD A,tba_smp | + | 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 | |
− | + | ||
− | NPUSH RLA | + | 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 | |
− | OUTER LD B,D | + | OUTI |
− | + | OUTER LD B,D | |
− | + | OUT (C),L | |
− | + | LD B,E | |
− | + | DEC A | |
− | + | JR NZ,OUTER-2 | |
− | + | RET | |
− | + | ENDM | |
− | + | ||
− | NEWF0 DEC E | + | 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 | |
− | NEWFdj DJNZ NEWF0 | + | 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 | |
− | + | ||
− | EiPP LD (Ei_form+1),A | + | 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 | |
− | + | ||
− | IGETHL INC DE | + | MACRO gethl |
− | GETHL EX DE,HL | + | IGETHL INC DE |
− | + | GETHL EX DE,HL | |
− | + | LD E,(HL) | |
− | + | INC HL | |
− | + | LD D,(HL) | |
− | + | INC HL | |
− | + | EX DE,HL | |
− | + | XOR A | |
− | + | RET | |
− | + | ENDM | |
− | + | ||
− | compile LD HL,module+30 | + | IFN hrip |
− | + | compile LD HL,module+30 | |
− | + | JP INIT | |
− | + | JP PLAY | |
− | + | ELSE | |
− | compile | + | ORG #C000 |
− | + | compile | |
− | + | LD HL,module | |
− | + | JR $+5 | |
− | + | JP play | |
− | + | ;DI | |
− | init | + | ENDIF |
− | + | init | |
− | + | IFN twice | |
− | + | LD (ia_pos0+1),HL | |
− | + | PUSH HL | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
IFN frq | 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,HL | ||
+ | OLDfrq 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 | ELSE ;twice=1&frq=0 | ||
− | + | LD BC,100 | |
− | + | ADD HL,BC | |
− | + | POP BC | |
− | + | PUSH HL | |
− | + | INC HL | |
ENDIF | ENDIF | ||
+ | LD (sav_SP0+1),SP | ||
+ | LD SP,HL | ||
ELSE ;twice=0 | ELSE ;twice=0 | ||
− | LD DE, | + | 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 | ||
+ | swaper | ||
+ | NOsWAP | ||
+ | LD BC,module | ||
+ | ELSE ;twice=0&frq=0 | ||
+ | LD B,H,C,L | ||
+ | LD SP,module+101 | ||
ENDIF | ENDIF | ||
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 | ||
+ | ;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 | ||
+ | ELSE ;twice=0 | ||
+ | LD DE,module+100 | ||
+ | eff_tmp l temp+1 | ||
+ | IF0 frq | ||
+ | ornsmp ;16 | ||
+ | eipp ;15 | ||
+ | ENDIF | ||
ENDIF | ENDIF | ||
− | MACRO tabl | + | IF0 Esld9A |
− | + | Eef_sld=0 | |
− | \0ef_slT=0 | + | ENDIF |
− | + | MACRO tabl | |
− | + | IF0 sld12 | |
− | \0ef_nsT=0 | + | \0ef_slT=0 |
− | + | ENDIF | |
− | + | IF0 port3 | |
− | \0ef_dSm=0 | + | \0ef_nsT=0 |
− | + | ENDIF | |
− | + | IF0 dsmp4 | |
− | \0ef_dOr=0 | + | \0ef_dSm=0 |
− | + | ENDIF | |
− | + | IF0 dorn5 | |
− | \0ef_vib=0 | + | \0ef_dOr=0 |
− | + | ENDIF | |
− | \0_eff DW \0ef_slT ;1/2xxx | + | 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 | |
− | outer ;10 | + | ENDIF |
− | npush ;11 | + | ENDM |
− | tabl A | + | IF0 twice |
− | tabl B | + | outer ;10 |
− | tabl C | + | npush ;11 |
− | B_qty=$-6 | + | tabl A |
− | + | tabl B | |
− | tba_smp DS 64 | + | tabl C |
− | tba_orn DS 32 | + | B_qty=$-6 |
− | + | ENDIF | |
− | tab_vol | + | tba_smp DS 64 |
− | frq_A DW 0 | + | tba_orn DS 32 |
− | frq_B DW 0 | + | DISPLAY $ |
− | frq_C DW 0 | + | tab_vol |
− | N_frq DB 0 ;;4 | + | frq_A DW 0 |
− | + | frq_B DW 0 | |
− | vol_A DB 0 | + | frq_C DW 0 |
− | vol_B DB 0 | + | N_frq DB 0 ;;4 |
− | vol_C DB 0 | + | DB 1 ;mix ;no_use |
− | frq_E DW 0 | + | vol_A DB 0 |
− | E_form DB 0 | + | vol_B DB 0 |
− | int_qty DB 1 | + | vol_C DB 0 |
− | A_qty DB 1 | + | frq_E DW 0 |
− | DUMMYORN | + | E_form DB 0 |
− | DUMMYSMP | + | 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 | |
− | tab_frq | + | DD 00010203030405060708090A0A0B0C0D |
− | + | DD 00010203040506070708090A0B0C0D0E | |
− | + | DD 000102030405060708090A0B0C0D0E0F | |
− | tabl A | + | tab_frq |
− | tabl B | + | DS #C0 |
− | tabl C | + | IFN twice |
− | B_qty=$-6 | + | tabl A |
− | + | tabl B | |
− | + | tabl C | |
− | npush ;11 | + | B_qty=$-6 |
− | + | ENDIF | |
− | + | IFN ?NPUSH | |
− | outer ;10 | + | npush ;11 |
− | + | ENDIF | |
− | + | IFN ?OUTER | |
− | ornsmp ;16 | + | outer ;10 |
− | + | ENDIF | |
− | + | IFN ?ornPP | |
− | eipp ;15 | + | ornsmp ;16 |
− | + | ENDIF | |
− | + | IFN ?EiPP | |
− | gethl ;9 | + | eipp ;15 |
− | + | ENDIF | |
− | C_qty=B_qty+1 | + | IFN ?GETHL |
− | play | + | gethl ;9 |
− | LD HL, | + | 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,A_qty | ||
DEC (HL) | 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!!! | |
− | Ach_adr LD DE,tab_vol+16 | + | 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 | |
− | Psa_beg LD HL,module+201 | + | Ps_n1 |
− | + | IFN ts2 | |
− | + | LD A,47*3 | |
− | + | SUB (HL) | |
− | Psa_lop LD HL,module+201 | + | LD E,A |
− | Ps_n1 | + | ELSE |
− | + | LD E,(HL) ;6 | |
− | + | ENDIF | |
− | + | INC HL | |
− | + | LD (Psa_beg+1),HL | |
− | + | ||
− | + | Psa_chn LD HL,0 | |
− | + | ADD HL,DE | |
− | |||
− | |||
− | |||
− | Psa_chn LD HL,0 | ||
ADD HL,DE | ADD HL,DE | ||
− | + | LD SP,HL | |
− | + | POP HL | |
− | + | ia_pos0 LD BC,module | |
− | 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 | |
− | sav_SP2 LD SP,0 | + | Ps_n0 |
− | Ps_n0 | + | CALL An_clc1 |
− | + | LD (Ach_adr+1),DE | |
− | + | Ai_qty LD A,0,(A_qty),A | |
− | Ai_qty LD A,0,(A_qty),A | + | DJNZ Aq_0 |
− | + | LD H,B,L,B | |
− | + | LD (Asl_dsp+1),HL | |
− | + | Aq_0 | |
− | Aq_0 | + | ;--- nota_B --- |
− | ;--- nota_B --- | + | LD HL,B_qty |
− | + | DEC (HL) | |
− | + | JR NZ,Bq_0 | |
− | + | Bch_adr LD DE,0 | |
− | Bch_adr LD DE,0 | + | CALL Bn_clc1 |
− | + | LD (Bch_adr+1),DE | |
− | + | Bi_qty LD A,0,(B_qty),A | |
− | Bi_qty LD A,0,(B_qty),A | + | DJNZ Bq_0 |
− | + | LD H,B,L,B | |
− | + | LD (Bsl_dsp+1),HL | |
− | + | Bq_0 | |
− | Bq_0 | + | ;--- nota_C --- |
− | ;--- nota_C --- | + | LD HL,C_qty |
− | + | DEC (HL) | |
− | + | JR NZ,Cq_0 | |
− | + | Cch_adr LD DE,0 | |
− | Cch_adr LD DE,0 | + | CALL Cn_clc1 |
− | + | LD (Cch_adr+1),DE | |
− | + | Ci_qty LD A,0,(C_qty),A | |
− | Ci_qty LD A,0,(C_qty),A | + | DJNZ Cq_0 |
− | + | LD H,B,L,B | |
− | + | LD (Csl_dsp+1),HL | |
− | + | Cq_0 | |
− | Cq_0 | + | ;--- install_E --- |
− | ;--- install_E --- | + | Ei_form LD A,0 ;env_form |
− | Ei_form LD A,0 ;env_form | + | LD (E_form),A |
− | + | OR A | |
− | + | JR Z,temp | |
− | + | Ei_frq LD HL,0 ;env_frq | |
− | 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 | |
− | temp LD A,3,(int_qty),A | + | NOINS |
− | NOINS | + | play_0 LD L,0 ;smp_sl_env |
− | 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 | EXX | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
ADD A,L | ADD A,L | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
LD L,A | LD L,A | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
EXX | EXX | ||
− | + | \0s_n7 LD A,D | |
− | + | RRCA | |
− | + | RRCA | |
− | ADD A, | + | 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 | ADD HL,DE | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
EX DE,HL | EX DE,HL | ||
− | ADD HL, | + | ADD HL,BC |
− | LD A,(DE) | + | LD (\0sl_dsp+1),HL |
− | LD ( | + | IFN port3 |
− | INC DE | + | JR \0sl_sts ;port off/on |
− | + | \0sl_plk | |
− | ADD A,C | + | \0sl_not LD A,0 |
− | LD C,A | + | LD L,A |
− | + | ADD HL,HL | |
− | + | LD H,'tab_frq | |
− | LD B,A | + | LD SP,HL |
− | PUSH BC | + | POP HL |
− | + | \0s_note CP 0 | |
− | + | JR NC,$+3 | |
− | + | EX DE,HL | |
− | COPF1 PUSH BC | + | 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,(\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 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 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_0-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_2-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 | 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 | |
− | T_ | + | INIT |
− | ;COLD_0 DB #00+1,#04+1,#08+1,#0A+1,#0C+1,#0E+1,#12+1,#14+1 | + | LD (LL8df4),DE |
− | ; DB #18+1,#24+1,#3C+1,0 | + | LD IX,l8FA0 |
− | TCNEW_1 | + | LD DE,l8FA3 ;NAME |
− | TCOLD_1 DB #5C+1,0 | + | LD A,#D |
− | ;COLD_2 DB #30+1,#36+1,#4C+1,#52+1,#5E+1,#70+1,#82,#8C,#9C | + | LD BC,32 |
− | ; DB #9E,#A0,#A6,#A8,#AA,#AC,#AE,#AE,0 | + | LDIR |
− | TCNEW_3 DB #56+1 | + | LD (DE),A |
− | TCOLD_3 DB #1E+1,#22+1,#24+1,#28+1,#2C+1,#2E+1,#32+1,#BE+1,0 | + | INC DE |
− | TCNEW_0 DB #1C+1,#20+1,#22+1,#26+1,#2A+1,#2C+1,#30+1,#54+1 | + | INC HL,HL,HL,HL |
− | + | XOR A | |
− | TCNEW_2 DB #1A+1,#20+1,#24+1,#28+1,#2A+1,#3A+1,#4C+1,#5E+1 | + | LD BC,32 |
− | + | LDIR | |
− | + | LD (DE),A | |
− | ;first 12 values of tone tables | + | LD (IX),A |
− | + | LD HL,#616,(l8FA0+1),HL | |
− | T_NEW_1 | + | CALL CALLER |
− | T_OLD_1 DW #0EF8*2,#0E10*2,#0D60*2,#0C80*2,#0BD8*2,#0B28*2 | + | LD HL,#010,(l8FA0+1),HL |
− | + | LD HL,l8FA3 | |
− | ;_OLD_2 DW #0D3E*2,#0C80*2,#0BCC*2,#0B22*2,#0A82*2,#09EC*2 | + | LD A,3 |
− | ; DW #095C*2,#08D6*2,#0858*2,#07E0*2,#076E*2,#0704*2 | + | LL8e09 LD B,#F |
− | T_NEW_3 | + | LD (HL),#7F |
− | T_OLD_3 DW #0CDA*2,#0C22*2,#0B73*2,#0ACF*2,#0A33*2,#09A1*2 | + | INC HL |
− | + | DJNZ $-3 | |
− | T_OLD_0=T_OLD_3+2 | + | LD (HL),#D |
− | T_NEW_0=T_OLD_3+2 | + | INC HL |
− | + | DEC A | |
− | T_NEW_2 DW #0D10*2,#0C55*2,#0BA4*2,#0AFC*2,#0A5F*2,#09CA*2 | + | JR NZ,LL8e09 |
− | + | LD (HL),A | |
− | |||
− | |||
− | |||
− | l8FA0=#8FA0 | ||
− | l8FA3=#8FA3 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | LL8d9e LD BC,#FFFD | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | LL8dad LD (HL),7 | ||
− | |||
− | |||
− | LL8db2 | ||
− | |||
− | |||
− | |||
− | LL8dba LD (HL),0 | ||
− | |||
− | |||
− | |||
− | |||
− | INIT | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | LL8e09 LD B,#F | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
DI | DI | ||
− | CALL compile | + | shut |
− | play_l EI | + | 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 |
Latest revision as of 20:02, 8 March 2020
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,HL OLDfrq 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 swaper NOsWAP 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_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 ;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 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,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 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 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 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,(\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 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 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_0-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_2-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 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