INLINE int tone4(pleiads_sound_state *state, int samplerate) { int level = update_c_pc4(state, samplerate); int vpc5 = update_c_pc5(state, samplerate); int vpa5 = update_c_pa5(state, samplerate); int sum; /* Two resistors divide the output voltage of the op-amp between * polybit = 0: 0V and level: x * opamp_resistor / (opamp_resistor + polybit_resistor) * polybit = 1: level and 5V: x * polybit_resistor / (opamp_resistor + polybit_resistor) */ if (state->m_polybit) level = level + (VMAX - level) * state->m_opamp_resistor / (state->m_opamp_resistor + state->m_polybit_resistor); else level = level * state->m_polybit_resistor / (state->m_opamp_resistor + state->m_polybit_resistor); state->m_tone4.counter -= state->m_tone4.max_freq * level / 32768; if( state->m_tone4.counter <= 0 ) { int n = (-state->m_tone4.counter / samplerate) + 1; state->m_tone4.counter += n * samplerate; state->m_tone4.output = (state->m_tone4.output + n) & 1; } /* mix the two signals */ sum = vpc5 * state->m_pa5_resistor / (state->m_pa5_resistor + state->m_pc5_resistor) + vpa5 * state->m_pc5_resistor / (state->m_pa5_resistor + state->m_pc5_resistor); return (state->m_tone4.output) ? sum : -sum; }
inline int pleiads_sound_device::tone4(int samplerate) { int level = update_c_pc4(samplerate); int vpc5 = update_c_pc5(samplerate); int vpa5 = update_c_pa5(samplerate); int sum = 0; /* Two resistors divide the output voltage of the op-amp between * polybit = 0: 0V and level: x * opamp_resistor / (opamp_resistor + polybit_resistor) * polybit = 1: level and 5V: x * polybit_resistor / (opamp_resistor + polybit_resistor) */ if (m_polybit) level = level + (VMAX - level) * m_opamp_resistor / (m_opamp_resistor + m_polybit_resistor); else level = level * m_polybit_resistor / (m_opamp_resistor + m_polybit_resistor); m_tone4.counter -= m_tone4.max_freq * level / 32768; if( m_tone4.counter <= 0 ) { int n = (-m_tone4.counter / samplerate) + 1; m_tone4.counter += n * samplerate; m_tone4.output = (m_tone4.output + n) & 1; } /* mix the two signals */ sum = vpc5 * m_pa5_resistor / (m_pa5_resistor + m_pc5_resistor) + vpa5 * m_pc5_resistor / (m_pa5_resistor + m_pc5_resistor); return (m_tone4.output) ? sum : -sum; }
INLINE int tone4(int samplerate) { static int counter, output; int level = update_c_pc4(samplerate); int vpc5 = update_c_pc5(samplerate); int vpa5 = update_c_pa5(samplerate); int sum; /* Two resistors divide the output voltage of the op-amp between * polybit = 0: 0V and level: x * opamp_resistor / (opamp_resistor + polybit_resistor) * polybit = 1: level and 5V: x * polybit_resistor / (opamp_resistor + polybit_resistor) */ if (polybit) level = level + (VMAX - level) * opamp_resistor / (opamp_resistor + polybit_resistor); else level = level * polybit_resistor / (opamp_resistor + polybit_resistor); counter -= tone4_max_freq * level / 32768; if( counter <= 0 ) { int n = (-counter / samplerate) + 1; counter += n * samplerate; output = (output + n) & 1; } /* mix the two signals */ sum = vpc5 * pa5_resistor / (pa5_resistor + pc5_resistor) + vpa5 * pc5_resistor / (pa5_resistor + pc5_resistor); return (output) ? sum : -sum; }