From 54f6492fcc1377d826336b61f17f3b4187f48161 Mon Sep 17 00:00:00 2001 From: zeromus Date: Mon, 18 Apr 2011 22:35:40 +0000 Subject: [PATCH] --- .../Consoles/Nintendo/NES/BoardSystem.cs | 10 ++++++++++ .../Consoles/Nintendo/NES/Boards/AxROM.cs | 4 ++-- .../Consoles/Nintendo/NES/Boards/CPROM.cs | 5 ++++- .../Consoles/Nintendo/NES/Boards/Mapper242.cs | 16 ++-------------- .../Consoles/Nintendo/NES/Boards/SxROM.cs | 4 ++-- BizHawk.Emulation/Consoles/Nintendo/NES/NES.cs | 8 -------- 6 files changed, 20 insertions(+), 27 deletions(-) diff --git a/BizHawk.Emulation/Consoles/Nintendo/NES/BoardSystem.cs b/BizHawk.Emulation/Consoles/Nintendo/NES/BoardSystem.cs index 5331a65e09..3520da8e80 100644 --- a/BizHawk.Emulation/Consoles/Nintendo/NES/BoardSystem.cs +++ b/BizHawk.Emulation/Consoles/Nintendo/NES/BoardSystem.cs @@ -33,6 +33,16 @@ namespace BizHawk.Emulation.Consoles.Nintendo [INESBoardImpl] public abstract class NESBoardBase : INESBoard { + /// + /// These are used by SetMirroring() to provide the base class nametable mirroring service. + /// Apparently, these are not used for internal build configuration logics + /// + public enum EMirrorType + { + Vertical, Horizontal, + OneScreenA, OneScreenB, + } + public virtual void Create(NES nes) { this.NES = nes; diff --git a/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/AxROM.cs b/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/AxROM.cs index 00a62e6054..f98ce9efe3 100644 --- a/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/AxROM.cs +++ b/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/AxROM.cs @@ -65,9 +65,9 @@ namespace BizHawk.Emulation.Consoles.Nintendo if (ROM != null && bus_conflict) value = HandleNormalPRGConflict(addr,value); prg = (value*2) & prg_mask; if ((value & 0x10) == 0) - SetMirrorType(NES.EMirrorType.OneScreenA); + SetMirrorType(NES.NESBoardBase.EMirrorType.OneScreenA); else - SetMirrorType(NES.EMirrorType.OneScreenB); + SetMirrorType(NES.NESBoardBase.EMirrorType.OneScreenB); } public override byte ReadPPU(int addr) diff --git a/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/CPROM.cs b/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/CPROM.cs index c178d750cd..f13bd192cf 100644 --- a/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/CPROM.cs +++ b/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/CPROM.cs @@ -25,7 +25,10 @@ namespace BizHawk.Emulation.Consoles.Nintendo return false; } - SetMirrorType(NES.EMirrorType.Vertical); + //TODO - assert that mirror type is vertical? + //set it in the cart? + + SetMirrorType(NES.NESBoardBase.EMirrorType.Vertical); return true; } diff --git a/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/Mapper242.cs b/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/Mapper242.cs index 4462874763..b72ca1a6b9 100644 --- a/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/Mapper242.cs +++ b/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/Mapper242.cs @@ -22,14 +22,6 @@ mirroring - both { int prg, mirror; - public enum EMirrorType - { - Vertical, Horizontal, - OneScreenA, OneScreenB, - //unknown or controlled by the board - External - } - public override bool Configure(NES.EDetectionOrigin origin) { //configure @@ -45,11 +37,6 @@ mirroring - both public override byte ReadPPU(int addr) { - if (mirror == 0) - SetMirrorType(0, 1); - else - SetMirrorType(1, 0); - SetMirrorType(Cart.pad_h, Cart.pad_v); return base.ReadPPU(addr); } @@ -62,7 +49,8 @@ mirroring - both { int mirror = (addr & 0x01); prg = (addr & 0x7F) >> 3; - base.WriteWRAM(addr, value); + if (mirror == 1) SetMirrorType(NES.NESBoardBase.EMirrorType.Horizontal); + else SetMirrorType(NES.NESBoardBase.EMirrorType.Vertical); } public override void SyncState(Serializer ser) diff --git a/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/SxROM.cs b/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/SxROM.cs index daf5356ad3..3cf70e1fed 100644 --- a/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/SxROM.cs +++ b/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/SxROM.cs @@ -59,8 +59,8 @@ namespace BizHawk.Emulation.Consoles.Nintendo public int chr_mode; public int prg_mode; public int prg_slot; //complicated - public NES.EMirrorType mirror; - static NES.EMirrorType[] _mirrorTypes = new NES.EMirrorType[] { NES.EMirrorType.OneScreenA, NES.EMirrorType.OneScreenB, NES.EMirrorType.Vertical, NES.EMirrorType.Horizontal }; + public NES.NESBoardBase.EMirrorType mirror; + static NES.NESBoardBase.EMirrorType[] _mirrorTypes = new NES.NESBoardBase.EMirrorType[] { NES.NESBoardBase.EMirrorType.OneScreenA, NES.NESBoardBase.EMirrorType.OneScreenB, NES.NESBoardBase.EMirrorType.Vertical, NES.NESBoardBase.EMirrorType.Horizontal }; //register 1,2: int chr_0, chr_1; diff --git a/BizHawk.Emulation/Consoles/Nintendo/NES/NES.cs b/BizHawk.Emulation/Consoles/Nintendo/NES/NES.cs index 34f89cc561..17fa94e07e 100644 --- a/BizHawk.Emulation/Consoles/Nintendo/NES/NES.cs +++ b/BizHawk.Emulation/Consoles/Nintendo/NES/NES.cs @@ -109,14 +109,6 @@ namespace BizHawk.Emulation.Consoles.Nintendo NESWatch[] watches; } - public enum EMirrorType - { - Vertical, Horizontal, - OneScreenA, OneScreenB, - //unknown or controlled by the board - External - } - class MyVideoProvider : IVideoProvider { NES emu;