diff --git a/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/IC_74x377.cs b/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/IC_74x377.cs index 709cde3bd9..319b51f971 100644 --- a/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/IC_74x377.cs +++ b/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/IC_74x377.cs @@ -14,6 +14,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo //configuration int prg_bank_mask_32k, chr_bank_mask_8k; bool bus_conflict = true; + bool bus_conflict_50282 = false; //state int prg_bank_32k, chr_bank_8k; @@ -31,6 +32,14 @@ namespace BizHawk.Emulation.Consoles.Nintendo AssertPrg(32,64,128); AssertChr(16,32,64,128); AssertVram(0); AssertWram(0); break; + + case "AGCI-50282": // death race + case "MAPPER144": + bus_conflict_50282 = true; + bus_conflict = false; + SetMirrorType(Cart.pad_h, Cart.pad_v); + break; + default: return false; } @@ -56,6 +65,14 @@ namespace BizHawk.Emulation.Consoles.Nintendo public override void WritePRG(int addr, byte value) { + if (bus_conflict_50282) + { + // this is what fceux does + //if (addr == 0) + // return; + // this is what nesdev wiki does. seems to give same results as above? + value = (byte)((value | 1) & ReadPRG(addr)); + } if (bus_conflict) { byte old_value = value;