|
|
| version 1.1, 2003/10/16 17:58:03 | version 1.5, 2003/10/20 12:08:01 |
|---|---|
| Line 1 | Line 1 |
| #include "compiler.h" | #include "compiler.h" |
| #include "i286.h" | |
| #include "pccore.h" | #include "pccore.h" |
| #include "iocore.h" | #include "iocore.h" |
| #include "sound.h" | #include "sound.h" |
| Line 22 void beep_setvol(UINT vol) { | Line 23 void beep_setvol(UINT vol) { |
| beepcfg.vol = vol & 3; | beepcfg.vol = vol & 3; |
| } | } |
| void beep_changeclock(void) { | |
| UINT32 hz; | |
| UINT rate; | |
| hz = pc.realclock / 25; | |
| rate = beepcfg.rate / 25; | |
| beepcfg.samplebase = (1 << 16) * rate / hz; | |
| } | |
| void beep_reset(void) { | void beep_reset(void) { |
| beep_changeclock(); | |
| ZeroMemory(&beep, sizeof(beep)); | ZeroMemory(&beep, sizeof(beep)); |
| beep.mode = 1; | beep.mode = 1; |
| } | } |
| Line 63 static void beep_eventset(void) { | Line 75 static void beep_eventset(void) { |
| BPEVENT *evt; | BPEVENT *evt; |
| int enable; | int enable; |
| int clock; | SINT32 clock; |
| enable = beep.low & beep.buz; | enable = beep.low & beep.buz; |
| if (beep.enable != enable) { | if (beep.enable != enable) { |
| beep.enable = enable; | beep.enable = enable; |
| if (beep.events < BEEPEVENT_MAX) { | if (beep.events < BEEPEVENT_MAX) { |
| clock = nevent.clock + nevent.baseclock - nevent.remainclock; | clock = I286_CLOCK + I286_BASECLOCK - I286_REMCLOCK; |
| evt = beep.event + beep.events; | evt = beep.event + beep.events; |
| beep.events++; | beep.events++; |
| evt->clock = clock - beep.clock; | evt->clock = (clock - beep.clock) * beepcfg.samplebase; |
| evt->enable = enable; | evt->enable = enable; |
| beep.clock = clock; | beep.clock = clock; |
| } | } |
| Line 84 void beep_eventinit(void) { | Line 96 void beep_eventinit(void) { |
| beep.low = 0; | beep.low = 0; |
| beep.enable = 0; | beep.enable = 0; |
| beep.lastenable = 0; | beep.lastenable = 0; |
| beep.clock = dsound_lastclock; | beep.clock = soundcfg.lastclock; |
| // nevent.clock + nevent.baseclock - nevent.remainclock; | // nevent.clock + nevent.baseclock - nevent.remainclock; |
| beep.events = 0; | beep.events = 0; |
| } | } |
| Line 92 void beep_eventinit(void) { | Line 104 void beep_eventinit(void) { |
| void beep_eventreset(void) { | void beep_eventreset(void) { |
| beep.lastenable = beep.enable; | beep.lastenable = beep.enable; |
| beep.clock = dsound_lastclock; | beep.clock = soundcfg.lastclock; |
| beep.events = 0; | beep.events = 0; |
| } | } |
| Line 102 void beep_lheventset(int low) { | Line 114 void beep_lheventset(int low) { |
| if (beep.low != low) { | if (beep.low != low) { |
| beep.low = low; | beep.low = low; |
| if (!beep.mode) { | if (!beep.mode) { |
| // if ((low) && (beep.events >= (BEEPEVENT_MAX / 2))) { | if (beep.events >= (BEEPEVENT_MAX / 2)) { |
| sound_sync(); | sound_sync(); |
| // } | } |
| beep_eventset(); | beep_eventset(); |
| } | } |
| } | } |