|
|
| version 1.14, 2005/05/13 05:47:25 | version 1.15, 2007/07/20 14:39:11 |
|---|---|
| Line 10 | Line 10 |
| #include "boardx2.h" | #include "boardx2.h" |
| #include "board118.h" | #include "board118.h" |
| #include "boardspb.h" | #include "boardspb.h" |
| #if defined(SUPPORT_PX) | |
| #include "boardpx.h" | |
| #endif // defined(SUPPORT_PX) | |
| #include "amd98.h" | #include "amd98.h" |
| #include "pcm86io.h" | #include "pcm86io.h" |
| #include "cs4231io.h" | #include "cs4231io.h" |
| Line 35 | Line 38 |
| _PCM86 pcm86; | _PCM86 pcm86; |
| _CS4231 cs4231; | _CS4231 cs4231; |
| #if defined(SUPPORT_PX) | |
| OPN_T opn2; | |
| OPN_T opn3; | |
| _RHYTHM rhythm2; | |
| _RHYTHM rhythm3; | |
| _ADPCM adpcm2; | |
| _ADPCM adpcm3; | |
| #endif // defined(SUPPORT_PX) | |
| static void (*extfn)(REG8 enable); | static void (*extfn)(REG8 enable); |
| Line 124 void fmboard_reset(UINT32 type) { | Line 136 void fmboard_reset(UINT32 type) { |
| opn.channels = 3; | opn.channels = 3; |
| opn.adpcmmask = (UINT8)~(0x1c); | opn.adpcmmask = (UINT8)~(0x1c); |
| #if defined(SUPPORT_PX) | |
| ZeroMemory(&opn2, sizeof(opn2)); | |
| setfmregs(opn2.reg + 0x000); | |
| setfmregs(opn2.reg + 0x100); | |
| setfmregs(opn2.reg + 0x200); | |
| setfmregs(opn2.reg + 0x300); | |
| opn2.reg[0xff] = 0x01; | |
| opn2.channels = 3; | |
| opn2.adpcmmask = (UINT8)~(0x1c); | |
| ZeroMemory(&opn3, sizeof(opn3)); | |
| setfmregs(opn3.reg + 0x000); | |
| setfmregs(opn3.reg + 0x100); | |
| setfmregs(opn3.reg + 0x200); | |
| setfmregs(opn3.reg + 0x300); | |
| opn3.reg[0xff] = 0x01; | |
| opn3.channels = 3; | |
| opn3.adpcmmask = (UINT8)~(0x1c); | |
| #endif // defined(SUPPORT_PX) | |
| ZeroMemory(&musicgen, sizeof(musicgen)); | ZeroMemory(&musicgen, sizeof(musicgen)); |
| ZeroMemory(&amd98, sizeof(amd98)); | ZeroMemory(&amd98, sizeof(amd98)); |
| Line 133 void fmboard_reset(UINT32 type) { | Line 165 void fmboard_reset(UINT32 type) { |
| psggen_reset(&psg2); | psggen_reset(&psg2); |
| psggen_reset(&psg3); | psggen_reset(&psg3); |
| rhythm_reset(&rhythm); | rhythm_reset(&rhythm); |
| #if defined(SUPPORT_PX) | |
| rhythm_reset(&rhythm2); | |
| rhythm_reset(&rhythm3); | |
| #endif // defined(SUPPORT_PX) | |
| adpcm_reset(&adpcm); | adpcm_reset(&adpcm); |
| #if defined(SUPPORT_PX) | |
| adpcm_reset(&adpcm2); | |
| adpcm_reset(&adpcm3); | |
| #endif // defined(SUPPORT_PX) | |
| pcm86_reset(); | pcm86_reset(); |
| cs4231_reset(); | cs4231_reset(); |
| Line 176 void fmboard_reset(UINT32 type) { | Line 216 void fmboard_reset(UINT32 type) { |
| // amd98_reset(); | // amd98_reset(); |
| break; | break; |
| #if defined(SUPPORT_PX) | |
| case 0x30: | |
| boardpx1_reset(); | |
| break; | |
| case 0x50: | |
| boardpx2_reset(); | |
| break; | |
| #endif // defined(SUPPORT_PX) | |
| default: | default: |
| type = 0; | type = 0; |
| break; | break; |
| Line 224 void fmboard_bind(void) { | Line 274 void fmboard_bind(void) { |
| case 0x80: | case 0x80: |
| amd98_bind(); | amd98_bind(); |
| break; | break; |
| #if defined(SUPPORT_PX) | |
| case 0x30: | |
| boardpx1_bind(); | |
| break; | |
| case 0x50: | |
| boardpx2_bind(); | |
| break; | |
| #endif // defined(SUPPORT_PX) | |
| } | } |
| sound_streamregist(&beep, (SOUNDCB)beep_getpcm); | sound_streamregist(&beep, (SOUNDCB)beep_getpcm); |
| } | } |
| Line 262 const UINT8 *reg; | Line 322 const UINT8 *reg; |
| rhythm_setreg(rhy, 0x1d, reg[0x1d]); | rhythm_setreg(rhy, 0x1d, reg[0x1d]); |
| } | } |
| #if defined(SUPPORT_PX) | |
| void fmboard_fmrestore2(OPN_T* pOpn, REG8 chbase, UINT bank) { | |
| REG8 i; | |
| const UINT8 *reg; | |
| reg = pOpn->reg + (bank * 0x100); | |
| for (i=0x30; i<0xa0; i++) { | |
| opngen_setreg(chbase, i, reg[i]); | |
| } | |
| for (i=0xb7; i>=0xa0; i--) { | |
| opngen_setreg(chbase, i, reg[i]); | |
| } | |
| for (i=0; i<3; i++) { | |
| opngen_keyon(chbase + i, opngen.keyreg[chbase + i]); | |
| } | |
| } | |
| void fmboard_rhyrestore2(OPN_T* pOpn, RHYTHM rhy, UINT bank) { | |
| const UINT8 *reg; | |
| reg = pOpn->reg + (bank * 0x100); | |
| rhythm_setreg(rhy, 0x11, reg[0x11]); | |
| rhythm_setreg(rhy, 0x18, reg[0x18]); | |
| rhythm_setreg(rhy, 0x19, reg[0x19]); | |
| rhythm_setreg(rhy, 0x1a, reg[0x1a]); | |
| rhythm_setreg(rhy, 0x1b, reg[0x1b]); | |
| rhythm_setreg(rhy, 0x1c, reg[0x1c]); | |
| rhythm_setreg(rhy, 0x1d, reg[0x1d]); | |
| } | |
| #endif // defined(SUPPORT_PX) | |