--- np2/sound/fmboard.c 2004/02/03 08:24:40 1.9 +++ np2/sound/fmboard.c 2005/05/13 05:47:25 1.14 @@ -1,7 +1,6 @@ #include "compiler.h" #include "joymng.h" #include "soundmng.h" -// #include "cpucore.h" #include "pccore.h" #include "iocore.h" #include "cbuscore.h" @@ -18,6 +17,7 @@ #include "fmboard.h" #include "beep.h" #include "keydisp.h" +#include "keystat.h" UINT32 usesound; @@ -29,9 +29,7 @@ _FMTIMER fmtimer; _OPNGEN opngen; OPNCH opnch[OPNCH_MAX]; - _PSGGEN psg1; - _PSGGEN psg2; - _PSGGEN psg3; + _PSGGEN __psg[3]; _RHYTHM rhythm; _ADPCM adpcm; _PCM86 pcm86; @@ -54,12 +52,12 @@ REG8 fmboard_getjoy(PSGGEN psg) { if (!(psg->reg.io2 & 0x40)) { ret &= (joymng_getstat() | (rapids & 0x30)); if (np2cfg.KEY_MODE == 1) { - ret &= keyext_getjoy(); + ret &= keystat_getjoy(); } } else { if (np2cfg.KEY_MODE == 2) { - ret &= keyext_getjoy(); + ret &= keystat_getjoy(); } } if (np2cfg.BTN_RAPID) { @@ -70,8 +68,8 @@ REG8 fmboard_getjoy(PSGGEN psg) { ret &= ((ret >> 2) | (~0x30)); if (np2cfg.BTN_MODE) { - BYTE bit1 = (ret & 0x20) >> 1; // ver0.28 - BYTE bit2 = (ret & 0x10) << 1; + UINT8 bit1 = (ret & 0x20) >> 1; // ver0.28 + UINT8 bit2 = (ret & 0x10) << 1; ret = (ret & (~0x30)) | bit1 | bit2; } @@ -100,9 +98,17 @@ void fmboard_extenable(REG8 enable) { // ---- +static void setfmregs(UINT8 *reg) { + + FillMemory(reg + 0x30, 0x60, 0xff); + FillMemory(reg + 0x90, 0x20, 0x00); + FillMemory(reg + 0xb0, 0x04, 0x00); + FillMemory(reg + 0xb4, 0x04, 0xc0); +} + void fmboard_reset(UINT32 type) { - BYTE cross; + UINT8 cross; soundrom_reset(); beep_reset(); // ver0.27a @@ -110,10 +116,13 @@ void fmboard_reset(UINT32 type) { extfn = NULL; ZeroMemory(&opn, sizeof(opn)); + setfmregs(opn.reg + 0x000); + setfmregs(opn.reg + 0x100); + setfmregs(opn.reg + 0x200); + setfmregs(opn.reg + 0x300); + opn.reg[0xff] = 0x01; opn.channels = 3; opn.adpcmmask = (UINT8)~(0x1c); - FillMemory(opn.reg, 0xff, 0x400); - opn.reg[0xff] = 0x01; ZeroMemory(&musicgen, sizeof(musicgen)); ZeroMemory(&amd98, sizeof(amd98)); @@ -225,7 +234,7 @@ void fmboard_bind(void) { void fmboard_fmrestore(REG8 chbase, UINT bank) { REG8 i; -const BYTE *reg; +const UINT8 *reg; reg = opn.reg + (bank * 0x100); for (i=0x30; i<0xa0; i++) { @@ -241,7 +250,7 @@ const BYTE *reg; void fmboard_rhyrestore(RHYTHM rhy, UINT bank) { -const BYTE *reg; +const UINT8 *reg; reg = opn.reg + (bank * 0x100); rhythm_setreg(rhy, 0x11, reg[0x11]);