Example #1
0
        private static void APUUpdatePlayback()
        {
            audio_playback_blipbuffer_timer++;
            if (audio_playback_sample_needed)
            {
                audio_playback_sample_needed = false;
                if (!audio_playback_sq1_enabled)
                {
                    sq1_pl_output = 0;
                }
                if (!audio_playback_sq2_enabled)
                {
                    sq2_pl_output = 0;
                }
                if (!audio_playback_dmc_enabled)
                {
                    dmc_pl_output = 0;
                }
                if (!audio_playback_trl_enabled)
                {
                    trl_pl_output = 0;
                }
                if (!audio_playback_noz_enabled)
                {
                    noz_pl_output = 0;
                }
                // Collect the sample
                x = (dac_table[sq1_pl_output][sq2_pl_output][trl_pl_output][noz_pl_output][dmc_pl_output] +
                     (board.enable_external_sound ? board.APUGetSamples() : 0)) * audio_playback_amplitude;

                // Add delta to the blip-buffer
                if (x != x_1)
                {
                    audio_playback_blipbuffer.AddDelta(audio_playback_blipbuffer_timer, (int)(x - x_1));
                    x_1 = x;
                }
            }
        }