From ba21484ddd89ab7a8bd83bf09b7be84d4abd3b15 Mon Sep 17 00:00:00 2001 From: adelikat Date: Wed, 5 Aug 2015 20:12:09 -0400 Subject: [PATCH] add IRegionable as an emulator service to indicate NTSC vs PAL, etc. Refactor cores that conveyed this information to use this service, fixed cheaty reflection to grab this info to use the service instead, marked some cores as region not applicable where it made sense to me (I'm sure I'm wrong in some cases) --- .../conversions/MovieConversionExtensions.cs | 7 +++-- .../BizHawk.Emulation.Common.csproj | 1 + BizHawk.Emulation.Common/Extensions.cs | 15 ++++++++++ BizHawk.Emulation.Cores/Calculator/TI83.cs | 2 +- .../Computers/AppleII/AppleII.cs | 1 + .../Computers/Commodore64/C64.cs | 2 +- .../Consoles/Atari/2600/Atari2600.Core.cs | 5 ---- .../Consoles/Atari/2600/Atari2600.cs | 7 ++++- .../Consoles/Atari/7800/Atari7800.cs | 4 +-- .../Consoles/Atari/lynx/Lynx.cs | 2 +- .../Consoles/Nintendo/GBA/MGBAHawk.cs | 1 + .../Consoles/Nintendo/GBA/Meteor.cs | 2 +- .../Consoles/Nintendo/GBA/VBANext.cs | 2 +- .../Consoles/Nintendo/Gameboy/Gambatte.cs | 2 +- .../Consoles/Nintendo/N64/N64.cs | 6 ++-- .../Consoles/Nintendo/NES/NES.ISettable.cs | 2 +- .../Consoles/Nintendo/NES/NES.cs | 8 +++--- .../Consoles/Nintendo/SNES/LibsnesCore.cs | 4 +-- .../Consoles/Sega/SMS/SMS.Input.cs | 2 +- .../Consoles/Sega/SMS/SMS.cs | 28 +++++++++---------- .../Consoles/Sega/gpgx/GPGX.cs | 6 ++-- .../Consoles/WonderSwan/WonderSwan.cs | 2 +- 22 files changed, 65 insertions(+), 46 deletions(-) diff --git a/BizHawk.Client.Common/movie/conversions/MovieConversionExtensions.cs b/BizHawk.Client.Common/movie/conversions/MovieConversionExtensions.cs index 616ce7e57c..f285e5d9f1 100644 --- a/BizHawk.Client.Common/movie/conversions/MovieConversionExtensions.cs +++ b/BizHawk.Client.Common/movie/conversions/MovieConversionExtensions.cs @@ -6,6 +6,7 @@ using System.Collections.Generic; using BizHawk.Common.ReflectionExtensions; using BizHawk.Emulation.Common; using BizHawk.Emulation.Cores.Nintendo.Gameboy; +using BizHawk.Emulation.Common.IEmulatorExtensions; namespace BizHawk.Client.Common.MovieConversionExtensions { @@ -283,10 +284,10 @@ namespace BizHawk.Client.Common.MovieConversionExtensions movie.BoardName = Global.Emulator.BoardName; } - if (Global.Emulator.HasPublicProperty("DisplayType")) + if (Global.Emulator.HasRegions()) { - var region = Global.Emulator.GetPropertyValue("DisplayType"); - if ((DisplayType)region == DisplayType.PAL) + var region = Global.Emulator.AsRegionable().Region; + if (region == DisplayType.PAL) { movie.HeaderEntries.Add(HeaderKeys.PAL, "1"); } diff --git a/BizHawk.Emulation.Common/BizHawk.Emulation.Common.csproj b/BizHawk.Emulation.Common/BizHawk.Emulation.Common.csproj index a042c31897..dd74e4459f 100644 --- a/BizHawk.Emulation.Common/BizHawk.Emulation.Common.csproj +++ b/BizHawk.Emulation.Common/BizHawk.Emulation.Common.csproj @@ -84,6 +84,7 @@ + diff --git a/BizHawk.Emulation.Common/Extensions.cs b/BizHawk.Emulation.Common/Extensions.cs index 16387bc5b7..6ac14b6d79 100644 --- a/BizHawk.Emulation.Common/Extensions.cs +++ b/BizHawk.Emulation.Common/Extensions.cs @@ -200,6 +200,21 @@ namespace BizHawk.Emulation.Common.IEmulatorExtensions return true; } + public static bool HasRegions(this IEmulator core) + { + if (core == null) + { + return false; + } + + return core.ServiceProvider.HasService(); + } + + public static IRegionable AsRegionable(this IEmulator core) + { + return (IRegionable)core.ServiceProvider.GetService(); + } + // TODO: a better place for these public static bool IsImplemented(this MethodInfo info) { diff --git a/BizHawk.Emulation.Cores/Calculator/TI83.cs b/BizHawk.Emulation.Cores/Calculator/TI83.cs index c6686c01ac..cbb8197d24 100644 --- a/BizHawk.Emulation.Cores/Calculator/TI83.cs +++ b/BizHawk.Emulation.Cores/Calculator/TI83.cs @@ -19,7 +19,7 @@ namespace BizHawk.Emulation.Cores.Calculators isPorted: false, isReleased: true )] - [ServiceNotApplicable(typeof(ISaveRam))] + [ServiceNotApplicable(typeof(ISaveRam), typeof(IRegionable))] public partial class TI83 : IEmulator, IVideoProvider, IStatable, IDebuggable, IInputPollable, ISettable { [CoreConstructor("TI83")] diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.cs b/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.cs index cad6c19f38..9f43877262 100644 --- a/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.cs +++ b/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.cs @@ -14,6 +14,7 @@ namespace BizHawk.Emulation.Cores.Computers.AppleII isPorted: true, isReleased: true )] + [ServiceNotApplicable(typeof(ISaveRam), typeof(IRegionable))] public partial class AppleII : IEmulator, IDriveLight { public AppleII(CoreComm comm, IEnumerable gameInfoSet, IEnumerable romSet, Settings settings) diff --git a/BizHawk.Emulation.Cores/Computers/Commodore64/C64.cs b/BizHawk.Emulation.Cores/Computers/Commodore64/C64.cs index c6588a1735..3d0028a017 100644 --- a/BizHawk.Emulation.Cores/Computers/Commodore64/C64.cs +++ b/BizHawk.Emulation.Cores/Computers/Commodore64/C64.cs @@ -20,7 +20,7 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64 isPorted: false, isReleased: false )] - [ServiceNotApplicable(typeof(ISettable<,>))] + [ServiceNotApplicable(typeof(IRegionable), typeof(ISettable<,>))] sealed public partial class C64 : IEmulator, IStatable, IInputPollable, IDriveLight, IDebuggable { // framework diff --git a/BizHawk.Emulation.Cores/Consoles/Atari/2600/Atari2600.Core.cs b/BizHawk.Emulation.Cores/Consoles/Atari/2600/Atari2600.Core.cs index 38c8b207bc..ea0a2112e4 100644 --- a/BizHawk.Emulation.Cores/Consoles/Atari/2600/Atari2600.Core.cs +++ b/BizHawk.Emulation.Cores/Consoles/Atari/2600/Atari2600.Core.cs @@ -320,11 +320,6 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600 private bool _pal; - public DisplayType DisplayType - { - get { return _pal ? DisplayType.PAL : Common.DisplayType.NTSC; } - } - private void HardReset() { Ram = new byte[128]; diff --git a/BizHawk.Emulation.Cores/Consoles/Atari/2600/Atari2600.cs b/BizHawk.Emulation.Cores/Consoles/Atari/2600/Atari2600.cs index 8d35f2a7d2..dfc50a3cd5 100644 --- a/BizHawk.Emulation.Cores/Consoles/Atari/2600/Atari2600.cs +++ b/BizHawk.Emulation.Cores/Consoles/Atari/2600/Atari2600.cs @@ -16,7 +16,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600 isReleased: true )] [ServiceNotApplicable(typeof(ISaveRam), typeof(IDriveLight))] - public partial class Atari2600 : IEmulator, IStatable, IDebuggable, IInputPollable, ISettable + public partial class Atari2600 : IEmulator, IStatable, IDebuggable, IInputPollable, IRegionable, ISettable { private readonly GameInfo _game; private int _frame; @@ -58,6 +58,11 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600 public IEmulatorServiceProvider ServiceProvider { get; private set; } + public DisplayType Region + { + get { return _pal ? DisplayType.PAL : Common.DisplayType.NTSC; } + } + public string SystemId { get { return "A26"; } } public string BoardName { get { return _mapper.GetType().Name; } } diff --git a/BizHawk.Emulation.Cores/Consoles/Atari/7800/Atari7800.cs b/BizHawk.Emulation.Cores/Consoles/Atari/7800/Atari7800.cs index f169effc48..b4276ca878 100644 --- a/BizHawk.Emulation.Cores/Consoles/Atari/7800/Atari7800.cs +++ b/BizHawk.Emulation.Cores/Consoles/Atari/7800/Atari7800.cs @@ -17,7 +17,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari7800 portedUrl: "http://emu7800.sourceforge.net/" )] [ServiceNotApplicable(typeof(ISettable<,>), typeof(IDriveLight))] - public partial class Atari7800 : IEmulator, ISaveRam, IDebuggable, IStatable, IInputPollable + public partial class Atari7800 : IEmulator, ISaveRam, IDebuggable, IStatable, IInputPollable, IRegionable { // TODO: // some things don't work when you try to plug in a 2600 game @@ -164,7 +164,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari7800 } private bool _pal; - public DisplayType DisplayType + public DisplayType Region { get { return _pal ? DisplayType.PAL : DisplayType.NTSC; } } diff --git a/BizHawk.Emulation.Cores/Consoles/Atari/lynx/Lynx.cs b/BizHawk.Emulation.Cores/Consoles/Atari/lynx/Lynx.cs index ab792b2607..ed1f62307b 100644 --- a/BizHawk.Emulation.Cores/Consoles/Atari/lynx/Lynx.cs +++ b/BizHawk.Emulation.Cores/Consoles/Atari/lynx/Lynx.cs @@ -12,7 +12,7 @@ using Newtonsoft.Json; namespace BizHawk.Emulation.Cores.Atari.Lynx { [CoreAttributes("Handy", "K. Wilkins", true, true, "mednafen 0-9-34-1", "http://mednafen.sourceforge.net/")] - [ServiceNotApplicable(typeof(ISettable<,>), typeof(IDriveLight))] + [ServiceNotApplicable(typeof(ISettable<,>), typeof(IDriveLight), typeof(IRegionable))] public partial class Lynx : IEmulator, IVideoProvider, ISyncSoundProvider, ISaveRam, IStatable, IInputPollable { IntPtr Core; diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/MGBAHawk.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/MGBAHawk.cs index 20d9b2d8e6..5738b05eef 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/MGBAHawk.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/MGBAHawk.cs @@ -11,6 +11,7 @@ using System.ComponentModel; namespace BizHawk.Emulation.Cores.Nintendo.GBA { [CoreAttributes("mGBA", "endrift", true, false, "NOT DONE", "NOT DONE", false)] + [ServiceNotApplicable(typeof(IDriveLight), typeof(IRegionable))] public class MGBAHawk : IEmulator, IVideoProvider, ISyncSoundProvider, IGBAGPUViewable, ISaveRam, IStatable, IInputPollable, ISettable { IntPtr core; diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/Meteor.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/Meteor.cs index da3079c09c..965192275e 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/Meteor.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/Meteor.cs @@ -15,7 +15,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBA isReleased: false, singleInstance: true )] - [ServiceNotApplicable(typeof(IDriveLight))] + [ServiceNotApplicable(typeof(IDriveLight), typeof(IRegionable))] public partial class GBA : IEmulator, IVideoProvider, ISyncSoundProvider, IGBAGPUViewable, ISaveRam, IStatable, IInputPollable { [CoreConstructor("GBA")] diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/VBANext.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/VBANext.cs index 8dc7473d4f..f529b4ffbc 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/VBANext.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/VBANext.cs @@ -14,7 +14,7 @@ using BizHawk.Common; namespace BizHawk.Emulation.Cores.Nintendo.GBA { [CoreAttributes("VBA-Next", "many authors", true, true, "cd508312a29ed8c29dacac1b11c2dce56c338a54", "https://github.com/libretro/vba-next")] - [ServiceNotApplicable(typeof(IDriveLight))] + [ServiceNotApplicable(typeof(IDriveLight), typeof(IRegionable))] public partial class VBANext : IEmulator, IVideoProvider, ISyncSoundProvider, IInputPollable, IGBAGPUViewable, ISaveRam, IStatable, IDebuggable, ISettable { diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.cs index f96685a4b2..5389945b1c 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.cs @@ -22,7 +22,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy portedVersion: "SVN 344", portedUrl: "http://gambatte.sourceforge.net/" )] - [ServiceNotApplicable(typeof(IDriveLight))] + [ServiceNotApplicable(typeof(IDriveLight), typeof(IDriveLight))] public partial class Gameboy : IEmulator, IVideoProvider, ISyncSoundProvider, ISaveRam, IStatable, IInputPollable, IDebuggable, ISettable { diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64.cs index 699ab94258..f68e6926f0 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64.cs @@ -20,7 +20,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.N64 singleInstance: true )] [ServiceNotApplicable(typeof(IDriveLight))] - public partial class N64 : IEmulator, ISaveRam, IDebuggable, IStatable, IInputPollable, IDisassemblable, + public partial class N64 : IEmulator, ISaveRam, IDebuggable, IStatable, IInputPollable, IDisassemblable, IRegionable, ISettable { private readonly N64Input _inputProvider; @@ -104,7 +104,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.N64 _display_type = DisplayType.NTSC; break; } - switch (DisplayType) + switch (Region) { case DisplayType.NTSC: comm.VsyncNum = 60000; @@ -245,7 +245,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.N64 public CoreComm CoreComm { get; private set; } - public DisplayType DisplayType { get { return _display_type; } } + public DisplayType Region { get { return _display_type; } } public ISoundProvider SoundProvider { get { return null; } } diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/NES.ISettable.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/NES.ISettable.cs index 09ba773b20..9c81ab5b3f 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/NES.ISettable.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/NES.ISettable.cs @@ -34,7 +34,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES } CoreComm.ScreenLogicalOffsetX = videoProvider.left; - CoreComm.ScreenLogicalOffsetY = DisplayType == DisplayType.NTSC ? Settings.NTSC_TopLine : Settings.PAL_TopLine; + CoreComm.ScreenLogicalOffsetY = Region == DisplayType.NTSC ? Settings.NTSC_TopLine : Settings.PAL_TopLine; SetPalette(Settings.Palette); diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/NES.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/NES.cs index 1a595c6f66..b23a20605d 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/NES.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/NES.cs @@ -17,7 +17,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES isPorted: false, isReleased: true )] - public partial class NES : IEmulator, ISaveRam, IDebuggable, IStatable, IInputPollable, + public partial class NES : IEmulator, ISaveRam, IDebuggable, IStatable, IInputPollable, IRegionable, ISettable { static readonly bool USE_DATABASE = true; @@ -182,7 +182,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES public CoreComm CoreComm { get; private set; } - public DisplayType DisplayType { get { return _display_type; } } + public DisplayType Region { get { return _display_type; } } class MyVideoProvider : IVideoProvider { @@ -209,7 +209,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES { int the_top; int the_bottom; - if (emu.DisplayType == DisplayType.NTSC) + if (emu.Region == DisplayType.NTSC) { the_top = emu.Settings.NTSC_TopLine; the_bottom = emu.Settings.NTSC_BottomLine; @@ -289,7 +289,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES { get { - if (emu.DisplayType == DisplayType.NTSC) + if (emu.Region == DisplayType.NTSC) { return emu.Settings.NTSC_BottomLine - emu.Settings.NTSC_TopLine + 1; } diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/SNES/LibsnesCore.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/SNES/LibsnesCore.cs index a60e6c21d5..15e132c525 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/SNES/LibsnesCore.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/SNES/LibsnesCore.cs @@ -30,7 +30,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.SNES portedUrl: "http://byuu.org/" )] [ServiceNotApplicable(typeof(IDriveLight))] - public unsafe class LibsnesCore : IEmulator, IVideoProvider, ISaveRam, IStatable, IInputPollable, + public unsafe class LibsnesCore : IEmulator, IVideoProvider, ISaveRam, IStatable, IInputPollable, IRegionable, IDebuggable, ISettable { public LibsnesCore(GameInfo game, byte[] romData, bool deterministicEmulation, byte[] xmlData, CoreComm comm, object Settings, object SyncSettings) @@ -666,7 +666,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.SNES api.QUERY_set_state_hook_write(!suppress && mcs.HasWrites); } - public DisplayType DisplayType + public DisplayType Region { get { diff --git a/BizHawk.Emulation.Cores/Consoles/Sega/SMS/SMS.Input.cs b/BizHawk.Emulation.Cores/Consoles/Sega/SMS/SMS.Input.cs index 5e1f6d0e97..5c9cd5b4e6 100644 --- a/BizHawk.Emulation.Cores/Consoles/Sega/SMS/SMS.Input.cs +++ b/BizHawk.Emulation.Cores/Consoles/Sega/SMS/SMS.Input.cs @@ -104,7 +104,7 @@ namespace BizHawk.Emulation.Cores.Sega.MasterSystem value ^= 0x80; } - if (Region == "Japan") + if (RegionStr == "Japan") { value ^= 0x40; } diff --git a/BizHawk.Emulation.Cores/Consoles/Sega/SMS/SMS.cs b/BizHawk.Emulation.Cores/Consoles/Sega/SMS/SMS.cs index 565b52e2a1..32dce4aa87 100644 --- a/BizHawk.Emulation.Cores/Consoles/Sega/SMS/SMS.cs +++ b/BizHawk.Emulation.Cores/Consoles/Sega/SMS/SMS.cs @@ -28,7 +28,7 @@ namespace BizHawk.Emulation.Cores.Sega.MasterSystem isReleased: true )] [ServiceNotApplicable(typeof(IDriveLight))] - public sealed partial class SMS : IEmulator, ISaveRam, IStatable, IInputPollable, + public sealed partial class SMS : IEmulator, ISaveRam, IStatable, IInputPollable, IRegionable, IDebuggable, ISettable { // Constants @@ -92,7 +92,7 @@ namespace BizHawk.Emulation.Cores.Sega.MasterSystem byte ForceStereoByte = 0xAD; bool IsGame3D = false; - public DisplayType DisplayType { get; set; } + public DisplayType Region { get; set; } public bool DeterministicEmulation { get { return true; } } [CoreConstructor("SMS", "SG", "GG")] @@ -113,23 +113,23 @@ namespace BizHawk.Emulation.Cores.Sega.MasterSystem Array.Resize(ref RomData, ((RomData.Length / BankSize) + 1) * BankSize); RomBanks = (byte)(RomData.Length / BankSize); - DisplayType = DetermineDisplayType(SyncSettings.DisplayType, game.Region); - if (game["PAL"] && DisplayType != DisplayType.PAL) + Region = DetermineDisplayType(SyncSettings.DisplayType, game.Region); + if (game["PAL"] && Region != DisplayType.PAL) { - DisplayType = DisplayType.PAL; + Region = DisplayType.PAL; CoreComm.Notify("Display was forced to PAL mode for game compatibility."); } if (IsGameGear) - DisplayType = DisplayType.NTSC; // all game gears run at 60hz/NTSC mode - CoreComm.VsyncNum = DisplayType == DisplayType.NTSC ? 60 : 50; + Region = DisplayType.NTSC; // all game gears run at 60hz/NTSC mode + CoreComm.VsyncNum = Region == DisplayType.NTSC ? 60 : 50; CoreComm.VsyncDen = 1; - Region = SyncSettings.ConsoleRegion; - if (Region == "Auto") Region = DetermineRegion(game.Region); + RegionStr = SyncSettings.ConsoleRegion; + if (RegionStr == "Auto") RegionStr = DetermineRegion(game.Region); - if (game["Japan"] && Region != "Japan") + if (game["Japan"] && RegionStr != "Japan") { - Region = "Japan"; + RegionStr = "Japan"; CoreComm.Notify("Region was forced to Japan for game compatibility."); } @@ -145,7 +145,7 @@ namespace BizHawk.Emulation.Cores.Sega.MasterSystem Cpu.WriteHardware = WritePort; Cpu.MemoryCallbacks = MemoryCallbacks; - Vdp = new VDP(this, Cpu, IsGameGear ? VdpMode.GameGear : VdpMode.SMS, DisplayType); + Vdp = new VDP(this, Cpu, IsGameGear ? VdpMode.GameGear : VdpMode.SMS, Region); (ServiceProvider as BasicServiceProvider).Register(Vdp); PSG = new SN76489(); YM2413 = new YM2413(); @@ -198,7 +198,7 @@ namespace BizHawk.Emulation.Cores.Sega.MasterSystem } else if (game.System == "SMS") { - BiosRom = comm.CoreFileProvider.GetFirmware("SMS", Region, false); + BiosRom = comm.CoreFileProvider.GetFirmware("SMS", RegionStr, false); if (BiosRom != null && (game["RequireBios"] || SyncSettings.UseBIOS)) Port3E = 0xF7; @@ -428,7 +428,7 @@ namespace BizHawk.Emulation.Cores.Sega.MasterSystem public string BoardName { get { return null; } } string region; - public string Region + public string RegionStr { get { return region; } set diff --git a/BizHawk.Emulation.Cores/Consoles/Sega/gpgx/GPGX.cs b/BizHawk.Emulation.Cores/Consoles/Sega/gpgx/GPGX.cs index c0ea57bcfa..6a5bb42b0a 100644 --- a/BizHawk.Emulation.Cores/Consoles/Sega/gpgx/GPGX.cs +++ b/BizHawk.Emulation.Cores/Consoles/Sega/gpgx/GPGX.cs @@ -25,7 +25,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Sega.gpgx portedUrl: "https://code.google.com/p/genplus-gx/", singleInstance: true )] - public class GPGX : IEmulator, ISyncSoundProvider, IVideoProvider, ISaveRam, IStatable, + public class GPGX : IEmulator, ISyncSoundProvider, IVideoProvider, ISaveRam, IStatable, IRegionable, IInputPollable, IDebuggable, ISettable, IDriveLight { static GPGX AttachedCore = null; @@ -141,7 +141,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Sega.gpgx LibGPGX.gpgx_get_fps(ref fpsnum, ref fpsden); CoreComm.VsyncNum = fpsnum; CoreComm.VsyncDen = fpsden; - DisplayType = CoreComm.VsyncRate > 55 ? DisplayType.NTSC : DisplayType.PAL; + Region = CoreComm.VsyncRate > 55 ? DisplayType.NTSC : DisplayType.PAL; } // compute state size @@ -749,7 +749,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Sega.gpgx #region VideoProvider - public DisplayType DisplayType { get; private set; } + public DisplayType Region { get; private set; } int[] vidbuff = new int[0]; int vwidth; diff --git a/BizHawk.Emulation.Cores/Consoles/WonderSwan/WonderSwan.cs b/BizHawk.Emulation.Cores/Consoles/WonderSwan/WonderSwan.cs index 4b38c76a7b..5d77013af8 100644 --- a/BizHawk.Emulation.Cores/Consoles/WonderSwan/WonderSwan.cs +++ b/BizHawk.Emulation.Cores/Consoles/WonderSwan/WonderSwan.cs @@ -11,7 +11,7 @@ using System.Runtime.InteropServices; namespace BizHawk.Emulation.Cores.WonderSwan { [CoreAttributes("Cygne/Mednafen", "Dox", true, true, "0.9.36.5", "http://mednafen.sourceforge.net/")] - [ServiceNotApplicable(typeof(IDriveLight))] + [ServiceNotApplicable(typeof(IDriveLight), typeof(IRegionable))] public partial class WonderSwan : IEmulator, IVideoProvider, ISyncSoundProvider, IInputPollable, IDebuggable {