////////////////////////////////////////////////////////////////////////// // Mapper007 AOROM/AMROM // ////////////////////////////////////////////////////////////////////////// void Mapper007::Reset() { patch = 0; SetPROM_32K_Bank( 0 ); DWORD crc = nes->rom->GetPROM_CRC(); if( crc == 0x3c9fe649 ) { // WWF Wrestlemania Challenge(U) SetVRAM_Mirror( VRAM_VMIRROR ); patch = 1; } if( crc == 0x09874777 ) { // Marble Madness(U) nes->SetRenderMethod( NES::TILE_RENDER ); } if( crc == 0xfad97471 ) { // أش؛‎³µ(unif - [CC-21]) patch = 2; } } void Mapper007::Write( WORD addr, BYTE data ) { if( patch == 2 ) { SetVROM_8K_Bank( addr & 0x1 ); if( addr & 0x2 ) SetVRAM_Mirror( VRAM_MIRROR4H ); else SetVRAM_Mirror( VRAM_MIRROR4L ); }else{ SetPROM_32K_Bank( (data & 0x07) ); if( !patch ) { if( data & 0x10 ) SetVRAM_Mirror( VRAM_MIRROR4H ); else SetVRAM_Mirror( VRAM_MIRROR4L ); } } }