• Introduction
  • C# API
  • GraphQL API
  • Home
  • Blog
  • Docs
  • GitHub
  • Snowflake.Orchestration.Extensibility
  • IEmulatorOrchestrator
Show / Hide Table of Contents
  • Snowflake.Configuration
    • ConfigurationCollection<T>
    • ConfigurationCollectionDescriptor<T>
    • ConfigurationOptionDescriptor
    • ConfigurationOptionType
    • ConfigurationSection<T>
    • ConfigurationSectionDescriptor<T>
    • ConfigurationValueCollection
    • IConfigurationCollection
    • IConfigurationCollection<T>
    • IConfigurationCollectionDescriptor
    • IConfigurationOptionDescriptor
    • IConfigurationProperty
    • IConfigurationSection
    • IConfigurationSection<T>
    • IConfigurationSectionDescriptor
    • IConfigurationTypeMapper
    • IConfigurationValue
    • IConfigurationValueCollection
    • ISelectionOptionDescriptor
    • PathType
    • SelectionOptionDescriptor
  • Snowflake.Configuration.Attributes
    • ConfigurationOptionAttribute
    • ConfigurationSectionAttribute
    • ConfigurationTargetAttribute
    • ConfigurationTargetMemberAttribute
    • CustomMetadataAttribute
    • InputTemplateAttribute
    • SelectionOptionAttribute
  • Snowflake.Configuration.Input
    • DictionaryInputMapping
    • IDeviceInputMapping
    • IInputOption
    • IInputSerializer
    • IInputTemplate
    • IInputTemplate<T>
    • InputConfigurationSection<T>
    • InputOption
    • InputOptionAttribute
    • InputTemplate<T>
  • Snowflake.Configuration.Interceptors
    • ConfigurationInterceptor
  • Snowflake.Configuration.Serialization
    • AbstractConfigurationNode<T>
    • BooleanConfigurationNode
    • ConfigurationTarget
    • ConfigurationTraversalContext
    • DecimalConfigurationNode
    • DeviceCapabilityElementConfigurationNode
    • EnumConfigurationNode
    • IAbstractConfigurationNode
    • IAbstractConfigurationNode<T>
    • IConfigurationSerializationContext<T>
    • IConfigurationTarget
    • IConfigurationTransformer<TOutput>
    • IConfigurationTraversalContext
    • IntegralConfigurationNode
    • ListConfigurationNode
    • StringConfigurationNode
    • UnknownConfigurationNode
  • Snowflake.Configuration.Serialization.Serializers
    • AbstractStringConfigurationSerializer
    • ConfigurationSerializer<T>
    • StringSerializationContext
    • StringSerializationContextExtensions
  • Snowflake.Configuration.Serialization.Serializers.Implementations
    • SimpleCfgConfigurationSerializer
    • SimpleIniConfigurationSerializer
    • SimpleJsonConfigurationSerializer
    • SimpleXmlConfigurationSerializer
  • Snowflake.Extensibility
    • IEmptyPluginConfiguration
    • ILogger
    • IPlugin
    • IPluginCollection<T>
    • LogLevel
    • PluginAttribute
    • PluginCollection<T>
    • PluginInfoFields
  • Snowflake.Extensibility.Configuration
    • IPluginConfigurationStore
  • Snowflake.Extensibility.Provisioning
    • IPluginProperties
    • IPluginProvision
    • IProvisionedPlugin
    • PluginProvision
    • ProvisionedPlugin
  • Snowflake.Extensibility.Provisioning.Standalone
    • StandalonePlugin
    • StandalonePluginProvision
  • Snowflake.Extensibility.Queueing
    • IAsyncJobQueue
    • IAsyncJobQueue<T>
    • IAsyncJobQueue<TAsyncEnumerable, T>
    • IAsyncJobQueueFactory
  • Snowflake.Filesystem
    • DirectoryExtensions
    • FileExtensions
    • IDirectory
    • IFile
    • IIndelibleDirectory
    • IReadOnlyDirectory
    • IReadOnlyFile
  • Snowflake.Input.Controller
    • ControllerElement
    • ControllerElementCollection
    • ControllerElementExtensions
    • ControllerElementInfo
    • ControllerElementType
    • ControllerElementTypeExtensions
    • ControllerId
    • IControllerElementCollection
    • IControllerElementInfo
    • IControllerLayout
    • InvalidControllerIdException
  • Snowflake.Input.Controller.Mapped
    • ControllerElementMapping
    • ControllerElementMappingProfile
    • IControllerElementMappingProfile
    • IControllerElementMappingProfileStore
  • Snowflake.Input.Device
    • DefaultDeviceCapabilityLabels
    • DeviceCapability
    • DeviceCapabilityClass
    • DeviceCapabilityClasses
    • DeviceCapabilityExtensions
    • DeviceLayoutMapping
    • DictionaryDeviceCapabilityLabels
    • DirectInputDeviceInstance
    • IDeviceCapabilityLabels
    • IDeviceLayoutMapping
    • IInputDevice
    • IInputDeviceInstance
    • InputDriver
    • KeyboardDeviceInstance
    • PassthroughDeviceInstance
    • XInputDeviceInstance
  • Snowflake.Installation
    • AsyncInstallTask<T>
    • AsyncInstallTaskEnumerable<T>
    • ITaskResult
    • TaskResult
    • TaskResult<T>
  • Snowflake.Installation.Extensibility
    • GameInstaller
    • IGameInstaller
    • IInstallable
    • Installable
    • SupportedPlatformAttribute
  • Snowflake.Installation.Tasks
    • CopyDirectoryContentsTask
    • CopyFileTask
    • ExecuteAsyncTask<TResult>
    • ExtractZipTask
    • FailureTask<T>
  • Snowflake.Loader
    • IComposable
    • IModule
    • IModuleEnumerator
    • IModuleLoader<T>
    • ImportServiceAttribute
    • IServiceRepository
    • Module
  • Snowflake.Model.Database.Exceptions
    • DependentEntityNotExistsException
    • EntityAlreadyExistsException
  • Snowflake.Model.Database.Migrations
    • Empty
    • InitialCreate
  • Snowflake.Model.Game
    • Game
    • IGame
    • IGameExtension
    • IGameLibrary
    • IPlatformInfo
    • ISystemFile
    • PlatformId
  • Snowflake.Model.Game.LibraryExtensions
    • GameConfigurationExtensionExtensions
    • GameFileExtensionExtensions
    • IGameConfigurationExtension
    • IGameConfigurationExtensionProvider
    • IGameExtensionProvider
    • IGameExtensionProvider<TExtension>
    • IGameFileExtension
    • IGameFileExtensionProvider
  • Snowflake.Model.Records
    • FileRecord
    • GameRecord
    • IMetadataCollection
    • IRecord
    • IRecordMetadata
    • IRecordMetadataQuery
    • MetadataCollection
    • RecordMetadata
  • Snowflake.Model.Records.File
    • FileMetadataKeys
    • IFileRecord
    • ImageMetadataKeys
    • ImageTypes
  • Snowflake.Model.Records.Game
    • GameMetadataKeys
    • IGameRecord
    • IGameRecordQuery
  • Snowflake.Orchestration.Extensibility
    • EmulatedController
    • EmulatedPortsManager
    • EmulatorCompatibility
    • EmulatorOrchestrator
    • GameEmulation
    • GameEmulation<TConfigurationCollection>
    • GameEmulationState
    • IEmulatedController
    • IEmulatedPortDeviceEntry
    • IEmulatedPortsManager
    • IEmulatedPortStore
    • IEmulatorOrchestrator
    • IGameEmulation
  • Snowflake.Orchestration.Extensibility.Extensions
    • DeviceEnumeratorExtensions
  • Snowflake.Orchestration.Process
    • IEmulatorExecutable
    • IEmulatorExecutableProvider
    • IProcessBuilder
    • ProcessExtensions
  • Snowflake.Orchestration.Saving
    • GameFileExtensionGameSaveManagerExtensions
    • IGameSaveManager
    • ISaveGame
    • ISaveProfile
    • SaveGame
    • SaveManagementStrategy
  • Snowflake.Orchestration.SystemFiles
    • ISystemFileProvider
  • Snowflake.Persistence
    • ISqlDatabase
    • SqliteDatabase
    • SqliteMemoryDatabase
  • Snowflake.Remoting.Electron
    • IElectronPackage
    • IElectronPackageProvider
  • Snowflake.Remoting.Kestrel
    • IKestrelServerMiddlewareProvider
    • IKestrelWebServerService
  • Snowflake.Romfile
    • IFileSignature
    • IRomFileInfo
    • IStructuredFilename
    • NamingConvention
    • RomFileInfo
    • StructuredFilename
  • Snowflake.Romfile.Extensions
    • StringExtensions
  • Snowflake.Romfile.Tokenizer
    • FieldType
    • GoodToolsTokenClassifier
    • NoIntroTokenClassifier
    • StructuredFilenameToken
  • Snowflake.Scraping
    • GameScrapeContext
    • IScrapeContext
    • ISeed
    • ISeedRootContext
    • Seed
    • SeedContent
    • SeedRootContext
  • Snowflake.Scraping.Extensibility
    • AttachTarget
    • Culler
    • Directive
    • DirectiveAttribute
    • FileInstallationTraverserBase
    • GameMetadataTraverserBase
    • ICuller
    • IFileInstallationTraverser
    • IGameMetadataTraverser
    • IScraper
    • IScraperDirective
    • ITraverser<TProducts, TEffectTarget>
    • Scraper
    • SeedBuilder
    • SeedTree
    • Traverser<TProducts, TEffectTarget>
  • Snowflake.Services
    • IContentDirectoryProvider
    • IDeviceEnumerator
    • ILogProvider
    • IPluginManager
    • IServiceEnumerator
    • IServiceRegistrationProvider
    • IStoneProvider
  • Snowflake.Shiragame
    • IRomInfo
    • ISerialInfo
    • IShiragameProvider
    • RomInfo
    • SerialInfo

Interface IEmulatorOrchestrator

An IEmulatorOrchestrator is responsible for orchestrating the emulator, or emulation of a given game. This may be done through manipulation of configuration files and command line arguments, or by directly running the game, but this is abstracted using the provisioning of IGameEmulation instances.

Inherited Members
IPlugin.Name
IPlugin.Author
IPlugin.Description
IPlugin.Version
System.IDisposable.Dispose()
Namespace: Snowflake.Orchestration.Extensibility
Assembly: Snowflake.Framework.Primitives.dll
Syntax
public interface IEmulatorOrchestrator : IPlugin, IDisposable

Methods

CheckCompatibility(IGame)

Checks if a certain game is compatible with this emulator, or if some extra work is required.

Declaration
EmulatorCompatibility CheckCompatibility(IGame game)
Parameters
Type Name Description
IGame game

The game to check compatibility for.

Returns
Type Description
EmulatorCompatibility

The compatibility level this emulator has with the game.

CheckMissingSystemFiles(IGame)

Gets a list of BIOS files that are missing from the ISystemFileProvider service that are necessary to run the given game. If any of these are missing, then execution SHOULD NOT continue.

Declaration
IEnumerable<ISystemFile> CheckMissingSystemFiles(IGame game)
Parameters
Type Name Description
IGame game

The game that is to be run.

Returns
Type Description
System.Collections.Generic.IEnumerable<ISystemFile>

A list of BIOS files that are missing that are required to run the given game.

CreateGameConfiguration(IGame, String)

Creates a new game configuration for this game, used to configure the game for this orchestrator, returning the inner-type erased generic IConfigurationCollection for this game.

Declaration
IConfigurationCollection CreateGameConfiguration(IGame game, string profileName)
Parameters
Type Name Description
IGame game

The game to retrieve configuration for.

System.String profileName

The profile name of the new configuration collection.

Returns
Type Description
IConfigurationCollection

GetConfigurationProfiles(IGame)

Retrieves the names of configuration profiles for this game.

Declaration
IEnumerable<(string profileName, Guid collectionGuid)> GetConfigurationProfiles(IGame game)
Parameters
Type Name Description
IGame game

The game to retrieve configuration profiles for.

Returns
Type Description
System.Collections.Generic.IEnumerable<System.ValueTuple<System.String, System.Guid>>

A list of configuration profile names saved for this game.

GetGameConfiguration(IGame, Guid)

Gets the inner-type erased generic IConfigurationCollection for this game, used to configure the game for this orchestrator.

Declaration
IConfigurationCollection GetGameConfiguration(IGame game, Guid collectionGuid)
Parameters
Type Name Description
IGame game

The game to retrieve configuration for.

System.Guid collectionGuid

The value collection GUID of the target configuration.

Returns
Type Description
IConfigurationCollection

ProvisionEmulationInstance(IGame, IEnumerable<IEmulatedController>, Guid, ISaveProfile)

Provision the emulation instance to run the game.

Declaration
IGameEmulation ProvisionEmulationInstance(IGame game, IEnumerable<IEmulatedController> controllerPorts, Guid configurationProfile, ISaveProfile saveProfile)
Parameters
Type Name Description
IGame game

The game to be run.

System.Collections.Generic.IEnumerable<IEmulatedController> controllerPorts

The input devices to be used during the emulation.

System.Guid configurationProfile

The collection GUID of the configuration profile.

ISaveProfile saveProfile

The save profile to manage savedata with.

Returns
Type Description
IGameEmulation

An emulator specific IGameEmulation instance that can be used to begin the emulation.

ValidateGamePrerequisites(IGame)

Validates game prerequisites, and transforms if necessary, any files registered with the game into a format usable for this particular IEmulatorOrchestrator.

If such format already exists, do nothing.

Declaration
IAsyncEnumerable<TaskResult<IFile>> ValidateGamePrerequisites(IGame game)
Parameters
Type Name Description
IGame game

The game that is to be run.

Returns
Type Description
System.Collections.Generic.IAsyncEnumerable<TaskResult<IFile>>

A queuable installation job that transforms the files of the game into a format usable for this particular IEmulatorOrchestrator.

In This Article
  • Methods
    • CheckCompatibility(IGame)
    • CheckMissingSystemFiles(IGame)
    • CreateGameConfiguration(IGame, String)
    • GetConfigurationProfiles(IGame)
    • GetGameConfiguration(IGame, Guid)
    • ProvisionEmulationInstance(IGame, IEnumerable<IEmulatedController>, Guid, ISaveProfile)
    • ValidateGamePrerequisites(IGame)
Built with ❤️ by @chyyran. Text content licensed under CC-BY-SA 4.0.