public override void HardReset() { base.HardReset(); base.Switch08KPRG(prg_08K_rom_mask, 0xE000, true); enable_mirroring_switch = enable_N106_sound = this.MapperNumber == 19; // This is not a hack, some games should be mapper 210 configured but assigned to mapper 19 // TODO: find another way to setup Namcot 106 configurations for mapper 210 games switch (RomSHA1.ToUpper()) { case "97E7E61EECB73CB1EA0C15AE51E65EA56301A685": // Wagyan Land 2 case "3D554F55411AB2DDD1A87E7583E643970DB784F3": // Wagyan Land 3 case "7FA51058307DB50825C2D3A3A98C0DA554BC3C92": // Dream Master case "1C476C795CFC17E987C22FFD6F09BAF1396ED2C9": // Family Circuit '91 { enable_mirroring_switch = false; enable_N106_sound = false; break; } } // TODO: Implement mapper 19 sound channels if (enable_N106_sound) { sound_channels = new Namcot106SoundChannel[8]; for (int i = 0; i < 8; i++) { sound_channels[i] = new Namcot106SoundChannel(this); sound_channels[i].HardReset(); } EXRAM = new byte[128]; soundReg = 0; enabledChannels = 0; channelIndex = 0; } }
public override void HardReset() { base.HardReset(); Switch16KPRG(prg_16K_ram_mask, 0xC000, true); // This is not a hack ! // This is a qoute from 071.txt of [iNES Mappers by Mapper Number v0.6.1 by Disch]: // "One in paticular that needs to be noted is the board // used by Fire Hawk -- which has mapper controlled 1-screen mirroring. On other boards, mirroring is // hardwired! This is yet another one of those terrific mapper number incompatibilities." fireHawk = (RomSHA1.ToUpper() == "334781C830F135CF30A33E392D8AAA4AFDC223F9"); }
public override void HardReset() { base.HardReset(); // This is not a hack, "Uncharted Waters" title actually use 2 chips of SRAM which depends on bit 2 of // $5113 register instead of first 2 bits for switching. // There's no other way to make switching right. switch (RomSHA1.ToUpper()) { // Uncharted Waters case "37267833C984F176DB4B0BC9D45DABA0FFF45304": useSRAMmirroring = true; break; // Daikoukai Jidai (J) case "800AEFE756E85A0A78CCB4DAE68EBBA5DF24BF41": useSRAMmirroring = true; break; } System.Console.WriteLine("MMC5: using PRG RAM mirroring = " + useSRAMmirroring); CHROffset_spr = new int[8]; CHROffsetEX = new int[8]; CHROffsetSP = new int[8]; chrRegA = new int[8]; chrRegB = new int[4]; prgReg = new int[4]; prgReg[3] = prg_08K_rom_mask; prg_mode = 3; base.Switch08KPRG(prg_08K_rom_mask, 0x8000, true); base.Switch08KPRG(prg_08K_rom_mask, 0xA000, true); base.Switch08KPRG(prg_08K_rom_mask, 0xC000, true); base.Switch08KPRG(prg_08K_rom_mask, 0xE000, true); Switch04kCHREX(0, 0x0000); Switch04kCHRSP(0, 0x0000); Switch08kCHR_spr(0); TogglePRGRAMWritableEnable(true); TogglePRGRAMEnable(true); channel_sq1.HardReset(); channel_sq2.HardReset(); channel_pcm.HardReset(); sound_seq_curr = 0; sound_seq_cyc += sound_seq[sound_seq_curr]; }