Exemplo n.º 1
0
void __fastcall QsndZWrite(unsigned short a, unsigned char d)
{
   QUARK_LOG_VAR(a);
   QUARK_LOG_VAR(d);
   QUARK_LOG_VAR(QscCmd[0]);
   QUARK_LOG_VAR(QscCmd[1]);

   if (a == 0xd000) {
		QscCmd[0] = d;
		return;
	}
	if (a == 0xd001) {
		QscCmd[1] = d;
		return;
	}
	if (a == 0xd002) {
		QscWrite(d, (QscCmd[0] << 8) | QscCmd[1]);
//		bprintf(PRINT_NORMAL, "QSound command %02X %04X sent.\n", d, (QscCmd[0] << 8) | QscCmd[1]);
		return;
	}
	if (a == 0xd003) {
		int nNewBank = d & 0x0f;
		if (nQsndZBank != nNewBank) {
			nQsndZBank = nNewBank;
			QsndZBankMap();
		}
	}
}
Exemplo n.º 2
0
// Scan the current QSound z80 state
int QsndZScan(int nAction)
{
	ZetScan(nAction);					// Scan Z80
	SCAN_VAR(nQsndZBank);

	if (nAction & ACB_WRITE) {			// If write, bank could have changed
		QsndZBankMap();
	}

	return 0;
}
Exemplo n.º 3
0
// Scan the current QSound z80 state
INT32 QsndZScan(INT32 nAction)
{
	ZetScan(nAction);					// Scan Z80
	SCAN_VAR(nQsndZBank);

	if (nAction & ACB_WRITE) {			// If write, bank could have changed
		ZetOpen(0);
		QsndZBankMap();
		ZetClose();
	}

	return 0;
}
Exemplo n.º 4
0
INT32 QsndZInit()
{
	if (nCpsZRomLen < 0x8000) {				// Not enough Z80 Data
		return 1;
	}
	if (CpsZRom == NULL) {
		return 1;
	}

	ZetInit(0);
	ZetOpen(0);

	ZetSetReadHandler(QsndZRead);
	ZetSetWriteHandler(QsndZWrite);

	// Read and fetch first 0x8000 of Rom
	if (Cps1Qs) {
		ZetMapArea(0x0000, 0x7FFF, 0, CpsZRom - (nCpsZRomLen / 2));
		ZetMapArea(0x0000, 0x7FFF, 2, CpsZRom, CpsZRom - (nCpsZRomLen / 2));	// If it tries to fetch this area
	} else {
		ZetMapArea(0x0000, 0x7FFF, 0 ,CpsZRom);
		ZetMapArea(0x0000, 0x7FFF, 2, CpsZRom);
	}

	// Map first Bank of Rom
	nQsndZBank = 0;
	QsndZBankMap();

	ZetMapArea(0xC000, 0xCFFF, 0, CpsZRamC0);
	ZetMapArea(0xC000, 0xCFFF, 1, CpsZRamC0);
	ZetMapArea(0xC000, 0xCFFF, 2, CpsZRamC0);

	ZetMemCallback(0xD000, 0xEFFF, 0);
	ZetMemCallback(0xD000, 0xEFFF, 1);

	if (Cps1Qs) {
		ZetMapArea(0xD000, 0xEFFF, 2, CpsZRom, CpsZRom - (nCpsZRomLen / 2));	// If it tries to fetch this area
	} else {
		ZetMapArea(0xD000, 0xEFFF, 2, CpsZRom);
	}

	ZetMapArea(0xF000, 0xFFFF, 0, CpsZRamF0);
	ZetMapArea(0xF000, 0xFFFF, 1, CpsZRamF0);
	ZetMapArea(0xF000, 0xFFFF, 2, CpsZRamF0);

	ZetMemEnd();
	ZetClose();

	return 0;
}
Exemplo n.º 5
0
// Scan the current QSound z80 state
int QsndZScan(int nAction)
{
	ZetScan(nAction);					// Scan Z80
   if (nAcbVersion > GGPOFBA_VERSION_0_25) {
   	SCAN_VAR(QscCmd);
   }
	SCAN_VAR(nQsndZBank);

	if (nAction & ACB_WRITE) {			// If write, bank could have changed
		QsndZBankMap();
	}

   return 0;
}
Exemplo n.º 6
0
void __fastcall QsndZWrite(UINT16 a, UINT8 d)
{
	if (a == 0xd000) {
		QscCmd[0] = d;
		return;
	}
	if (a == 0xd001) {
		QscCmd[1] = d;
		return;
	}
	if (a == 0xd002) {
		QscWrite(d, (QscCmd[0] << 8) | QscCmd[1]);
//		bprintf(PRINT_NORMAL, _T("QSound command %02X %04X sent.\n"), d, (QscCmd[0] << 8) | QscCmd[1]);
		return;
	}
	if (a == 0xd003) {
		INT32 nNewBank = d & 0x0f;
		if (nQsndZBank != nNewBank) {
			nQsndZBank = nNewBank;
			QsndZBankMap();
		}
	}
}