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); }
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); }
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); }