static void IOOUTCALL spb_o18e(UINT port, REG8 dat) { UINT addr; // g_opn.data1 = dat; addr = g_opn.addr1h; // S98_put(EXTEND2608, addr, dat); g_opn.reg[addr + 0x100] = dat; if (addr >= 0x30) { opngen_setreg(&g_opngen, 3, addr, dat); } else if (addr < 0x12) { adpcm_setreg(&g_adpcm, addr, dat); } (void)port; }
static void IOOUTCALL spb_o18e(UINT port, REG8 dat) { UINT addr; opn.data = dat; addr = opn.addr - 0x100; if (addr >= 0x100) { return; } S98_put(EXTEND2608, addr, dat); opn.reg[addr + 0x100] = dat; if (addr >= 0x30) { opngen_setreg(3, addr, dat); } else if (addr < 0x12) { adpcm_setreg(&adpcm, addr, dat); } (void)port; }
static void IOOUTCALL p86_o28e(UINT port, REG8 dat) { UINT addr; // g_opn3.data1 = dat; addr = g_opn3.addr1h; if (addr >= 0x100) { return; } // S98_put(EXTEND2608, addr, dat); g_opn3.reg[addr + 0x100] = dat; if (addr >= 0x30) { opngen_setreg(&g_opngen, 27, addr, dat); } else if (addr < 0x12) { adpcm_setreg(&g_adpcm3, addr, dat); } (void)port; }
/** * Writes extended register (Inner) * @param[in] opna The instance * @param[in] nAddress The address * @param[in] cData The data */ static void writeExtendedRegister(POPNA opna, UINT nAddress, REG8 cData) { const UINT8 cCaps = opna->s.cCaps; CExternalOpna* pExt = reinterpret_cast<CExternalOpna*>(opna->userdata); if (nAddress < 0x12) { if (cCaps & OPNA_HAS_ADPCM) { adpcm_setreg(&opna->adpcm, nAddress, cData); if ((pExt) && (pExt->HasADPCM())) { pExt->WriteRegister(nAddress + 0x100, cData); } } else { if (nAddress == 0x10) { if (!(cData & 0x80)) { opna->s.adpcmmask = ~(cData & 0x1c); } } } } else if (nAddress >= 0x30) { if (cCaps & OPNA_HAS_EXTENDEDFM) { if (!pExt) { opngen_setreg(&opna->opngen, 3, nAddress, cData); } else { pExt->WriteRegister(nAddress + 0x100, cData); } } } }