示例#1
0
        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);
        }
示例#2
0
        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();
            }
        }
示例#3
0
文件: QuickNES.cs 项目: gocha/BizHawk
        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);
            }
        }