⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mapper236.cpp

📁 著名的任天堂FC游戏机模拟器VirtuaNes 085版的源码!
💻 CPP
字号:
//////////////////////////////////////////////////////////////////////////
// Mapper236  800-in-1                                                  //
//////////////////////////////////////////////////////////////////////////
void	Mapper236::Reset()
{
	SetPROM_32K_Bank( 0, 1, PROM_8K_SIZE-2, PROM_8K_SIZE-1 );

	bank = mode = 0;
}

void	Mapper236::Write( WORD addr, BYTE data )
{
	if( addr >= 0x8000 && addr <= 0xBFFF ) {
		bank = ((addr&0x03)<<4)|(bank&0x07);
	} else {
		bank = (addr&0x07)|(bank&0x30);
		mode = addr&0x30;
	}

	if( addr & 0x20 ) {
		SetVRAM_Mirror( VRAM_HMIRROR );
	} else {
		SetVRAM_Mirror( VRAM_VMIRROR );
	}

	switch( mode ) {
		case	0x00:
			bank |= 0x08;
			SetPROM_8K_Bank( 4, bank*2+0 );
			SetPROM_8K_Bank( 5, bank*2+1 );
			SetPROM_8K_Bank( 6, (bank|0x07)*2+0 );
			SetPROM_8K_Bank( 7, (bank|0x07)*2+1 );
			break;
		case	0x10:
			bank |= 0x37;
			SetPROM_8K_Bank( 4, bank*2+0 );
			SetPROM_8K_Bank( 5, bank*2+1 );
			SetPROM_8K_Bank( 6, (bank|0x07)*2+0 );
			SetPROM_8K_Bank( 7, (bank|0x07)*2+1 );
			break;
		case	0x20:
			bank |= 0x08;
			SetPROM_8K_Bank( 4, (bank&0xFE)*2+0 );
			SetPROM_8K_Bank( 5, (bank&0xFE)*2+1 );
			SetPROM_8K_Bank( 6, (bank&0xFE)*2+2 );
			SetPROM_8K_Bank( 7, (bank&0xFE)*2+3 );
			break;
		case	0x30:
			bank |= 0x08;
			SetPROM_8K_Bank( 4, bank*2+0 );
			SetPROM_8K_Bank( 5, bank*2+1 );
			SetPROM_8K_Bank( 6, bank*2+0 );
			SetPROM_8K_Bank( 7, bank*2+1 );
			break;
	}
}

void	Mapper236::SaveState( LPBYTE p )
{
	p[ 0] = bank;
	p[ 1] = mode;
}

void	Mapper236::LoadState( LPBYTE p )
{
	bank = p[ 0];
	mode = p[ 1];
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -