--- np2/cbus/amd98.c 2003/11/08 21:43:01 1.3 +++ np2/cbus/amd98.c 2004/02/03 08:24:40 1.8 @@ -11,13 +11,13 @@ static void setamd98event(BOOL absolute) SINT32 cnt; - if (pit.value[3].w > 8) { // º¬µò¤Ê¤· - cnt = pc.multiple * pit.value[3].w; + if (pit.value[3] > 8) { // º¬µò¤Ê¤· + cnt = pccore.multiple * pit.value[3]; } else { - cnt = pc.multiple << 16; + cnt = pccore.multiple << 16; } - if (pc.baseclock == PCBASECLOCK25) { + if (pccore.baseclock == PCBASECLOCK25) { cnt = cnt * 16 / 13; // cnt * 2457600 / 1996800 } nevent_set(NEVENT_MUSICGEN, cnt, amd98int, absolute); @@ -38,19 +38,19 @@ void amd98int(NEVENTITEM item) { // ---- -static void IOOUTCALL amd_od8(UINT port, BYTE dat) { +static void IOOUTCALL amd_od8(UINT port, REG8 dat) { opn.opnreg = dat; (void)port; } -static void IOOUTCALL amd_od9(UINT port, BYTE dat) { +static void IOOUTCALL amd_od9(UINT port, REG8 dat) { opn.extreg = dat; (void)port; } -static void IOOUTCALL amd_oda(UINT port, BYTE dat) { +static void IOOUTCALL amd_oda(UINT port, REG8 dat) { if (opn.opnreg < 0x0e) { psggen_setreg(&psg1, opn.opnreg, dat); @@ -61,13 +61,13 @@ static void IOOUTCALL amd_oda(UINT port, (void)port; } -static void IOOUTCALL amd_odb(UINT port, BYTE dat) { +static void IOOUTCALL amd_odb(UINT port, REG8 dat) { if (opn.extreg < 0x0e) { psggen_setreg(&psg2, opn.extreg, dat); } else if (opn.extreg == 0x0f) { - BYTE b; + REG8 b; b = psg2.reg.io2; if ((b & 1) > (dat & 1)) { b &= 0xc2; @@ -81,6 +81,7 @@ static void IOOUTCALL amd_odb(UINT port, psggen_setreg(&psg3, amd98.psg3reg, psg1.reg.io2); } +#if 0 else if (amd98.psg3reg == 0x0f) { int r; static const BYTE amdr[] = {0x01, 0x08, 0x10, 0x20, 0x06, 0x40}; @@ -91,6 +92,7 @@ static const BYTE amdr[] = {0x01, 0x08, } } } +#endif } } psg2.reg.io2 = dat; @@ -98,24 +100,37 @@ static const BYTE amdr[] = {0x01, 0x08, (void)port; } -static void IOOUTCALL amd_odc(UINT port, BYTE dat) { +static void IOOUTCALL amd_odc(UINT port, REG8 dat) { - itimer_setcount(3, dat); + pit_setcount(3, dat); setamd98event(NEVENT_ABSOLUTE); (void)port; } -static void IOOUTCALL amd_ode(UINT port, BYTE dat) { +static void IOOUTCALL amd_ode(UINT port, REG8 dat) { - itimer_setflag(3, dat); + pit_setflag(3, dat); (void)port; } // ---- +static void psgpanset(PSGGEN psg) { + + psggen_setpan(psg, 0, 1); + psggen_setpan(psg, 1, 0); + psggen_setpan(psg, 2, 2); +} + void amd98_bind(void) { + psgpanset(&psg1); + psgpanset(&psg2); + psgpanset(&psg3); + psggen_restore(&psg1); + psggen_restore(&psg2); + psggen_restore(&psg3); sound_streamregist(&psg1, (SOUNDCB)psggen_getpcm); sound_streamregist(&psg2, (SOUNDCB)psggen_getpcm); sound_streamregist(&psg3, (SOUNDCB)psggen_getpcm);