Exemple #1
0
        private PinMame(PinMameAudioFormat audioFormat, int sampleRate, string vpmPath)
        {
            Logger.Info($"PinMame - audioFormat={audioFormat}, sampleRate={sampleRate}, vpmPath={vpmPath}");

            var path = vpmPath ?? GetVpmPath();

            if (path == null)
            {
                throw new ArgumentException("Could not determine VPM path. Either install VPinMAME or provide it manually.", nameof(vpmPath));
            }

            if (!Directory.Exists(path))
            {
                throw new ArgumentException($"Could not find VPM path - {path} does not exist.", nameof(vpmPath));
            }

            _config = new PinMameApi.PinmameConfig {
                audioFormat          = (PinMameApi.PinmameAudioFormat)audioFormat,
                sampleRate           = sampleRate,
                vpmPath              = path + Path.DirectorySeparatorChar,
                onStateUpdated       = OnStateUpdatedCallback,
                onDisplayAvailable   = OnDisplayAvailableCallback,
                onDisplayUpdated     = OnDisplayUpdatedCallback,
                onAudioAvailable     = OnAudioAvailableCallback,
                onAudioUpdated       = OnAudioUpdatedCallback,
                onMechAvailable      = OnMechAvailableCallback,
                onMechUpdated        = OnMechUpdatedCallback,
                onSolenoidUpdated    = OnSolenoidUpdatedCallback,
                onConsoleDataUpdated = OnConsoleDataUpdatedCallback,
                isKeyPressed         = IsKeyPressedFunction,
            };
            PinMameApi.PinmameSetConfig(ref _config);
        }
 internal PinMameAudioInfo(PinMameApi.PinmameAudioInfo audioInfo)
 {
     Format          = (PinMameAudioFormat)audioInfo.format;
     Channels        = audioInfo.channels;
     SampleRate      = audioInfo.sampleRate;
     FramesPerSecond = audioInfo.framesPerSecond;
     SamplesPerFrame = audioInfo.samplesPerFrame;
     BufferSize      = audioInfo.bufferSize;
 }
Exemple #3
0
 /// <summary>
 /// Creates or retrieves the PinMame instance.
 /// </summary>
 /// <param name="audioFormat">Audio format (Int16 / Float)</param>
 /// <param name="sampleRate">Audio sample rate</param>
 /// <param name="vpmPath">Fallback path for VPM folder, if VPM is not registered</param>
 /// <exception cref="ArgumentException">If VPM cannot be found</exception>
 public static PinMame Instance(PinMameAudioFormat audioFormat = PinMameAudioFormat.AudioFormatInt16, int sampleRate = 48000, string vpmPath = null) =>
 _instance ?? (_instance = new PinMame(audioFormat, sampleRate, vpmPath));