--- np2/sound/beepc.c 2003/10/16 17:58:03 1.1.1.1 +++ np2/sound/beepc.c 2003/10/20 06:36:33 1.4 @@ -1,4 +1,5 @@ #include "compiler.h" +#include "i286.h" #include "pccore.h" #include "iocore.h" #include "sound.h" @@ -24,10 +25,18 @@ void beep_setvol(UINT vol) { void beep_reset(void) { + if (beepcfg.rate) { + beepcfg.sampleclock = (pc.realclock / beepcfg.rate); +// TRACEOUT(("%d %d", pc.realclock, beepcfg.rate)); + } + else { + beepcfg.sampleclock = 0; + } ZeroMemory(&beep, sizeof(beep)); beep.mode = 1; } + void beep_hzset(UINT16 cnt) { double hz; @@ -63,18 +72,19 @@ static void beep_eventset(void) { BPEVENT *evt; int enable; - int clock; + SINT32 clock; enable = beep.low & beep.buz; if (beep.enable != enable) { beep.enable = enable; if (beep.events < BEEPEVENT_MAX) { - clock = nevent.clock + nevent.baseclock - nevent.remainclock; + clock = I286_CLOCK + I286_BASECLOCK - I286_REMCLOCK; evt = beep.event + beep.events; beep.events++; evt->clock = clock - beep.clock; evt->enable = enable; beep.clock = clock; +// TRACEOUT(("%d %d", evt->clock, evt->enable)); } } } @@ -84,7 +94,7 @@ void beep_eventinit(void) { beep.low = 0; beep.enable = 0; beep.lastenable = 0; - beep.clock = dsound_lastclock; + beep.clock = soundcfg.lastclock; // nevent.clock + nevent.baseclock - nevent.remainclock; beep.events = 0; } @@ -92,7 +102,7 @@ void beep_eventinit(void) { void beep_eventreset(void) { beep.lastenable = beep.enable; - beep.clock = dsound_lastclock; + beep.clock = soundcfg.lastclock; beep.events = 0; } @@ -102,9 +112,9 @@ void beep_lheventset(int low) { if (beep.low != low) { beep.low = low; if (!beep.mode) { -// if ((low) && (beep.events >= (BEEPEVENT_MAX / 2))) { + if (beep.events >= (BEEPEVENT_MAX / 2)) { sound_sync(); -// } + } beep_eventset(); } }