//static DEVICE_RESET( okim6258 ) private void device_reset_okim6258(byte ChipID) { //okim6258_state *info = get_safe_token(device); okim6258_state info = OKIM6258Data[ChipID]; //stream_update(info->stream); info.master_clock = info.initial_clock; info.clock_buffer[0x00] = (byte)((info.initial_clock & 0x000000FF) >> 0); info.clock_buffer[0x01] = (byte)((info.initial_clock & 0x0000FF00) >> 8); info.clock_buffer[0x02] = (byte)((info.initial_clock & 0x00FF0000) >> 16); info.clock_buffer[0x03] = (byte)((info.initial_clock & 0xFF000000) >> 24); info.divider = (uint)dividers[info.initial_div]; if (info.SmpRateFunc != null) { info.SmpRateFunc(info.SmpRateData, get_vclk(info)); //Console.WriteLine("passed"); } info.signal = -2; info.step = 0; info.status = 0; // Valley Bell: Added reset of the Data In register. info.data_in = 0x00; info.data_buf[0] = info.data_buf[1] = 0x00; info.data_buf_pos = 0x00; info.data_empty = 0xFF; info.pan = 0x00; }
/********************************************************************************************** * * okim6258_set_divider -- set the master clock divider * ***********************************************************************************************/ //void okim6258_set_divider(running_device *device, int val) private void okim6258_set_divider(byte ChipID, int val) { //okim6258_state *info = get_safe_token(device); okim6258_state info = OKIM6258Data[ChipID]; int divider = dividers[val]; info.divider = (uint)dividers[val]; //stream_set_sample_rate(info->stream, info->master_clock / divider); if (info.SmpRateFunc != null) { info.SmpRateFunc(info.SmpRateData, get_vclk(info)); } }
/********************************************************************************************** * * okim6258_set_clock -- set the master clock * ***********************************************************************************************/ //void okim6258_set_clock(running_device *device, int val) private void okim6258_set_clock(byte ChipID, int val) { //okim6258_state *info = get_safe_token(device); okim6258_state info = OKIM6258Data[ChipID]; if (val != 0) { info.master_clock = (uint)val; } else { info.master_clock = (uint)((info.clock_buffer[0x00] << 0) | (info.clock_buffer[0x01] << 8) | (info.clock_buffer[0x02] << 16) | (info.clock_buffer[0x03] << 24)); } //stream_set_sample_rate(info->stream, info->master_clock / info->divider); if (info.SmpRateFunc != null) { info.SmpRateFunc(info.SmpRateData, get_vclk(info)); } }