Lines Matching refs:CH
351 static void set_algorithm( OPL_CH *CH) in set_algorithm() argument
354 CH->connect1 = CH->CON ? carrier : &feedback2; in set_algorithm()
355 CH->connect2 = carrier; in set_algorithm()
359 static inline void CALC_FCSLOT(OPL_CH *CH,OPL_SLOT *SLOT) in CALC_FCSLOT() argument
364 SLOT->Incr = CH->fc * SLOT->mul; in CALC_FCSLOT()
365 ksr = CH->kcode >> SLOT->KSR; in CALC_FCSLOT()
375 SLOT->TLL = SLOT->TL + (CH->ksl_base>>SLOT->ksl); in CALC_FCSLOT()
381 OPL_CH *CH = &OPL->P_CH[slot/2]; in set_mul() local
382 OPL_SLOT *SLOT = &CH->SLOT[slot&1]; in set_mul()
389 CALC_FCSLOT(CH,SLOT); in set_mul()
395 OPL_CH *CH = &OPL->P_CH[slot/2]; in set_ksl_tl() local
396 OPL_SLOT *SLOT = &CH->SLOT[slot&1]; in set_ksl_tl()
404 SLOT->TLL = SLOT->TL + (CH->ksl_base>>SLOT->ksl); in set_ksl_tl()
411 OPL_CH *CH = &OPL->P_CH[slot/2]; in set_ar_dr() local
412 OPL_SLOT *SLOT = &CH->SLOT[slot&1]; in set_ar_dr()
428 OPL_CH *CH = &OPL->P_CH[slot/2]; in set_sl_rr() local
429 OPL_SLOT *SLOT = &CH->SLOT[slot&1]; in set_sl_rr()
443 static inline void OPL_CALC_CH( OPL_CH *CH ) in OPL_CALC_CH() argument
450 SLOT = &CH->SLOT[SLOT1]; in OPL_CALC_CH()
458 if(CH->FB) in OPL_CALC_CH()
460 int feedback1 = (CH->op1_out[0]+CH->op1_out[1])>>CH->FB; in OPL_CALC_CH()
461 CH->op1_out[1] = CH->op1_out[0]; in OPL_CALC_CH()
462 *CH->connect1 += CH->op1_out[0] = OP_OUT(SLOT,env_out,feedback1); in OPL_CALC_CH()
466 *CH->connect1 += OP_OUT(SLOT,env_out,0); in OPL_CALC_CH()
470 CH->op1_out[1] = CH->op1_out[0]; in OPL_CALC_CH()
471 CH->op1_out[0] = 0; in OPL_CALC_CH()
474 SLOT = &CH->SLOT[SLOT2]; in OPL_CALC_CH()
488 static inline void OPL_CALC_RH( OPL_CH *CH ) in OPL_CALC_RH() argument
500 SLOT = &CH[6].SLOT[SLOT1]; in OPL_CALC_RH()
508 if(CH[6].FB) in OPL_CALC_RH()
510 int feedback1 = (CH[6].op1_out[0]+CH[6].op1_out[1])>>CH[6].FB; in OPL_CALC_RH()
511 CH[6].op1_out[1] = CH[6].op1_out[0]; in OPL_CALC_RH()
512 feedback2 = CH[6].op1_out[0] = OP_OUT(SLOT,env_out,feedback1); in OPL_CALC_RH()
521 CH[6].op1_out[1] = CH[6].op1_out[0]; in OPL_CALC_RH()
522 CH[6].op1_out[0] = 0; in OPL_CALC_RH()
525 SLOT = &CH[6].SLOT[SLOT2]; in OPL_CALC_RH()
548 if(SLOT7_2->vib) SLOT7_2->Cnt += ((CH[7].fc*8)*vib/VIB_RATE); in OPL_CALC_RH()
549 else SLOT7_2->Cnt += (CH[7].fc*8); in OPL_CALC_RH()
552 if(SLOT8_2->vib) SLOT8_2->Cnt += ((CH[8].fc*48)*vib/VIB_RATE); in OPL_CALC_RH()
553 else SLOT8_2->Cnt += (CH[8].fc*48); in OPL_CALC_RH()
706 static inline void CSMKeyControll(OPL_CH *CH) in CSMKeyControll() argument
708 OPL_SLOT *slot1 = &CH->SLOT[SLOT1]; in CSMKeyControll()
709 OPL_SLOT *slot2 = &CH->SLOT[SLOT2]; in CSMKeyControll()
714 slot1->TLL = slot1->TL + (CH->ksl_base>>slot1->ksl); in CSMKeyControll()
715 slot1->TLL = slot1->TL + (CH->ksl_base>>slot1->ksl); in CSMKeyControll()
717 CH->op1_out[0] = CH->op1_out[1] = 0; in CSMKeyControll()
746 OPL_CH *CH; in OPLWriteReg() local
888 CH = &OPL->P_CH[r&0x0f]; in OPLWriteReg()
891 block_fnum = (CH->block_fnum&0x1f00) | v; in OPLWriteReg()
896 block_fnum = ((v&0x1f)<<8) | (CH->block_fnum&0xff); in OPLWriteReg()
897 if(CH->keyon != keyon) in OPLWriteReg()
899 if( (CH->keyon=keyon) ) in OPLWriteReg()
901 CH->op1_out[0] = CH->op1_out[1] = 0; in OPLWriteReg()
902 OPL_KEYON(&CH->SLOT[SLOT1]); in OPLWriteReg()
903 OPL_KEYON(&CH->SLOT[SLOT2]); in OPLWriteReg()
907 OPL_KEYOFF(&CH->SLOT[SLOT1]); in OPLWriteReg()
908 OPL_KEYOFF(&CH->SLOT[SLOT2]); in OPLWriteReg()
913 if(CH->block_fnum != block_fnum) in OPLWriteReg()
917 CH->block_fnum = block_fnum; in OPLWriteReg()
919 CH->ksl_base = KSL_TABLE[block_fnum>>6]; in OPLWriteReg()
920 CH->fc = OPL->FN_TABLE[fnum]>>blockRv; in OPLWriteReg()
921 CH->kcode = CH->block_fnum>>9; in OPLWriteReg()
922 if( (OPL->mode&0x40) && CH->block_fnum&0x100) CH->kcode |=1; in OPLWriteReg()
923 CALC_FCSLOT(CH,&CH->SLOT[SLOT1]); in OPLWriteReg()
924 CALC_FCSLOT(CH,&CH->SLOT[SLOT2]); in OPLWriteReg()
930 CH = &OPL->P_CH[r&0x0f]; in OPLWriteReg()
933 CH->FB = feedback ? (8+1) - feedback : 0; in OPLWriteReg()
934 CH->CON = v&1; in OPLWriteReg()
935 set_algorithm(CH); in OPLWriteReg()
941 CH = &OPL->P_CH[slot/2]; in OPLWriteReg()
945 CH->SLOT[slot&1].wavetable = &SIN_TABLE[(v&0x03)*SIN_ENT]; in OPLWriteReg()
989 OPL_CH *CH,*R_CH; in YM3812UpdateOne() local
1016 for(CH=S_CH ; CH < R_CH ; CH++) in YM3812UpdateOne()
1017 OPL_CALC_CH(CH); in YM3812UpdateOne()
1057 OPL_CH *CH = &OPL->P_CH[c]; in OPLResetChip() local
1062 CH->SLOT[s].wavetable = &SIN_TABLE[0]; in OPLResetChip()
1064 CH->SLOT[s].evc = EG_OFF; in OPLResetChip()
1065 CH->SLOT[s].eve = EG_OFF+1; in OPLResetChip()
1066 CH->SLOT[s].evs = 0; in OPLResetChip()