From 5da7de098ebec977bdb5a9f90b07dedd611437a1 Mon Sep 17 00:00:00 2001 From: SarahW Date: Mon, 9 May 2016 20:11:03 +0100 Subject: [PATCH] Tweaks to PC speaker code - fixes sound in Castle Wolfenstein. --- src/sound_speaker.c | 38 +++++++++++++++++--------------------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/src/sound_speaker.c b/src/sound_speaker.c index cb19821..d46d3ea 100644 --- a/src/sound_speaker.c +++ b/src/sound_speaker.c @@ -16,29 +16,25 @@ void speaker_update() int16_t val; // printf("SPeaker - %i %i %i %02X\n",speakval,gated,speakon,pit.m[2]); - if (speaker_gated && was_speaker_enable) - { - if (!pit.m[2] || pit.m[2]==4) - val = speakval; - else if (pit.l[2] < 0x40) - val = 0xa00; - else - val = speakon ? 0x1400 : 0; - } - else - val = was_speaker_enable ? 0x1400 : 0; - - if (!speaker_enable) - was_speaker_enable = 0; - - if (speaker_pos != sound_pos_global) - speaker_buffer[speaker_pos] = val; - - if (!speaker_gated) - val = 0; - for (; speaker_pos < sound_pos_global; speaker_pos++) + { + if (speaker_gated && was_speaker_enable) + { + if (!pit.m[2] || pit.m[2]==4) + val = speakval; + else if (pit.l[2] < 0x40) + val = 0xa00; + else + val = speakon ? 0x1400 : 0; + } + else + val = was_speaker_enable ? 0x1400 : 0; + + if (!speaker_enable) + was_speaker_enable = 0; + speaker_buffer[speaker_pos] = val; + } } static void speaker_get_buffer(int16_t *buffer, int len, void *p)