|
|
| version 1.9, 2004/07/03 17:25:39 | version 1.11, 2005/02/07 14:46:12 |
|---|---|
| Line 1 | Line 1 |
| #include "compiler.h" | #include "compiler.h" |
| #include "dosio.h" | |
| #include "cpucore.h" | #include "cpucore.h" |
| #include "pccore.h" | #include "pccore.h" |
| #include "iocore.h" | #include "iocore.h" |
| Line 11 | Line 12 |
| BEEPCFG beepcfg; | BEEPCFG beepcfg; |
| // #define BEEPLOG | |
| #if defined(BEEPLOG) | |
| static struct { | |
| FILEH fh; | |
| UINT events; | |
| UINT32 event[0x10000]; | |
| } bplog; | |
| static void beeplogflash(void) { | |
| if ((bplog.fh != FILEH_INVALID) && (bplog.events)) { | |
| file_write(bplog.fh, bplog.event, bplog.events * sizeof(UINT32)); | |
| bplog.events = 0; | |
| } | |
| } | |
| #endif | |
| void beep_initialize(UINT rate) { | void beep_initialize(UINT rate) { |
| beepcfg.rate = rate; | beepcfg.rate = rate; |
| beepcfg.vol = 2; | beepcfg.vol = 2; |
| // beepcfg.puchibase = (rate * 3) / (11025 * 2); | #if defined(BEEPLOG) |
| bplog.fh = file_create("beeplog"); | |
| bplog.events = 0; | |
| #endif | |
| } | |
| void beep_deinitialize(void) { | |
| #if defined(BEEPLOG) | |
| beeplogflash(); | |
| if (bplog.fh != FILEH_INVALID) { | |
| file_close(bplog.fh); | |
| bplog.fh = FILEH_INVALID; | |
| } | |
| #endif | |
| } | } |
| void beep_setvol(UINT vol) { | void beep_setvol(UINT vol) { |
| Line 53 void beep_hzset(UINT16 cnt) { | Line 87 void beep_hzset(UINT16 cnt) { |
| return; | return; |
| } | } |
| } | } |
| // beep.puchi = beepcfg.puchibase; | |
| } | } |
| void beep_modeset(void) { | void beep_modeset(void) { |
| Line 61 void beep_modeset(void) { | Line 94 void beep_modeset(void) { |
| UINT8 newmode; | UINT8 newmode; |
| newmode = (pit.ch[1].ctrl >> 2) & 3; | newmode = (pit.ch[1].ctrl >> 2) & 3; |
| // beep.puchi = beepcfg.puchibase; | |
| if (beep.mode != newmode) { | if (beep.mode != newmode) { |
| sound_sync(); | sound_sync(); |
| beep.mode = newmode; | beep.mode = newmode; |
| #if 1 | |
| beep_eventinit(); | beep_eventinit(); |
| #else | |
| if (!newmode) { // mode:#0, #1 | |
| beep_eventinit(); | |
| } | |
| #endif | |
| } | } |
| } | } |
| Line 81 static void beep_eventset(void) { | Line 107 static void beep_eventset(void) { |
| int enable; | int enable; |
| SINT32 clock; | SINT32 clock; |
| TRACEOUT(("beep.enable = %d %d", beep.low, beep.buz)); | |
| enable = beep.low & beep.buz; | enable = beep.low & beep.buz; |
| if (beep.enable != enable) { | if (beep.enable != enable) { |
| #if defined(BEEPLOG) | |
| UINT32 tmp; | |
| tmp = CPU_CLOCK + CPU_BASECLOCK - CPU_REMCLOCK; | |
| if (enable) { | |
| tmp |= 0x80000000; | |
| } | |
| else { | |
| tmp &= ~0x80000000; | |
| } | |
| bplog.event[bplog.events++] = tmp; | |
| if (bplog.events >= NELEMENTS(bplog.event)) { | |
| beeplogflash(); | |
| } | |
| #endif | |
| if (beep.events >= (BEEPEVENT_MAX / 2)) { | |
| sound_sync(); | |
| } | |
| beep.enable = enable; | beep.enable = enable; |
| if (beep.events < BEEPEVENT_MAX) { | if (beep.events < BEEPEVENT_MAX) { |
| clock = CPU_CLOCK + CPU_BASECLOCK - CPU_REMCLOCK; | clock = CPU_CLOCK + CPU_BASECLOCK - CPU_REMCLOCK; |
| Line 116 void beep_lheventset(int low) { | Line 158 void beep_lheventset(int low) { |
| if (beep.low != low) { | if (beep.low != low) { |
| beep.low = low; | beep.low = low; |
| // if (!beep.mode) { | beep_eventset(); |
| if (beep.events >= (BEEPEVENT_MAX / 2)) { | |
| sound_sync(); | |
| } | |
| beep_eventset(); | |
| // } | |
| } | } |
| } | } |
| Line 130 void beep_oneventset(void) { | Line 167 void beep_oneventset(void) { |
| int buz; | int buz; |
| buz = (sysport.c & 8)?0:1; | buz = (sysport.c & 8)?0:1; |
| if (beep.buz != buz) { | if (beep.buz != buz) { |
| sound_sync(); | |
| beep.buz = buz; | beep.buz = buz; |
| // if (buz) { | |
| // beep.puchi = beepcfg.puchibase; | |
| // } | |
| #if 1 | |
| beep_eventset(); | beep_eventset(); |
| // beep.cnt = 0; | |
| #else | |
| if (!beep.mode) { | |
| beep_eventset(); | |
| } | |
| else { | |
| beep.cnt = 0; | |
| } | |
| #endif | |
| } | } |
| } | } |