コード例 #1
0
ファイル: okim6258.cs プロジェクト: knight-ryu12/MDSound
        //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;
        }
コード例 #2
0
ファイル: okim6258.cs プロジェクト: knight-ryu12/MDSound
        /**********************************************************************************************
         *
         *   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));
            }
        }
コード例 #3
0
ファイル: okim6258.cs プロジェクト: knight-ryu12/MDSound
        /**********************************************************************************************
         *
         *   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));
            }
        }