|
|
| version 1.3, 2004/08/05 11:30:12 | version 1.7, 2008/06/02 20:07:31 |
|---|---|
| Line 2 | Line 2 |
| #include "joymng.h" | #include "joymng.h" |
| #include "pccore.h" | #include "pccore.h" |
| #include "iocore.h" | #include "iocore.h" |
| #include "sndctrl.h" | |
| #include "keystat.h" | #include "keystat.h" |
| #include "sound.h" | |
| #include "sndctrl.h" | |
| #include "x1f.h" | #include "x1f.h" |
| #if defined(SUPPORT_TURBOZ) || defined(SUPPORT_OPM) | |
| void IOOUTCALL opm_o(UINT port, REG8 dat) { | void IOOUTCALL opm_o(UINT port, REG8 dat) { |
| REG8 lsb; | REG8 lsb; |
| REG8 reg; | REG8 reg; |
| lsb = (UINT8)port; | lsb = (UINT8)port; |
| if (lsb == 0x00) { // 0700 | if (lsb == 0x00) { /* 0700 */ |
| sndboard.opmreg = (UINT8)dat; | sndboard.opmreg = (UINT8)dat; |
| } | } |
| else if (lsb == 0x01) { // 0701 | else if (lsb == 0x01) { /* 0701 */ |
| reg = sndboard.opmreg; | reg = sndboard.opmreg; |
| sndboard.opmdat[reg] = dat; | sndboard.opmdat[reg] = dat; |
| x1f_opm(reg, dat); | x1f_opm(reg, dat); |
| #if !defined(DISABLE_SOUND) | |
| opmgen_setreg(reg, dat); | opmgen_setreg(reg, dat); |
| #endif | |
| } | } |
| else if ((lsb & (~3)) == 0x04) { // 0704-0707 | else if ((lsb & (~3)) == 0x04) { /* 0704-0707 */ |
| ctc_o(port, dat); | ctc_o(port, dat); |
| } | } |
| } | } |
| Line 32 REG8 IOINPCALL opm_i(UINT port) { | Line 36 REG8 IOINPCALL opm_i(UINT port) { |
| REG8 lsb; | REG8 lsb; |
| lsb = (UINT8)port; | lsb = (UINT8)port; |
| if ((lsb & (~1)) == 0x00) { // 0700/0701 | if ((lsb & (~1)) == 0x00) { /* 0700/0701 */ |
| return(0x00); // ゼリアード | return(0x00); /* ゼリアード */ |
| } | } |
| else if ((lsb & (~3)) == 0x04) { // 0704-0707 | else if ((lsb & (~3)) == 0x04) { /* 0704-0707 */ |
| return(ctc_i(port)); | return(ctc_i(port)); |
| } | } |
| else { | else { |
| return(0xff); | return(0xff); |
| } | } |
| } | } |
| #endif | |
| void IOOUTCALL sndboard_psgreg(UINT port, REG8 dat) { | void IOOUTCALL sndboard_psgreg(UINT port, REG8 dat) { |
| sndboard.psgreg = dat; | sndboard.psgreg = dat; |
| (void)port; | |
| } | } |
| void IOOUTCALL sndboard_psgdat(UINT port, REG8 dat) { | void IOOUTCALL sndboard_psgdat(UINT port, REG8 dat) { |
| Line 57 void IOOUTCALL sndboard_psgdat(UINT port | Line 63 void IOOUTCALL sndboard_psgdat(UINT port |
| if (reg < 0x0e) { | if (reg < 0x0e) { |
| sndboard.psgdat[reg] = dat; | sndboard.psgdat[reg] = dat; |
| x1f_psg(reg, dat); | x1f_psg(reg, dat); |
| #if !defined(DISABLE_SOUND) | |
| psggen_setreg(&psggen, reg, dat); | psggen_setreg(&psggen, reg, dat); |
| #endif | |
| } | } |
| (void)port; | |
| } | } |
| REG8 IOINPCALL sndboard_psgsta(UINT port) { | REG8 IOINPCALL sndboard_psgsta(UINT port) { |
| Line 86 REG8 IOINPCALL sndboard_psgsta(UINT port | Line 95 REG8 IOINPCALL sndboard_psgsta(UINT port |
| return(ret); | return(ret); |
| } | } |
| else { | else { |
| (void)port; | |
| return(0xff); | return(0xff); |
| } | } |
| } | } |
| // ---- | /* reset */ |
| #if !defined(DISABLE_SOUND) | |
| void sndboard_update(void) { | |
| UINT i; | |
| for (i=0; i<14; i++) { | |
| psggen_setreg(&psggen, (REG8)i, sndboard.psgdat[i]); | |
| } | |
| #if defined(SUPPORT_TURBOZ) || defined(SUPPORT_OPM) | |
| for (i=0x20; i<0x100; i++) { | |
| opmgen_setreg((REG8)i, sndboard.opmdat[i]); | |
| } | |
| #endif | |
| } | |
| #endif | |
| void sndboard_reset(void) { | void sndboard_reset(void) { |
| ZeroMemory(&sndboard, sizeof(sndboard)); | ZeroMemory(&sndboard, sizeof(sndboard)); |
| CopyMemory(sndboard.psgdat, psggen_deftbl, sizeof(psggen_deftbl)); | sndboard.psgdat[0x07] = 0x3f; |
| sndctrl_reset(); | sndctrl_reset(); |
| } | } |