|
|
| version 1.3, 2003/10/19 16:54:51 | version 1.6, 2003/12/08 00:55:33 |
|---|---|
| Line 1 | Line 1 |
| #include "compiler.h" | #include "compiler.h" |
| #include "i286.h" | #include "cpucore.h" |
| #include "pccore.h" | #include "pccore.h" |
| #include "iocore.h" | #include "iocore.h" |
| #include "sound.h" | #include "sound.h" |
| Line 23 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) { |
| if (beepcfg.rate) { | beep_changeclock(); |
| beepcfg.sampleclock = (pc.realclock / beepcfg.rate); | |
| // TRACEOUT(("%d %d", pc.realclock, beepcfg.rate)); | |
| } | |
| else { | |
| beepcfg.sampleclock = 0; | |
| } | |
| ZeroMemory(&beep, sizeof(beep)); | ZeroMemory(&beep, sizeof(beep)); |
| beep.mode = 1; | beep.mode = 1; |
| } | } |
| void beep_hzset(UINT16 cnt) { | void beep_hzset(UINT16 cnt) { |
| double hz; | double hz; |
| Line 78 static void beep_eventset(void) { | Line 81 static void beep_eventset(void) { |
| 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 = I286_CLOCK + I286_BASECLOCK - I286_REMCLOCK; | clock = CPU_CLOCK + CPU_BASECLOCK - CPU_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; |
| // TRACEOUT(("%d %d", evt->clock, evt->enable)); | |
| } | } |
| } | } |
| } | } |
| Line 94 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 102 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; |
| } | } |