Esempio n. 1
0
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;
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
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;
}
Esempio n. 4
0
/**
 * 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);
			}
		}
	}
}