public void Mix(int[] buffer, int nsamples, byte regtc) { if (fmvolume <= 0) { return; } this.regtc = regtc; // 準備 // Set F-Number if ((regtc & 0xc0) == 0) { csmch.SetFNum(fnum[2]);// csmch - ch]); } else { // 効果音モード csmch.op[0].SetFNum(fnum3[1]); csmch.op[1].SetFNum(fnum3[2]); csmch.op[2].SetFNum(fnum3[0]); csmch.op[3].SetFNum(fnum[2]); } int act = (((ch[2].Prepare() << 2) | ch[1].Prepare()) << 2) | ch[0].Prepare(); if ((reg29 & 0x80) != 0) { act |= (ch[3].Prepare() | ((ch[4].Prepare() | (ch[5].Prepare() << 2)) << 2)) << 6; } if ((reg22 & 0x08) == 0) { act &= 0x555; } if ((act & 0x555) == 0) { return; } Mix6(buffer, nsamples, act); }