diff --git a/BizHawk.BizInvoke/BizExvoker.cs b/BizHawk.BizInvoke/BizExvoker.cs
index ed9af81894..bf61a8c0df 100644
--- a/BizHawk.BizInvoke/BizExvoker.cs
+++ b/BizHawk.BizInvoke/BizExvoker.cs
@@ -122,23 +122,15 @@ namespace BizHawk.BizInvoke
}
}
- ///
- /// mark an instance method to be exported by BizExvoker
- ///
+ /// Indicates that a method is to be exported by BizExvoker.
[AttributeUsage(AttributeTargets.Method)]
- public class BizExportAttribute : Attribute
+ public sealed class BizExportAttribute : Attribute
{
public CallingConvention CallingConvention { get; }
- ///
- /// Gets or sets the name of entry point; if not given, the method's name is used
- ///
+ /// The annotated method's name is used iff .
public string EntryPoint { get; set; }
- ///
- /// Initializes a new instance of the class.
- ///
- /// unmanaged calling convention
public BizExportAttribute(CallingConvention c)
{
CallingConvention = c;
diff --git a/BizHawk.BizInvoke/BizInvoker.cs b/BizHawk.BizInvoke/BizInvoker.cs
index e79d8d2797..3177d7a147 100644
--- a/BizHawk.BizInvoke/BizInvoker.cs
+++ b/BizHawk.BizInvoke/BizInvoker.cs
@@ -537,28 +537,18 @@ namespace BizHawk.BizInvoke
}
}
- ///
- /// mark an abstract method to be proxied by BizInvoker
- ///
+ /// Indicates that an abstract method is to be proxied by BizInvoker.
[AttributeUsage(AttributeTargets.Method)]
- public class BizImportAttribute : Attribute
+ public sealed class BizImportAttribute : Attribute
{
public CallingConvention CallingConvention { get; }
- ///
- /// Gets or sets the name of entry point; if not given, the method's name is used
- ///
+ /// The annotated method's name is used iff .
public string EntryPoint { get; set; }
- ///
- /// Gets or sets a value indicating whether or not to use a slower interop that supports more argument types
- ///
+ /// iff a compatibility interop should be used, which is slower but supports more argument types.
public bool Compatibility { get; set; }
- ///
- /// Initializes a new instance of the class.
- ///
- /// unmanaged calling convention
public BizImportAttribute(CallingConvention c)
{
CallingConvention = c;
diff --git a/BizHawk.Client.ApiHawk/Classes/ApiInjector.cs b/BizHawk.Client.ApiHawk/Classes/ApiInjector.cs
index 811807659f..fc5fc9166f 100644
--- a/BizHawk.Client.ApiHawk/Classes/ApiInjector.cs
+++ b/BizHawk.Client.ApiHawk/Classes/ApiInjector.cs
@@ -68,12 +68,12 @@ namespace BizHawk.Client.ApiHawk
}
[AttributeUsage(AttributeTargets.Property)]
- public class RequiredApiAttribute : Attribute
+ public sealed class RequiredApiAttribute : Attribute
{
}
[AttributeUsage(AttributeTargets.Property)]
- public class OptionalApiAttribute : Attribute
+ public sealed class OptionalApiAttribute : Attribute
{
}
}
diff --git a/BizHawk.Client.Common/Api/ExternalToolAttributes.cs b/BizHawk.Client.Common/Api/ExternalToolAttributes.cs
index 0c572fc564..d466c9f517 100644
--- a/BizHawk.Client.Common/Api/ExternalToolAttributes.cs
+++ b/BizHawk.Client.Common/Api/ExternalToolAttributes.cs
@@ -96,13 +96,12 @@ namespace BizHawk.Client.Common
[AttributeUsage(AttributeTargets.Class)]
public sealed class ExternalToolAttribute : Attribute
{
- public readonly string Description;
+ public string Description { get; set; }
public readonly string Name;
- public ExternalToolAttribute(string name, string description = null)
+ public ExternalToolAttribute(string name)
{
- Description = description;
Name = string.IsNullOrWhiteSpace(name) ? Guid.NewGuid().ToString() : name;
}
diff --git a/BizHawk.Client.Common/BinarySaveStates.cs b/BizHawk.Client.Common/BinarySaveStates.cs
index bbb944ac2b..7206daaa4a 100644
--- a/BizHawk.Client.Common/BinarySaveStates.cs
+++ b/BizHawk.Client.Common/BinarySaveStates.cs
@@ -69,7 +69,7 @@ namespace BizHawk.Client.Common
public static BinaryStateLump BranchUserText { get; private set; }
[AttributeUsage(AttributeTargets.Property)]
- private class NameAttribute : Attribute
+ private sealed class NameAttribute : Attribute
{
public string Name { get; }
public string Ext { get; }
diff --git a/BizHawk.Client.Common/config/ConfigPersistAttribute.cs b/BizHawk.Client.Common/config/ConfigPersistAttribute.cs
index 08d248ad71..7931c2f9a2 100644
--- a/BizHawk.Client.Common/config/ConfigPersistAttribute.cs
+++ b/BizHawk.Client.Common/config/ConfigPersistAttribute.cs
@@ -2,11 +2,9 @@
namespace BizHawk.Client.Common
{
- ///
- /// Define if the property has to be persisted in config
- ///
+ /// Indicates that a property is to be saved to config for persistence.
[AttributeUsage(AttributeTargets.Property)]
- public class ConfigPersistAttribute : Attribute
+ public sealed class ConfigPersistAttribute : Attribute
{
}
}
diff --git a/BizHawk.Client.Common/config/RestoreDefaultsAttribute.cs b/BizHawk.Client.Common/config/RestoreDefaultsAttribute.cs
index eb8584cd6e..bdfcd53dda 100644
--- a/BizHawk.Client.Common/config/RestoreDefaultsAttribute.cs
+++ b/BizHawk.Client.Common/config/RestoreDefaultsAttribute.cs
@@ -2,11 +2,10 @@
namespace BizHawk.Client.Common
{
- ///
- /// Defines a method to be called when a tool dialog's Restore Defaults method is called
- ///
+ /// Indicates which method of an is to be called when the generated Restore Defaults menu item is clicked.
+ /// If not present on any instance method, the menu item will do nothing. If present on multiple, the first will be called.
[AttributeUsage(AttributeTargets.Method)]
- public class RestoreDefaultsAttribute : Attribute
+ public sealed class RestoreDefaultsAttribute : Attribute
{
}
}
diff --git a/BizHawk.Client.Common/lua/LuaAttributes.cs b/BizHawk.Client.Common/lua/LuaAttributes.cs
index 5c012988bd..0f9300a62c 100644
--- a/BizHawk.Client.Common/lua/LuaAttributes.cs
+++ b/BizHawk.Client.Common/lua/LuaAttributes.cs
@@ -3,7 +3,7 @@
namespace BizHawk.Client.Common
{
[AttributeUsage(AttributeTargets.Method)]
- public class LuaMethodAttribute : Attribute
+ public sealed class LuaMethodAttribute : Attribute
{
public LuaMethodAttribute(string name, string description)
{
@@ -16,7 +16,7 @@ namespace BizHawk.Client.Common
}
[AttributeUsage(AttributeTargets.Method)]
- public class LuaMethodExampleAttribute : Attribute
+ public sealed class LuaMethodExampleAttribute : Attribute
{
public LuaMethodExampleAttribute(string example)
{
@@ -27,7 +27,7 @@ namespace BizHawk.Client.Common
}
[AttributeUsage(AttributeTargets.Class)]
- public class LuaLibraryAttribute : Attribute
+ public sealed class LuaLibraryAttribute : Attribute
{
public LuaLibraryAttribute(bool released)
{
diff --git a/BizHawk.Client.Common/movie/import/IMovieImport.cs b/BizHawk.Client.Common/movie/import/IMovieImport.cs
index 47a98b897f..49dfebbb88 100644
--- a/BizHawk.Client.Common/movie/import/IMovieImport.cs
+++ b/BizHawk.Client.Common/movie/import/IMovieImport.cs
@@ -101,7 +101,7 @@ namespace BizHawk.Client.Common
}
[AttributeUsage(AttributeTargets.Class)]
- public class ImporterForAttribute : Attribute
+ public sealed class ImporterForAttribute : Attribute
{
public ImporterForAttribute(string emulator, string extension)
{
diff --git a/BizHawk.Client.EmuHawk/AVOut/IVideoWriter.cs b/BizHawk.Client.EmuHawk/AVOut/IVideoWriter.cs
index 2408564cb3..72a076f7bb 100644
--- a/BizHawk.Client.EmuHawk/AVOut/IVideoWriter.cs
+++ b/BizHawk.Client.EmuHawk/AVOut/IVideoWriter.cs
@@ -99,7 +99,7 @@ namespace BizHawk.Client.EmuHawk
}
[AttributeUsage(AttributeTargets.Class)]
- public class VideoWriterAttribute : Attribute
+ public sealed class VideoWriterAttribute : Attribute
{
public string ShortName { get; }
public string Name { get; }
@@ -114,7 +114,7 @@ namespace BizHawk.Client.EmuHawk
}
[AttributeUsage(AttributeTargets.Class)]
- public class VideoWriterIgnoreAttribute : Attribute
+ public sealed class VideoWriterIgnoreAttribute : Attribute
{
}
diff --git a/BizHawk.Client.EmuHawk/ToolAttribute.cs b/BizHawk.Client.EmuHawk/ToolAttribute.cs
index 53a2f837da..1f22ffac89 100644
--- a/BizHawk.Client.EmuHawk/ToolAttribute.cs
+++ b/BizHawk.Client.EmuHawk/ToolAttribute.cs
@@ -5,15 +5,17 @@ using System.Linq;
namespace BizHawk.Client.EmuHawk
{
[AttributeUsage(AttributeTargets.Class)]
- public class ToolAttribute : Attribute
+ public sealed class ToolAttribute : Attribute
{
- public ToolAttribute(bool released, string[] supportedSystems, string[] unsupportedCores = null)
+ public ToolAttribute(bool released, string[] supportedSystems, string[] unsupportedCores)
{
Released = released;
SupportedSystems = supportedSystems ?? Enumerable.Empty();
UnsupportedCores = unsupportedCores ?? Enumerable.Empty();
}
+ public ToolAttribute(bool released, string[] supportedSystems) : this(released, supportedSystems, null) {}
+
public bool Released { get; }
public IEnumerable SupportedSystems { get; }
diff --git a/BizHawk.Client.EmuHawk/tools/VirtualPads/schema/SchemaAttribute.cs b/BizHawk.Client.EmuHawk/tools/VirtualPads/schema/SchemaAttribute.cs
index 779f4d03b6..d46e013a1c 100644
--- a/BizHawk.Client.EmuHawk/tools/VirtualPads/schema/SchemaAttribute.cs
+++ b/BizHawk.Client.EmuHawk/tools/VirtualPads/schema/SchemaAttribute.cs
@@ -3,11 +3,8 @@
namespace BizHawk.Client.EmuHawk
{
[AttributeUsage(AttributeTargets.Class)]
- public class SchemaAttribute : Attribute
+ public sealed class SchemaAttribute : Attribute
{
- ///
- /// Gets the system id associated with this schema
- ///
public string SystemId { get; }
public SchemaAttribute(string systemId)
diff --git a/BizHawk.Common/DeepEquality.cs b/BizHawk.Common/DeepEquality.cs
index 9922bb3096..e02961c0e5 100644
--- a/BizHawk.Common/DeepEquality.cs
+++ b/BizHawk.Common/DeepEquality.cs
@@ -7,11 +7,9 @@ using System.Reflection;
namespace BizHawk.Common
{
- ///
- /// causes DeepEquality to ignore this field when determining equality
- ///
+ /// Annotated fields will not be used by for comparison.
[AttributeUsage(AttributeTargets.Field)]
- public class DeepEqualsIgnoreAttribute : Attribute
+ public sealed class DeepEqualsIgnoreAttribute : Attribute
{
}
diff --git a/BizHawk.Emulation.Common/Base Implementations/NullEmulator.cs b/BizHawk.Emulation.Common/Base Implementations/NullEmulator.cs
index 1e2bf7a617..2dc4e53db1 100644
--- a/BizHawk.Emulation.Common/Base Implementations/NullEmulator.cs
+++ b/BizHawk.Emulation.Common/Base Implementations/NullEmulator.cs
@@ -1,8 +1,21 @@
namespace BizHawk.Emulation.Common
{
[Core("NullHawk", "", false, true)]
- [ServiceNotApplicable(typeof(IStatable), typeof(ISaveRam), typeof(IDriveLight), typeof(ICodeDataLogger), typeof(IMemoryDomains), typeof(ISettable<,>),
- typeof(IDebuggable), typeof(IDisassemblable), typeof(IInputPollable), typeof(IRegionable), typeof(ITraceable), typeof(IBoardInfo), typeof(ISoundProvider))]
+ [ServiceNotApplicable(new[] {
+ typeof(IBoardInfo),
+ typeof(ICodeDataLogger),
+ typeof(IDebuggable),
+ typeof(IDisassemblable),
+ typeof(IDriveLight),
+ typeof(IInputPollable),
+ typeof(IMemoryDomains),
+ typeof(IRegionable),
+ typeof(ISaveRam),
+ typeof(ISettable<,>),
+ typeof(ISoundProvider),
+ typeof(IStatable),
+ typeof(ITraceable)
+ })]
public class NullEmulator : IEmulator, IVideoProvider
{
private readonly int[] _frameBuffer = new int[NullVideo.DefaultWidth * NullVideo.DefaultHeight];
diff --git a/BizHawk.Emulation.Common/CoreAttribute.cs b/BizHawk.Emulation.Common/CoreAttribute.cs
index d0b7012fb7..4f6f6a64ed 100644
--- a/BizHawk.Emulation.Common/CoreAttribute.cs
+++ b/BizHawk.Emulation.Common/CoreAttribute.cs
@@ -3,26 +3,22 @@
namespace BizHawk.Emulation.Common
{
[AttributeUsage(AttributeTargets.Class)]
- public class CoreAttribute : Attribute
+ public sealed class CoreAttribute : Attribute
{
- public CoreAttribute(
- string name,
- string author,
- bool isPorted = false,
- bool isReleased = false,
- string portedVersion = "",
- string portedUrl = "",
- bool singleInstance = false)
+ public CoreAttribute(string name, string author, bool isPorted, bool isReleased, string portedVersion, string portedUrl, bool singleInstance)
{
CoreName = name;
Author = author;
Ported = isPorted;
Released = isReleased;
- PortedVersion = portedVersion;
- PortedUrl = portedUrl;
+ PortedVersion = portedVersion ?? string.Empty;
+ PortedUrl = portedUrl ?? string.Empty;
SingleInstance = singleInstance;
}
+ public CoreAttribute(string name, string author, bool isPorted, bool isReleased)
+ : this(name, author, isPorted, isReleased, null, null, false) {}
+
public string CoreName { get; }
public string Author { get; }
public bool Ported { get; }
diff --git a/BizHawk.Emulation.Common/ServiceAttributes.cs b/BizHawk.Emulation.Common/ServiceAttributes.cs
index 768539b0ae..a382e747d3 100644
--- a/BizHawk.Emulation.Common/ServiceAttributes.cs
+++ b/BizHawk.Emulation.Common/ServiceAttributes.cs
@@ -4,26 +4,27 @@ using System.Linq;
namespace BizHawk.Emulation.Common
{
- ///
- /// Should be added to any field of an IEmulatorService that is not implemented.
- /// By Convention it should also throw a NotImplementedException
- /// Any feature that does not have this attribute is assumed to be implemented
- ///
- public class FeatureNotImplementedAttribute : Attribute
+ /// Indicates that a method (or property getter/setter) inherited from a has yet to be implemented.
+ ///
+ /// By convention, calling a method with this attribute should throw a .
+ /// If this attribute is not present on an implementation, it is assumed that the method is implemented and working.
+ ///
+ [AttributeUsage(AttributeTargets.Method | AttributeTargets.Property)]
+ public sealed class FeatureNotImplementedAttribute : Attribute
{
}
- ///
- /// Should be added to any implementation of IEmulator to document any
- /// IEmulatorService (that is not an ISpecializedEmulatorService) that
- /// by design, will not be implemented by the core
- /// Any service that is unimplemented and not marked with this attribute is
- /// assumed to be a "TODO" that needs to be done but hasn't been done yet
- ///
+ /// Indicates that a class intentionally does not inherit from the specified IEmulatorServices, and will never do so.
+ ///
+ /// ISpecializedEmulatorServices that a core doesn't implement should not be listed, as the semantic of only being applicable to some cores is already clear.
+ /// Any which isn't specified and is also not implemented is assumed to be a work-in-progress.
+ /// These should be implemented as soon as possible, simply throwing a on call, and should be annotated with .
+ ///
[AttributeUsage(AttributeTargets.Class)]
- public class ServiceNotApplicableAttribute : Attribute
+ public sealed class ServiceNotApplicableAttribute : Attribute
{
- public ServiceNotApplicableAttribute(params Type[] types)
+ /// TODO neither array nor is the correct collection to be using here, try / instead
+ public ServiceNotApplicableAttribute(Type[] types)
{
NotApplicableTypes = types?.AsEnumerable() ?? Enumerable.Empty();
}
diff --git a/BizHawk.Emulation.Common/ServiceInjector.cs b/BizHawk.Emulation.Common/ServiceInjector.cs
index a80973a932..ca3c6cbedb 100644
--- a/BizHawk.Emulation.Common/ServiceInjector.cs
+++ b/BizHawk.Emulation.Common/ServiceInjector.cs
@@ -68,12 +68,12 @@ namespace BizHawk.Emulation.Common
}
[AttributeUsage(AttributeTargets.Property)]
- public class RequiredServiceAttribute : Attribute
+ public sealed class RequiredServiceAttribute : Attribute
{
}
[AttributeUsage(AttributeTargets.Property)]
- public class OptionalServiceAttribute : Attribute
+ public sealed class OptionalServiceAttribute : Attribute
{
}
}
diff --git a/BizHawk.Emulation.Cores/Arcades/MAME/MAME.cs b/BizHawk.Emulation.Cores/Arcades/MAME/MAME.cs
index 4aeb168c1e..4dab9dc3be 100644
--- a/BizHawk.Emulation.Cores/Arcades/MAME/MAME.cs
+++ b/BizHawk.Emulation.Cores/Arcades/MAME/MAME.cs
@@ -15,6 +15,7 @@ namespace BizHawk.Emulation.Cores.Arcades.MAME
name: "MAME",
author: "MAMEDev",
isPorted: true,
+ isReleased: false,
portedVersion: "0.217",
portedUrl: "https://github.com/mamedev/mame.git",
singleInstance: false)]
diff --git a/BizHawk.Emulation.Cores/Calculator/TI83.cs b/BizHawk.Emulation.Cores/Calculator/TI83.cs
index 3a5e67c886..7058742f08 100644
--- a/BizHawk.Emulation.Cores/Calculator/TI83.cs
+++ b/BizHawk.Emulation.Cores/Calculator/TI83.cs
@@ -10,7 +10,7 @@ namespace BizHawk.Emulation.Cores.Calculators
"zeromus",
isPorted: false,
isReleased: true)]
- [ServiceNotApplicable(typeof(ISoundProvider), typeof(ISaveRam), typeof(IRegionable), typeof(IDriveLight), typeof(IBoardInfo))]
+ [ServiceNotApplicable(new[] { typeof(IBoardInfo), typeof(IDriveLight), typeof(IRegionable), typeof(ISaveRam), typeof(ISoundProvider) })]
public partial class TI83 : IEmulator, IVideoProvider, IDebuggable, IInputPollable, ISettable
{
[CoreConstructor("TI83")]
diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.cs b/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.cs
index 69e356a006..b5ed1872a8 100644
--- a/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.cs
+++ b/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.cs
@@ -11,7 +11,7 @@ namespace BizHawk.Emulation.Cores.Computers.AppleII
"fool",
isPorted: true,
isReleased: true)]
- [ServiceNotApplicable(typeof(ISaveRam), typeof(IRegionable), typeof(IBoardInfo))]
+ [ServiceNotApplicable(new[] { typeof(IBoardInfo), typeof(IRegionable), typeof(ISaveRam) })]
public partial class AppleII : IEmulator, ISoundProvider, IVideoProvider, IStatable, IDriveLight
{
static AppleII()
diff --git a/BizHawk.Emulation.Cores/Computers/MSX/MSX.cs b/BizHawk.Emulation.Cores/Computers/MSX/MSX.cs
index 16dbe783bd..4aacc44881 100644
--- a/BizHawk.Emulation.Cores/Computers/MSX/MSX.cs
+++ b/BizHawk.Emulation.Cores/Computers/MSX/MSX.cs
@@ -9,7 +9,7 @@ namespace BizHawk.Emulation.Cores.Computers.MSX
"",
isPorted: false,
isReleased: false)]
- [ServiceNotApplicable(typeof(IDriveLight))]
+ [ServiceNotApplicable(new[] { typeof(IDriveLight) })]
public partial class MSX : IEmulator, IVideoProvider, ISoundProvider, ISaveRam, IInputPollable, IRegionable, ISettable
{
[CoreConstructor("MSX")]
diff --git a/BizHawk.Emulation.Cores/Consoles/Atari/2600/Atari2600.cs b/BizHawk.Emulation.Cores/Consoles/Atari/2600/Atari2600.cs
index 15a7941276..0e9a5f8d4e 100644
--- a/BizHawk.Emulation.Cores/Consoles/Atari/2600/Atari2600.cs
+++ b/BizHawk.Emulation.Cores/Consoles/Atari/2600/Atari2600.cs
@@ -11,7 +11,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
"Micro500, Alyosha, adelikat, natt",
isPorted: false,
isReleased: true)]
- [ServiceNotApplicable(typeof(ISaveRam), typeof(IDriveLight))]
+ [ServiceNotApplicable(new[] { typeof(IDriveLight), typeof(ISaveRam) })]
public partial class Atari2600 : IEmulator, IDebuggable, IInputPollable, IBoardInfo,
IRegionable, ICreateGameDBEntries, ISettable
{
diff --git a/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/A7800Hawk.cs b/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/A7800Hawk.cs
index fc18205437..4592226767 100644
--- a/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/A7800Hawk.cs
+++ b/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/A7800Hawk.cs
@@ -12,7 +12,7 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
"",
isPorted: false,
isReleased: true)]
- [ServiceNotApplicable(typeof(ISettable<,>), typeof(IDriveLight))]
+ [ServiceNotApplicable(new[] { typeof(IDriveLight), typeof(ISettable<,>) })]
public partial class A7800Hawk : IEmulator, ISaveRam, IDebuggable, IInputPollable,
IRegionable, IBoardInfo, ISettable
{
diff --git a/BizHawk.Emulation.Cores/Consoles/Atari/lynx/Lynx.cs b/BizHawk.Emulation.Cores/Consoles/Atari/lynx/Lynx.cs
index 4cb018b774..663431e6f7 100644
--- a/BizHawk.Emulation.Cores/Consoles/Atari/lynx/Lynx.cs
+++ b/BizHawk.Emulation.Cores/Consoles/Atari/lynx/Lynx.cs
@@ -6,8 +6,8 @@ using BizHawk.Emulation.Common;
namespace BizHawk.Emulation.Cores.Atari.Lynx
{
- [Core("Handy", "K. Wilkins, Mednafen Team", true, true, "mednafen 0-9-34-1", "http://mednafen.sourceforge.net/")]
- [ServiceNotApplicable(typeof(ISettable<,>), typeof(IDriveLight), typeof(IRegionable))]
+ [Core("Handy", "K. Wilkins, Mednafen Team", true, true, "mednafen 0-9-34-1", "http://mednafen.sourceforge.net/", false)]
+ [ServiceNotApplicable(new[] { typeof(IDriveLight), typeof(IRegionable), typeof(ISettable<,>) })]
public partial class Lynx : IEmulator, IVideoProvider, ISoundProvider, ISaveRam, IStatable, IInputPollable
{
[CoreConstructor("Lynx")]
diff --git a/BizHawk.Emulation.Cores/Consoles/Coleco/ColecoVision.cs b/BizHawk.Emulation.Cores/Consoles/Coleco/ColecoVision.cs
index 23e38e53c1..adfd687de1 100644
--- a/BizHawk.Emulation.Cores/Consoles/Coleco/ColecoVision.cs
+++ b/BizHawk.Emulation.Cores/Consoles/Coleco/ColecoVision.cs
@@ -9,7 +9,7 @@ namespace BizHawk.Emulation.Cores.ColecoVision
"Vecna",
isPorted: false,
isReleased: true)]
- [ServiceNotApplicable(typeof(ISaveRam), typeof(IDriveLight))]
+ [ServiceNotApplicable(new[] { typeof(IDriveLight), typeof(ISaveRam) })]
public sealed partial class ColecoVision : IEmulator, IDebuggable, IInputPollable, ISettable
{
[CoreConstructor("Coleco")]
diff --git a/BizHawk.Emulation.Cores/Consoles/Fairchild/ChannelF/ChannelF.cs b/BizHawk.Emulation.Cores/Consoles/Fairchild/ChannelF/ChannelF.cs
index 640841c5b2..3710eb0ad8 100644
--- a/BizHawk.Emulation.Cores/Consoles/Fairchild/ChannelF/ChannelF.cs
+++ b/BizHawk.Emulation.Cores/Consoles/Fairchild/ChannelF/ChannelF.cs
@@ -8,7 +8,7 @@ namespace BizHawk.Emulation.Cores.Consoles.ChannelF
"Asnivor",
isPorted: false,
isReleased: false)]
- [ServiceNotApplicable(typeof(IDriveLight))]
+ [ServiceNotApplicable(new[] { typeof(IDriveLight) })]
public partial class ChannelF
{
public ChannelF(CoreComm comm, GameInfo game, byte[] rom, object settings, object syncSettings)
diff --git a/BizHawk.Emulation.Cores/Consoles/GCE/Vectrex/VectrexHawk.cs b/BizHawk.Emulation.Cores/Consoles/GCE/Vectrex/VectrexHawk.cs
index f51e074e5b..778496181d 100644
--- a/BizHawk.Emulation.Cores/Consoles/GCE/Vectrex/VectrexHawk.cs
+++ b/BizHawk.Emulation.Cores/Consoles/GCE/Vectrex/VectrexHawk.cs
@@ -11,7 +11,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Vectrex
"",
isPorted: false,
isReleased: true)]
- [ServiceNotApplicable(typeof(IDriveLight))]
+ [ServiceNotApplicable(new[] { typeof(IDriveLight) })]
public partial class VectrexHawk : IEmulator, ISaveRam, IDebuggable, IInputPollable, IRegionable,
ISettable
{
diff --git a/BizHawk.Emulation.Cores/Consoles/Intellivision/Intellivision.cs b/BizHawk.Emulation.Cores/Consoles/Intellivision/Intellivision.cs
index ddbab5f9eb..54daa229fe 100644
--- a/BizHawk.Emulation.Cores/Consoles/Intellivision/Intellivision.cs
+++ b/BizHawk.Emulation.Cores/Consoles/Intellivision/Intellivision.cs
@@ -10,7 +10,7 @@ namespace BizHawk.Emulation.Cores.Intellivision
"BrandonE, Alyosha",
isPorted: false,
isReleased: true)]
- [ServiceNotApplicable(typeof(ISaveRam), typeof(IDriveLight), typeof(IRegionable))]
+ [ServiceNotApplicable(new[] { typeof(IDriveLight), typeof(IRegionable), typeof(ISaveRam) })]
public sealed partial class Intellivision : IEmulator, IInputPollable, IDisassemblable,
IBoardInfo, IDebuggable, ISettable
{
diff --git a/BizHawk.Emulation.Cores/Consoles/Magnavox/Odyssey2/O2Hawk.cs b/BizHawk.Emulation.Cores/Consoles/Magnavox/Odyssey2/O2Hawk.cs
index c459533aac..411bdce87e 100644
--- a/BizHawk.Emulation.Cores/Consoles/Magnavox/Odyssey2/O2Hawk.cs
+++ b/BizHawk.Emulation.Cores/Consoles/Magnavox/Odyssey2/O2Hawk.cs
@@ -11,7 +11,7 @@ namespace BizHawk.Emulation.Cores.Consoles.O2Hawk
"",
isPorted: false,
isReleased: false)]
- [ServiceNotApplicable(typeof(IDriveLight))]
+ [ServiceNotApplicable(new[] { typeof(IDriveLight) })]
public partial class O2Hawk : IEmulator, ISaveRam, IDebuggable, IInputPollable, IRegionable, ISettable
{
// memory domains
diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/MGBAHawk.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/MGBAHawk.cs
index 84a24bf557..2bd1864ee0 100644
--- a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/MGBAHawk.cs
+++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/MGBAHawk.cs
@@ -5,7 +5,7 @@ using BizHawk.Emulation.Common;
namespace BizHawk.Emulation.Cores.Nintendo.GBA
{
[Core("mGBA", "endrift", true, true, "0.8", "https://mgba.io/", false)]
- [ServiceNotApplicable(typeof(IDriveLight), typeof(IRegionable))]
+ [ServiceNotApplicable(new[] { typeof(IDriveLight), typeof(IRegionable) })]
public partial class MGBAHawk : IEmulator, IVideoProvider, ISoundProvider, IGBAGPUViewable,
ISaveRam, IStatable, IInputPollable, ISettable,
IDebuggable
diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/VBANext.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/VBANext.cs
index 3c0b797434..dff975142e 100644
--- a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/VBANext.cs
+++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/VBANext.cs
@@ -7,8 +7,8 @@ using BizHawk.Emulation.Cores.Components.ARM;
namespace BizHawk.Emulation.Cores.Nintendo.GBA
{
- [Core("VBA-Next", "many authors", true, true, "cd508312a29ed8c29dacac1b11c2dce56c338a54", "https://github.com/libretro/vba-next")]
- [ServiceNotApplicable(typeof(IDriveLight), typeof(IRegionable))]
+ [Core("VBA-Next", "many authors", true, true, "cd508312a29ed8c29dacac1b11c2dce56c338a54", "https://github.com/libretro/vba-next", false)]
+ [ServiceNotApplicable(new[] { typeof(IDriveLight), typeof(IRegionable) })]
public partial class VBANext : IEmulator, IVideoProvider, ISoundProvider, IInputPollable,
IGBAGPUViewable, ISaveRam, IStatable, IDebuggable, ISettable