예제 #1
0
        protected override LibWaterboxCore.FrameInfo FrameAdvancePrep(IController controller, bool render, bool rendersound)
        {
            DriveLightOn = false;
            _controllerAdapter.SetBits(controller, _inputPortData);
            _frameAdvanceInputLock = GCHandle.Alloc(_inputPortData, GCHandleType.Pinned);
            var ret = new LibNymaCore.FrameInfo
            {
                SkipRendering  = (short)(render ? 0 : 1),
                SkipSoundening = (short)(rendersound ? 0 : 1),
                Command        = controller.IsPressed("Power")
                                        ? LibNymaCore.CommandType.POWER
                                        : controller.IsPressed("Reset")
                                                ? LibNymaCore.CommandType.RESET
                                                : LibNymaCore.CommandType.NONE,
                InputPortData = (byte *)_frameAdvanceInputLock.AddrOfPinnedObject(),
                FrontendTime  = GetRtcTime(SettingsQuery("nyma.rtcrealtime") != "0"),
            };

            if (_frameThreadStart != null)
            {
                _frameThreadProcActive = true;
                Task.Run(() =>
                {
                    _frameThreadStart();
                    _frameThreadProcActive = false;
                });
            }
            return(ret);
        }
예제 #2
0
        protected override LibWaterboxCore.FrameInfo FrameAdvancePrep(IController controller, bool render, bool rendersound)
        {
            DriveLightOn = false;
            _controllerAdapter.SetBits(controller, _inputPortData);
            _frameAdvanceInputLock = GCHandle.Alloc(_inputPortData, GCHandleType.Pinned);
            var ret = new LibNymaCore.FrameInfo
            {
                SkipRendering  = (short)(render ? 0 : 1),
                SkipSoundening = (short)(rendersound ? 0 : 1),
                Command        = LibNymaCore.CommandType.NONE,
                InputPortData  = (byte *)_frameAdvanceInputLock.AddrOfPinnedObject()
            };

            return(ret);
        }
예제 #3
0
        protected override LibWaterboxCore.FrameInfo FrameAdvancePrep(IController controller, bool render, bool rendersound)
        {
            DriveLightOn = false;
            _controllerAdapter.SetBits(controller, _inputPortData);
            _frameAdvanceInputLock = GCHandle.Alloc(_inputPortData, GCHandleType.Pinned);
            LibNymaCore.BizhawkFlags flags = 0;
            if (!render)
            {
                flags |= LibNymaCore.BizhawkFlags.SkipRendering;
            }
            if (!rendersound)
            {
                flags |= LibNymaCore.BizhawkFlags.SkipSoundening;
            }
            if (SettingsQuery("nyma.constantfb") != "0")
            {
                flags |= LibNymaCore.BizhawkFlags.RenderConstantSize;
            }
            if (controller.IsPressed("Open Tray"))
            {
                flags |= LibNymaCore.BizhawkFlags.OpenTray;
            }
            if (controller.IsPressed("Close Tray"))
            {
                flags |= LibNymaCore.BizhawkFlags.CloseTray;
            }

            var ret = new LibNymaCore.FrameInfo
            {
                Flags   = flags,
                Command = controller.IsPressed("Power")
                                        ? LibNymaCore.CommandType.POWER
                                        : controller.IsPressed("Reset")
                                                ? LibNymaCore.CommandType.RESET
                                                : LibNymaCore.CommandType.NONE,
                InputPortData = (byte *)_frameAdvanceInputLock.AddrOfPinnedObject(),
                FrontendTime  = GetRtcTime(SettingsQuery("nyma.rtcrealtime") != "0"),
                DiskIndex     = (int)controller.AxisValue("Disk Index")
            };

            if (_frameThreadStart != null)
            {
                _frameThreadProcActive = Task.Run(_frameThreadStart);
            }
            return(ret);
        }