void mos6581_device::device_start() { // resolve callbacks m_read_potx.resolve_safe(0xff); m_read_poty.resolve_safe(0xff); // create sound stream m_stream = machine().sound().stream_alloc(*this, 0, 1, machine().sample_rate()); // initialize SID engine m_token->device = this; m_token->mixer_channel = m_stream; m_token->PCMfreq = machine().sample_rate(); m_token->clock = clock(); m_token->type = m_variant; sid6581_init(m_token); sidInitWaveformTables(m_variant); }
void sid6581_init (_SID6581 *This) { This->optr1.sid=This; This->optr2.sid=This; This->optr3.sid=This; This->optr1.modulator = &This->optr3; This->optr3.carrier = &This->optr1; This->optr1.filtVoiceMask = 1; This->optr2.modulator = &This->optr1; This->optr1.carrier = &This->optr2; This->optr2.filtVoiceMask = 2; This->optr3.modulator = &This->optr2; This->optr2.carrier = &This->optr3; This->optr3.filtVoiceMask = 4; This->PCMsid = (UINT32)(This->PCMfreq * (16777216.0 / This->clock)); This->PCMsidNoise = (UINT32)((This->clock*256.0)/This->PCMfreq); This->filter.Enabled = TRUE; sidInitMixerEngine(This->device->machine); filterTableInit(This->device->machine); sidInitWaveformTables(This->type); enveEmuInit(This->PCMfreq, TRUE); MixerInit(0); sidEmuReset(This); }