void cdp1864_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) { // reset the output stream memset(outputs[0], 0, samples * sizeof(*outputs[0])); INT16 signal = m_signal; stream_sample_t *buffer = outputs[0]; memset( buffer, 0, samples * sizeof(*buffer) ); if (m_aoe) { double frequency = unscaled_clock() / 8 / 4 / (m_latch + 1) / 2; int rate = machine().sample_rate() / 2; /* get progress through wave */ int incr = m_incr; if (signal < 0) { signal = -0x7fff; } else { signal = 0x7fff; } while( samples-- > 0 ) { *buffer++ = signal; incr -= frequency; while( incr < 0 ) { incr += rate; signal = -signal; } } /* store progress through wave */ m_incr = incr; m_signal = signal; } }
void m58846_device::reset_timer() { attotime base = attotime::from_ticks(6, unscaled_clock()); m_timer->adjust(base); }