////////////////////////////////////////////////////////////////////////// // Mapper002 UNROM // ////////////////////////////////////////////////////////////////////////// void Mapper002::Reset() { SetPROM_32K_Bank( 0, 1, PROM_8K_SIZE-2, PROM_8K_SIZE-1 ); patch = 0; DWORD crc = nes->rom->GetPROM_CRC(); // if( crc == 0x322c9b09 ) { // Metal Gear (Alt)(J) //// nes->SetFrameIRQmode( FALSE ); // } // if( crc == 0xe7a3867b ) { // Dragon Quest 2(Alt)(J) // nes->SetFrameIRQmode( FALSE ); // } //// if( crc == 0x9622fbd9 ) { // Ballblazer(J) //// patch = 0; //// } if( crc == 0x8c3d54e8 // Ikari(J) || crc == 0x655efeed // Ikari Warriors(U) || crc == 0x538218b2 ) { // Ikari Warriors(E) patch = 1; } if( crc == 0xb20c1030 ) { // Shanghai(J)(original) patch = 2; } } void Mapper002::WriteLow( WORD addr, BYTE data ) { if( !nes->rom->IsSAVERAM() ) { if( addr >= 0x5000 && patch == 1 ) SetPROM_16K_Bank( 4, data ); } else { Mapper::WriteLow( addr, data ); } } void Mapper002::Write( WORD addr, BYTE data ) { if( patch != 2 ) SetPROM_16K_Bank( 4, data ); else SetPROM_16K_Bank( 4, data>>4 ); }