First post, by Electronic Genets
I found differences in many emulators of OPL2/OPL3 drums.
wrote:[…]
//Snare DrumBit32u sdVol = Op(3)->ForwardVolume(); // it is operator 16if ( !ENV_SILENT( sdVol ) ) {Bit32u sdIndex = ( 0x100 + (c2 & 0x100) ) ^ ( noiseBit << 8 );sample += Op(3)->GetWave( sdIndex, sdVol ); // it is also operator 16}
wrote:[…]
/* Snare Drum (verified on real YM3812) */env = volume_calc(SLOT7_2); // it is operator 16if( env < ENV_QUIET ){/* base frequency derived from operator 1 in channel 7 */unsigned char bit8 = ((SLOT7_1->Cnt>>FREQ_SH)>>8)&1; // it is operator 13/* when bit8 = 0 phase = 0x100; *//* when bit8 = 1 phase = 0x200; */UINT32 phase = bit8 ? 0x200 : 0x100;/* Noise bit XOR'es phase by 0x100 *//* when noisebit = 0 pass the phase from calculation above *//* when noisebit = 1 phase ^= 0x100; *//* in other words: phase ^= (noisebit<<8); */if (noise)phase ^= 0x100;output[0] += op_calc(phase<<FREQ_SH, env, 0, SLOT7_2->wavetable) * 2;}
Where is the truth? Does the Dosbox emulator wrongly emulates the Snare Drum or the code marked as "verified on real YM3812"? I know that the multiplier of 13 and 16 operator will be set both to 1 these two codes will generate the same effect... Can anyone please check Snare Drum with different multipliers for operator 13 and 16 on real OPL2/OPL3? There is used operator 13 or 16 for Phase Generator of Snare Drum?
I have no sound card with OPL to check it.
Author of the DINO-2e OPL2-like emulator.
DINO-2e is not OPL2 emulator.
