void LoadOne(string f) { current = new Result { Filename = f }; bool result = false; try { result = ldr.LoadRom(f, Comm); } catch (Exception e) { current.Status = Result.EStatus.ExceptOnLoad; current.Messages.Add(e.ToString()); Results.Add(current); current = null; return; } current.Fullname = ldr.CanonicalFullPath; if (current.Status == Result.EStatus.ErrorOnLoad) { Results.Add(current); current = null; return; } if (result == false) { current.Status = Result.EStatus.FalseOnLoad; Results.Add(current); current = null; return; } using (IEmulator emu = ldr.LoadedEmulator) { current.GI = ldr.Game; current.CoreType = emu.GetType(); emu.Controller = new Controller(emu.ControllerDefinition); current.BoardName = emu.BoardName; // hack if (emu is Emulation.Cores.Nintendo.GBA.VBANext) { current.BoardName = (emu as Emulation.Cores.Nintendo.GBA.VBANext).GameCode; } current.Frames = 0; current.LaggedFrames = 0; for (int i = 0; i < numframes; i++) { try { int nsamp; short[] samp; emu.FrameAdvance(true, true); // some cores really really really like it if you drain their audio every frame emu.SyncSoundProvider.GetSamples(out samp, out nsamp); current.Frames++; if (emu.CanPollInput() && emu.AsInputPollable().IsLagFrame) { current.LaggedFrames++; } } catch (Exception e) { current.Messages.Add(e.ToString()); current.Status = Result.EStatus.ExceptOnAdv; Results.Add(current); current = null; return; } } } current.Status = Result.EStatus.Success; Results.Add(current); current = null; return; }
private void LoadOne(string f) { _current = new Result { Filename = f }; bool result; try { result = _ldr.LoadRom(f, _comm, null); } catch (Exception e) { _current.Status = Result.EStatus.ExceptOnLoad; _current.Messages.Add(e.ToString()); _results.Add(_current); _current = null; return; } _current.Fullname = _ldr.CanonicalFullPath; if (_current.Status == Result.EStatus.ErrorOnLoad) { _results.Add(_current); _current = null; return; } if (result == false) { _current.Status = Result.EStatus.FalseOnLoad; _results.Add(_current); _current = null; return; } using (IEmulator emu = _ldr.LoadedEmulator) { _current.Game = _ldr.Game; _current.CoreType = emu.GetType(); var controller = new Controller(emu.ControllerDefinition); _current.BoardName = emu.HasBoardInfo() ? emu.AsBoardInfo().BoardName : null; _current.Frames = 0; _current.LaggedFrames = 0; for (int i = 0; i < _numFrames; i++) { try { emu.FrameAdvance(controller, true); // some cores really really really like it if you drain their audio every frame if (emu.HasSoundProvider()) { emu.AsSoundProvider().GetSamplesSync(out _, out _); } _current.Frames++; if (emu.CanPollInput() && emu.AsInputPollable().IsLagFrame) { _current.LaggedFrames++; } } catch (Exception e) { _current.Messages.Add(e.ToString()); _current.Status = Result.EStatus.ExceptOnAdv; _results.Add(_current); _current = null; return; } } } _current.Status = Result.EStatus.Success; _results.Add(_current); _current = null; }