public bool FrameAdvance(IController controller, bool render, bool rendersound = true) { CheckDisposed(); using (FP.Save()) { if (controller.IsPressed("Power")) { QN.qn_reset(Context, true); } if (controller.IsPressed("Reset")) { QN.qn_reset(Context, false); } int j1, j2; SetPads(controller, out j1, out j2); if (Tracer.Enabled) { QN.qn_set_tracecb(Context, _tracecb); } else { QN.qn_set_tracecb(Context, null); } Frame++; LibQuickNES.ThrowStringError(QN.qn_emulate_frame(Context, j1, j2)); IsLagFrame = QN.qn_get_joypad_read_count(Context) == 0; if (IsLagFrame) { LagCount++; } if (render) { Blit(); } if (rendersound) { DrainAudio(); } if (CB1 != null) { CB1(); } if (CB2 != null) { CB2(); } } return(true); }
public void FrameAdvance(bool render, bool rendersound = true) { using (FP.Save()) { if (Controller["Power"]) { LibQuickNES.qn_reset(Context, true); } if (Controller["Reset"]) { LibQuickNES.qn_reset(Context, false); } int j1, j2; SetPads(out j1, out j2); Frame++; LibQuickNES.ThrowStringError(LibQuickNES.qn_emulate_frame(Context, j1, j2)); IsLagFrame = LibQuickNES.qn_get_joypad_read_count(Context) == 0; if (IsLagFrame) { LagCount++; } Blit(); DrainAudio(); } }
public bool FrameAdvance(IController controller, bool render, bool rendersound = true) { CheckDisposed(); using (FP.Save()) { if (controller.IsPressed("Power")) { QN.qn_reset(Context, true); } if (controller.IsPressed("Reset")) { QN.qn_reset(Context, false); } SetPads(controller, out var j1, out var j2); QN.qn_set_tracecb(Context, Tracer.IsEnabled() ? _traceCb : null); LibQuickNES.ThrowStringError(QN.qn_emulate_frame(Context, j1, j2)); IsLagFrame = QN.qn_get_joypad_read_count(Context) == 0; if (IsLagFrame) { LagCount++; } if (render) { Blit(); } if (rendersound) { DrainAudio(); } _callBack1?.Invoke(); _callBack2?.Invoke(); Frame++; return(true); } }