From 6bd8bc0ea984dbfdef7501283c68134976da4d97 Mon Sep 17 00:00:00 2001 From: David Khachaturov Date: Sun, 19 Apr 2020 09:34:19 +0100 Subject: [PATCH] - Updated to latest ViGEm.NET --- BetterJoyForCemu/BetterJoy.csproj | 7 +- BetterJoyForCemu/Joycon.cs | 249 +++++++++++++++--------------- BetterJoyForCemu/MainForm.cs | 5 +- BetterJoyForCemu/Program.cs | 6 +- BetterJoyForCemu/packages.config | 3 +- external/ViGEmClient.dll | Bin 0 -> 138240 bytes 6 files changed, 134 insertions(+), 136 deletions(-) create mode 100644 external/ViGEmClient.dll diff --git a/BetterJoyForCemu/BetterJoy.csproj b/BetterJoyForCemu/BetterJoy.csproj index a30e28a..1cbf654 100644 --- a/BetterJoyForCemu/BetterJoy.csproj +++ b/BetterJoyForCemu/BetterJoy.csproj @@ -107,8 +107,11 @@ ..\packages\Fielder.Fody.1.2.3\lib\net452\Fielder.dll - - ..\packages\Nefarius.ViGEmClient.1.15.16\lib\net452\Nefarius.ViGEmClient.dll + + ..\packages\JetBrains.Annotations.2018.3.0\lib\net20\JetBrains.Annotations.dll + + + ..\packages\Nefarius.ViGEm.Client.1.16.150\lib\net452\Nefarius.ViGEm.Client.dll diff --git a/BetterJoyForCemu/Joycon.cs b/BetterJoyForCemu/Joycon.cs index c47399b..45326a7 100644 --- a/BetterJoyForCemu/Joycon.cs +++ b/BetterJoyForCemu/Joycon.cs @@ -221,10 +221,8 @@ namespace BetterJoyForCemu { public ulong Timestamp = 0; public int packetCounter = 0; - public Xbox360Controller xin; - public Xbox360Report report; - public DualShock4Controller ds4; - public DualShock4Report ds4_report; + public IXbox360Controller xin; + public IDualShock4Controller ds4; int rumblePeriod = Int32.Parse(ConfigurationManager.AppSettings["RumblePeriod"]); int lowFreq = Int32.Parse(ConfigurationManager.AppSettings["LowFreqRumble"]); @@ -264,19 +262,19 @@ namespace BetterJoyForCemu { connection = isUSB ? 0x01 : 0x02; if (showAsXInput) { - xin = new Xbox360Controller(Program.emClient); + xin = Program.emClient.CreateXbox360Controller(); + xin.AutoSubmitReport = false; if (toRumble) xin.FeedbackReceived += ReceiveRumble; - report = new Xbox360Report(); } if (showAsDS4) { - ds4 = new DualShock4Controller(Program.emClient); + ds4 = Program.emClient.CreateDualShock4Controller(); + ds4.AutoSubmitReport = false; if (toRumble) ds4.FeedbackReceived += Ds4_FeedbackReceived; - ds4_report = new DualShock4Report(); } } @@ -449,11 +447,11 @@ namespace BetterJoyForCemu { stop_polling = true; if (xin != null) { - xin.Disconnect(); xin.Dispose(); + xin.Disconnect(); } if (ds4 != null) { - ds4.Disconnect(); ds4.Dispose(); + ds4.Disconnect(); } if (state > state_.NO_JOYCONS) { @@ -512,8 +510,7 @@ namespace BetterJoyForCemu { // no reason to send XInput reports so often if (xin != null) { try { - xin.SendReport(report); - + xin.SubmitReport(); } catch (Exception e) { // ignore /shrug } @@ -521,7 +518,7 @@ namespace BetterJoyForCemu { if (ds4 != null) { try { - ds4.SendReport(ds4_report); + ds4.SubmitReport(); } catch (Exception e) { // ignore /shrug } @@ -815,75 +812,75 @@ namespace BetterJoyForCemu { return; if (isPro) { - report.SetButtonState(Xbox360Buttons.A, buttons[(int)(!swapAB ? Button.B : Button.A)]); - report.SetButtonState(Xbox360Buttons.B, buttons[(int)(!swapAB ? Button.A : Button.B)]); - report.SetButtonState(Xbox360Buttons.Y, buttons[(int)(!swapXY ? Button.X : Button.Y)]); - report.SetButtonState(Xbox360Buttons.X, buttons[(int)(!swapXY ? Button.Y : Button.X)]); - report.SetButtonState(Xbox360Buttons.Up, buttons[(int)Button.DPAD_UP]); - report.SetButtonState(Xbox360Buttons.Down, buttons[(int)Button.DPAD_DOWN]); - report.SetButtonState(Xbox360Buttons.Left, buttons[(int)Button.DPAD_LEFT]); - report.SetButtonState(Xbox360Buttons.Right, buttons[(int)Button.DPAD_RIGHT]); - report.SetButtonState(Xbox360Buttons.Back, buttons[(int)Button.MINUS]); - report.SetButtonState(Xbox360Buttons.Start, buttons[(int)Button.PLUS]); - report.SetButtonState(Xbox360Buttons.Guide, buttons[(int)Button.HOME]); - report.SetButtonState(Xbox360Buttons.LeftShoulder, buttons[(int)Button.SHOULDER_1]); - report.SetButtonState(Xbox360Buttons.RightShoulder, buttons[(int)Button.SHOULDER2_1]); - report.SetButtonState(Xbox360Buttons.LeftThumb, buttons[(int)Button.STICK]); - report.SetButtonState(Xbox360Buttons.RightThumb, buttons[(int)Button.STICK2]); + xin.SetButtonState(Xbox360Button.A, buttons[(int)(!swapAB ? Button.B : Button.A)]); + xin.SetButtonState(Xbox360Button.B, buttons[(int)(!swapAB ? Button.A : Button.B)]); + xin.SetButtonState(Xbox360Button.Y, buttons[(int)(!swapXY ? Button.X : Button.Y)]); + xin.SetButtonState(Xbox360Button.X, buttons[(int)(!swapXY ? Button.Y : Button.X)]); + xin.SetButtonState(Xbox360Button.Up, buttons[(int)Button.DPAD_UP]); + xin.SetButtonState(Xbox360Button.Down, buttons[(int)Button.DPAD_DOWN]); + xin.SetButtonState(Xbox360Button.Left, buttons[(int)Button.DPAD_LEFT]); + xin.SetButtonState(Xbox360Button.Right, buttons[(int)Button.DPAD_RIGHT]); + xin.SetButtonState(Xbox360Button.Back, buttons[(int)Button.MINUS]); + xin.SetButtonState(Xbox360Button.Start, buttons[(int)Button.PLUS]); + xin.SetButtonState(Xbox360Button.Guide, buttons[(int)Button.HOME]); + xin.SetButtonState(Xbox360Button.LeftShoulder, buttons[(int)Button.SHOULDER_1]); + xin.SetButtonState(Xbox360Button.RightShoulder, buttons[(int)Button.SHOULDER2_1]); + xin.SetButtonState(Xbox360Button.LeftThumb, buttons[(int)Button.STICK]); + xin.SetButtonState(Xbox360Button.RightThumb, buttons[(int)Button.STICK2]); } else { if (other != null) { // no need for && other != this - report.SetButtonState(!swapAB ? Xbox360Buttons.A : Xbox360Buttons.B, buttons[(int)(isLeft ? Button.B : Button.DPAD_DOWN)]); - report.SetButtonState(!swapAB ? Xbox360Buttons.B : Xbox360Buttons.A, buttons[(int)(isLeft ? Button.A : Button.DPAD_RIGHT)]); - report.SetButtonState(!swapXY ? Xbox360Buttons.Y : Xbox360Buttons.X, buttons[(int)(isLeft ? Button.X : Button.DPAD_UP)]); - report.SetButtonState(!swapXY ? Xbox360Buttons.X : Xbox360Buttons.Y, buttons[(int)(isLeft ? Button.Y : Button.DPAD_LEFT)]); - report.SetButtonState(Xbox360Buttons.Up, buttons[(int)(isLeft ? Button.DPAD_UP : Button.X)]); - report.SetButtonState(Xbox360Buttons.Down, buttons[(int)(isLeft ? Button.DPAD_DOWN : Button.B)]); - report.SetButtonState(Xbox360Buttons.Left, buttons[(int)(isLeft ? Button.DPAD_LEFT : Button.Y)]); - report.SetButtonState(Xbox360Buttons.Right, buttons[(int)(isLeft ? Button.DPAD_RIGHT : Button.A)]); - report.SetButtonState(Xbox360Buttons.Back, buttons[(int)Button.MINUS]); - report.SetButtonState(Xbox360Buttons.Start, buttons[(int)Button.PLUS]); - report.SetButtonState(Xbox360Buttons.Guide, buttons[(int)Button.HOME]); - report.SetButtonState(Xbox360Buttons.LeftShoulder, buttons[(int)(isLeft ? Button.SHOULDER_1 : Button.SHOULDER2_1)]); - report.SetButtonState(Xbox360Buttons.RightShoulder, buttons[(int)(isLeft ? Button.SHOULDER2_1 : Button.SHOULDER_1)]); - report.SetButtonState(Xbox360Buttons.LeftThumb, buttons[(int)(isLeft ? Button.STICK : Button.STICK2)]); - report.SetButtonState(Xbox360Buttons.RightThumb, buttons[(int)(isLeft ? Button.STICK2 : Button.STICK)]); + xin.SetButtonState(!swapAB ? Xbox360Button.A : Xbox360Button.B, buttons[(int)(isLeft ? Button.B : Button.DPAD_DOWN)]); + xin.SetButtonState(!swapAB ? Xbox360Button.B : Xbox360Button.A, buttons[(int)(isLeft ? Button.A : Button.DPAD_RIGHT)]); + xin.SetButtonState(!swapXY ? Xbox360Button.Y : Xbox360Button.X, buttons[(int)(isLeft ? Button.X : Button.DPAD_UP)]); + xin.SetButtonState(!swapXY ? Xbox360Button.X : Xbox360Button.Y, buttons[(int)(isLeft ? Button.Y : Button.DPAD_LEFT)]); + xin.SetButtonState(Xbox360Button.Up, buttons[(int)(isLeft ? Button.DPAD_UP : Button.X)]); + xin.SetButtonState(Xbox360Button.Down, buttons[(int)(isLeft ? Button.DPAD_DOWN : Button.B)]); + xin.SetButtonState(Xbox360Button.Left, buttons[(int)(isLeft ? Button.DPAD_LEFT : Button.Y)]); + xin.SetButtonState(Xbox360Button.Right, buttons[(int)(isLeft ? Button.DPAD_RIGHT : Button.A)]); + xin.SetButtonState(Xbox360Button.Back, buttons[(int)Button.MINUS]); + xin.SetButtonState(Xbox360Button.Start, buttons[(int)Button.PLUS]); + xin.SetButtonState(Xbox360Button.Guide, buttons[(int)Button.HOME]); + xin.SetButtonState(Xbox360Button.LeftShoulder, buttons[(int)(isLeft ? Button.SHOULDER_1 : Button.SHOULDER2_1)]); + xin.SetButtonState(Xbox360Button.RightShoulder, buttons[(int)(isLeft ? Button.SHOULDER2_1 : Button.SHOULDER_1)]); + xin.SetButtonState(Xbox360Button.LeftThumb, buttons[(int)(isLeft ? Button.STICK : Button.STICK2)]); + xin.SetButtonState(Xbox360Button.RightThumb, buttons[(int)(isLeft ? Button.STICK2 : Button.STICK)]); } else { // single joycon mode - report.SetButtonState(!swapAB ? Xbox360Buttons.A : Xbox360Buttons.B, buttons[(int)(isLeft ? Button.DPAD_LEFT : Button.DPAD_RIGHT)]); - report.SetButtonState(!swapAB ? Xbox360Buttons.B : Xbox360Buttons.A, buttons[(int)(isLeft ? Button.DPAD_DOWN : Button.DPAD_UP)]); - report.SetButtonState(!swapXY ? Xbox360Buttons.Y : Xbox360Buttons.X, buttons[(int)(isLeft ? Button.DPAD_RIGHT : Button.DPAD_LEFT)]); - report.SetButtonState(!swapXY ? Xbox360Buttons.X : Xbox360Buttons.Y, buttons[(int)(isLeft ? Button.DPAD_UP : Button.DPAD_DOWN)]); - report.SetButtonState(Xbox360Buttons.Back, buttons[(int)Button.MINUS] | buttons[(int)Button.HOME]); - report.SetButtonState(Xbox360Buttons.Start, buttons[(int)Button.PLUS] | buttons[(int)Button.CAPTURE]); + xin.SetButtonState(!swapAB ? Xbox360Button.A : Xbox360Button.B, buttons[(int)(isLeft ? Button.DPAD_LEFT : Button.DPAD_RIGHT)]); + xin.SetButtonState(!swapAB ? Xbox360Button.B : Xbox360Button.A, buttons[(int)(isLeft ? Button.DPAD_DOWN : Button.DPAD_UP)]); + xin.SetButtonState(!swapXY ? Xbox360Button.Y : Xbox360Button.X, buttons[(int)(isLeft ? Button.DPAD_RIGHT : Button.DPAD_LEFT)]); + xin.SetButtonState(!swapXY ? Xbox360Button.X : Xbox360Button.Y, buttons[(int)(isLeft ? Button.DPAD_UP : Button.DPAD_DOWN)]); + xin.SetButtonState(Xbox360Button.Back, buttons[(int)Button.MINUS] | buttons[(int)Button.HOME]); + xin.SetButtonState(Xbox360Button.Start, buttons[(int)Button.PLUS] | buttons[(int)Button.CAPTURE]); - report.SetButtonState(Xbox360Buttons.LeftShoulder, buttons[(int)Button.SL]); - report.SetButtonState(Xbox360Buttons.RightShoulder, buttons[(int)Button.SR]); + xin.SetButtonState(Xbox360Button.LeftShoulder, buttons[(int)Button.SL]); + xin.SetButtonState(Xbox360Button.RightShoulder, buttons[(int)Button.SR]); - report.SetButtonState(Xbox360Buttons.LeftThumb, buttons[(int)Button.STICK]); + xin.SetButtonState(Xbox360Button.LeftThumb, buttons[(int)Button.STICK]); } } // overwrite guide button if it's custom-mapped if (Config.Value("home") != "0") - report.SetButtonState(Xbox360Buttons.Guide, false); + xin.SetButtonState(Xbox360Button.Guide, false); if (!isSnes) { if (other != null || isPro) { // no need for && other != this - report.SetAxis(Xbox360Axes.LeftThumbX, CastStickValue((other == this && !isLeft) ? stick2[0] : stick[0])); - report.SetAxis(Xbox360Axes.LeftThumbY, CastStickValue((other == this && !isLeft) ? stick2[1] : stick[1])); - report.SetAxis(Xbox360Axes.RightThumbX, CastStickValue((other == this && !isLeft) ? stick[0] : stick2[0])); - report.SetAxis(Xbox360Axes.RightThumbY, CastStickValue((other == this && !isLeft) ? stick[1] : stick2[1])); + xin.SetAxisValue(Xbox360Axis.LeftThumbX, CastStickValue((other == this && !isLeft) ? stick2[0] : stick[0])); + xin.SetAxisValue(Xbox360Axis.LeftThumbY, CastStickValue((other == this && !isLeft) ? stick2[1] : stick[1])); + xin.SetAxisValue(Xbox360Axis.RightThumbX, CastStickValue((other == this && !isLeft) ? stick[0] : stick2[0])); + xin.SetAxisValue(Xbox360Axis.RightThumbY, CastStickValue((other == this && !isLeft) ? stick[1] : stick2[1])); } else { // single joycon mode - report.SetAxis(Xbox360Axes.LeftThumbY, CastStickValue((isLeft ? 1 : -1) * stick[0])); - report.SetAxis(Xbox360Axes.LeftThumbX, CastStickValue((isLeft ? -1 : 1) * stick[1])); + xin.SetAxisValue(Xbox360Axis.LeftThumbY, CastStickValue((isLeft ? 1 : -1) * stick[0])); + xin.SetAxisValue(Xbox360Axis.LeftThumbX, CastStickValue((isLeft ? -1 : 1) * stick[1])); } } if (other != null || isPro) { - report.SetAxis(Xbox360Axes.LeftTrigger, (short)(buttons[(int)(isLeft ? Button.SHOULDER_2 : Button.SHOULDER2_2)] ? Int16.MaxValue : 0)); - report.SetAxis(Xbox360Axes.RightTrigger, (short)(buttons[(int)(isLeft ? Button.SHOULDER2_2 : Button.SHOULDER_2)] ? Int16.MaxValue : 0)); + xin.SetSliderValue(Xbox360Slider.LeftTrigger, (byte)(buttons[(int)(isLeft ? Button.SHOULDER_2 : Button.SHOULDER2_2)] ? Byte.MaxValue : 0)); + xin.SetSliderValue(Xbox360Slider.RightTrigger, (byte)(buttons[(int)(isLeft ? Button.SHOULDER2_2 : Button.SHOULDER_2)] ? Byte.MaxValue : 0)); } else { - report.SetAxis(Xbox360Axes.LeftTrigger, (short)(buttons[(int)(isLeft ? Button.SHOULDER_2 : Button.SHOULDER_1)] ? Int16.MaxValue : 0)); - report.SetAxis(Xbox360Axes.RightTrigger, (short)(buttons[(int)(isLeft ? Button.SHOULDER_1 : Button.SHOULDER_2)] ? Int16.MaxValue : 0)); + xin.SetSliderValue(Xbox360Slider.LeftTrigger, (byte)(buttons[(int)(isLeft ? Button.SHOULDER_2 : Button.SHOULDER_1)] ? Byte.MaxValue : 0)); + xin.SetSliderValue(Xbox360Slider.RightTrigger, (byte)(buttons[(int)(isLeft ? Button.SHOULDER_1 : Button.SHOULDER_2)] ? Byte.MaxValue : 0)); } } @@ -893,112 +890,112 @@ namespace BetterJoyForCemu { return; if (isPro) { - ds4_report.SetButtonState(DualShock4Buttons.Cross, buttons[(int)(!swapAB ? Button.B : Button.A)]); - ds4_report.SetButtonState(DualShock4Buttons.Circle, buttons[(int)(!swapAB ? Button.A : Button.B)]); - ds4_report.SetButtonState(DualShock4Buttons.Triangle, buttons[(int)(!swapXY ? Button.X : Button.Y)]); - ds4_report.SetButtonState(DualShock4Buttons.Square, buttons[(int)(!swapXY ? Button.Y : Button.X)]); + ds4.SetButtonState(DualShock4Button.Cross, buttons[(int)(!swapAB ? Button.B : Button.A)]); + ds4.SetButtonState(DualShock4Button.Circle, buttons[(int)(!swapAB ? Button.A : Button.B)]); + ds4.SetButtonState(DualShock4Button.Triangle, buttons[(int)(!swapXY ? Button.X : Button.Y)]); + ds4.SetButtonState(DualShock4Button.Square, buttons[(int)(!swapXY ? Button.Y : Button.X)]); - ds4_report.SetDPad(DualShock4DPadValues.None); + ds4.SetDPadDirection(DualShock4DPadDirection.None); + if (buttons[(int)Button.DPAD_LEFT]) + ds4.SetDPadDirection(DualShock4DPadDirection.West); + if (buttons[(int)Button.DPAD_RIGHT]) + ds4.SetDPadDirection(DualShock4DPadDirection.East); if (buttons[(int)Button.DPAD_UP]) { if (buttons[(int)Button.DPAD_LEFT]) - ds4_report.SetDPad(DualShock4DPadValues.Northwest); + ds4.SetDPadDirection(DualShock4DPadDirection.Northwest); else if (buttons[(int)Button.DPAD_RIGHT]) - ds4_report.SetDPad(DualShock4DPadValues.Northeast); + ds4.SetDPadDirection(DualShock4DPadDirection.Northeast); else - ds4_report.SetDPad(DualShock4DPadValues.North); + ds4.SetDPadDirection(DualShock4DPadDirection.North); } if (buttons[(int)Button.DPAD_DOWN]) { if (buttons[(int)Button.DPAD_LEFT]) - ds4_report.SetDPad(DualShock4DPadValues.Southwest); + ds4.SetDPadDirection(DualShock4DPadDirection.Southwest); else if (buttons[(int)Button.DPAD_RIGHT]) - ds4_report.SetDPad(DualShock4DPadValues.Southeast); + ds4.SetDPadDirection(DualShock4DPadDirection.Southeast); else - ds4_report.SetDPad(DualShock4DPadValues.South); + ds4.SetDPadDirection(DualShock4DPadDirection.South); } - if (buttons[(int)Button.DPAD_LEFT]) - ds4_report.SetDPad(DualShock4DPadValues.West); - if (buttons[(int)Button.DPAD_RIGHT]) - ds4_report.SetDPad(DualShock4DPadValues.East); - ds4_report.SetButtonState(DualShock4Buttons.Share, buttons[(int)Button.MINUS]); - ds4_report.SetButtonState(DualShock4Buttons.Options, buttons[(int)Button.PLUS]); - ds4_report.SetSpecialButtonState(DualShock4SpecialButtons.Ps, buttons[(int)Button.HOME]); - ds4_report.SetSpecialButtonState(DualShock4SpecialButtons.Touchpad, buttons[(int)Button.CAPTURE]); - ds4_report.SetButtonState(DualShock4Buttons.ShoulderLeft, buttons[(int)Button.SHOULDER_1]); - ds4_report.SetButtonState(DualShock4Buttons.ShoulderRight, buttons[(int)Button.SHOULDER2_1]); - ds4_report.SetButtonState(DualShock4Buttons.ThumbLeft, buttons[(int)Button.STICK]); - ds4_report.SetButtonState(DualShock4Buttons.ThumbRight, buttons[(int)Button.STICK2]); + ds4.SetButtonState(DualShock4Button.Share, buttons[(int)Button.MINUS]); + ds4.SetButtonState(DualShock4Button.Options, buttons[(int)Button.PLUS]); + ds4.SetButtonState(DualShock4SpecialButton.Ps, buttons[(int)Button.HOME]); + ds4.SetButtonState(DualShock4SpecialButton.Touchpad, buttons[(int)Button.CAPTURE]); + ds4.SetButtonState(DualShock4Button.ShoulderLeft, buttons[(int)Button.SHOULDER_1]); + ds4.SetButtonState(DualShock4Button.ShoulderRight, buttons[(int)Button.SHOULDER2_1]); + ds4.SetButtonState(DualShock4Button.ThumbLeft, buttons[(int)Button.STICK]); + ds4.SetButtonState(DualShock4Button.ThumbRight, buttons[(int)Button.STICK2]); } else { if (other != null) { // no need for && other != this - ds4_report.SetButtonState(!swapAB ? DualShock4Buttons.Cross : DualShock4Buttons.Circle, buttons[(int)(isLeft ? Button.B : Button.DPAD_DOWN)]); - ds4_report.SetButtonState(!swapAB ? DualShock4Buttons.Circle : DualShock4Buttons.Cross, buttons[(int)(isLeft ? Button.A : Button.DPAD_RIGHT)]); - ds4_report.SetButtonState(!swapXY ? DualShock4Buttons.Triangle : DualShock4Buttons.Square, buttons[(int)(isLeft ? Button.X : Button.DPAD_UP)]); - ds4_report.SetButtonState(!swapXY ? DualShock4Buttons.Square : DualShock4Buttons.Triangle, buttons[(int)(isLeft ? Button.Y : Button.DPAD_LEFT)]); + ds4.SetButtonState(!swapAB ? DualShock4Button.Cross : DualShock4Button.Circle, buttons[(int)(isLeft ? Button.B : Button.DPAD_DOWN)]); + ds4.SetButtonState(!swapAB ? DualShock4Button.Circle : DualShock4Button.Cross, buttons[(int)(isLeft ? Button.A : Button.DPAD_RIGHT)]); + ds4.SetButtonState(!swapXY ? DualShock4Button.Triangle : DualShock4Button.Square, buttons[(int)(isLeft ? Button.X : Button.DPAD_UP)]); + ds4.SetButtonState(!swapXY ? DualShock4Button.Square : DualShock4Button.Triangle, buttons[(int)(isLeft ? Button.Y : Button.DPAD_LEFT)]); if (buttons[(int)(isLeft ? Button.DPAD_UP : Button.X)]) if (buttons[(int)(isLeft ? Button.DPAD_LEFT : Button.Y)]) - ds4_report.SetDPad(DualShock4DPadValues.Northwest); + ds4.SetDPadDirection(DualShock4DPadDirection.Northwest); else if (buttons[(int)(isLeft ? Button.DPAD_RIGHT : Button.A)]) - ds4_report.SetDPad(DualShock4DPadValues.Northeast); + ds4.SetDPadDirection(DualShock4DPadDirection.Northeast); else - ds4_report.SetDPad(DualShock4DPadValues.North); + ds4.SetDPadDirection(DualShock4DPadDirection.North); if (buttons[(int)(isLeft ? Button.DPAD_DOWN : Button.B)]) if (buttons[(int)(isLeft ? Button.DPAD_LEFT : Button.Y)]) - ds4_report.SetDPad(DualShock4DPadValues.Southwest); + ds4.SetDPadDirection(DualShock4DPadDirection.Southwest); else if (buttons[(int)(isLeft ? Button.DPAD_RIGHT : Button.A)]) - ds4_report.SetDPad(DualShock4DPadValues.Southeast); + ds4.SetDPadDirection(DualShock4DPadDirection.Southeast); else - ds4_report.SetDPad(DualShock4DPadValues.South); + ds4.SetDPadDirection(DualShock4DPadDirection.South); if (buttons[(int)(isLeft ? Button.DPAD_LEFT : Button.Y)]) - ds4_report.SetDPad(DualShock4DPadValues.West); + ds4.SetDPadDirection(DualShock4DPadDirection.West); if (buttons[(int)(isLeft ? Button.DPAD_RIGHT : Button.A)]) - ds4_report.SetDPad(DualShock4DPadValues.East); + ds4.SetDPadDirection(DualShock4DPadDirection.East); - ds4_report.SetButtonState(DualShock4Buttons.Share, buttons[(int)Button.MINUS]); - ds4_report.SetButtonState(DualShock4Buttons.Options, buttons[(int)Button.PLUS]); - ds4_report.SetSpecialButtonState(DualShock4SpecialButtons.Ps, buttons[(int)Button.HOME]); - ds4_report.SetSpecialButtonState(DualShock4SpecialButtons.Touchpad, buttons[(int)Button.CAPTURE]); - ds4_report.SetButtonState(DualShock4Buttons.ShoulderLeft, buttons[(int)(isLeft ? Button.SHOULDER_1 : Button.SHOULDER2_1)]); - ds4_report.SetButtonState(DualShock4Buttons.ShoulderRight, buttons[(int)(isLeft ? Button.SHOULDER2_1 : Button.SHOULDER_1)]); - ds4_report.SetButtonState(DualShock4Buttons.ThumbLeft, buttons[(int)(isLeft ? Button.STICK : Button.STICK2)]); - ds4_report.SetButtonState(DualShock4Buttons.ThumbRight, buttons[(int)(isLeft ? Button.STICK2 : Button.STICK)]); + ds4.SetButtonState(DualShock4Button.Share, buttons[(int)Button.MINUS]); + ds4.SetButtonState(DualShock4Button.Options, buttons[(int)Button.PLUS]); + ds4.SetButtonState(DualShock4SpecialButton.Ps, buttons[(int)Button.HOME]); + ds4.SetButtonState(DualShock4SpecialButton.Touchpad, buttons[(int)Button.CAPTURE]); + ds4.SetButtonState(DualShock4Button.ShoulderLeft, buttons[(int)(isLeft ? Button.SHOULDER_1 : Button.SHOULDER2_1)]); + ds4.SetButtonState(DualShock4Button.ShoulderRight, buttons[(int)(isLeft ? Button.SHOULDER2_1 : Button.SHOULDER_1)]); + ds4.SetButtonState(DualShock4Button.ThumbLeft, buttons[(int)(isLeft ? Button.STICK : Button.STICK2)]); + ds4.SetButtonState(DualShock4Button.ThumbRight, buttons[(int)(isLeft ? Button.STICK2 : Button.STICK)]); } else { // single joycon mode - ds4_report.SetButtonState(!swapAB ? DualShock4Buttons.Cross : DualShock4Buttons.Circle, buttons[(int)(isLeft ? Button.DPAD_LEFT : Button.DPAD_RIGHT)]); - ds4_report.SetButtonState(!swapAB ? DualShock4Buttons.Circle : DualShock4Buttons.Cross, buttons[(int)(isLeft ? Button.DPAD_DOWN : Button.DPAD_UP)]); - ds4_report.SetButtonState(!swapXY ? DualShock4Buttons.Triangle : DualShock4Buttons.Square, buttons[(int)(isLeft ? Button.DPAD_RIGHT : Button.DPAD_LEFT)]); - ds4_report.SetButtonState(!swapXY ? DualShock4Buttons.Square : DualShock4Buttons.Triangle, buttons[(int)(isLeft ? Button.DPAD_UP : Button.DPAD_DOWN)]); - ds4_report.SetButtonState(DualShock4Buttons.Share, buttons[(int)Button.MINUS] | buttons[(int)Button.HOME]); - ds4_report.SetButtonState(DualShock4Buttons.Options, buttons[(int)Button.PLUS] | buttons[(int)Button.CAPTURE]); + ds4.SetButtonState(!swapAB ? DualShock4Button.Cross : DualShock4Button.Circle, buttons[(int)(isLeft ? Button.DPAD_LEFT : Button.DPAD_RIGHT)]); + ds4.SetButtonState(!swapAB ? DualShock4Button.Circle : DualShock4Button.Cross, buttons[(int)(isLeft ? Button.DPAD_DOWN : Button.DPAD_UP)]); + ds4.SetButtonState(!swapXY ? DualShock4Button.Triangle : DualShock4Button.Square, buttons[(int)(isLeft ? Button.DPAD_RIGHT : Button.DPAD_LEFT)]); + ds4.SetButtonState(!swapXY ? DualShock4Button.Square : DualShock4Button.Triangle, buttons[(int)(isLeft ? Button.DPAD_UP : Button.DPAD_DOWN)]); + ds4.SetButtonState(DualShock4Button.Share, buttons[(int)Button.MINUS] | buttons[(int)Button.HOME]); + ds4.SetButtonState(DualShock4Button.Options, buttons[(int)Button.PLUS] | buttons[(int)Button.CAPTURE]); - ds4_report.SetButtonState(DualShock4Buttons.ShoulderLeft, buttons[(int)Button.SL]); - ds4_report.SetButtonState(DualShock4Buttons.ShoulderRight, buttons[(int)Button.SR]); + ds4.SetButtonState(DualShock4Button.ShoulderLeft, buttons[(int)Button.SL]); + ds4.SetButtonState(DualShock4Button.ShoulderRight, buttons[(int)Button.SR]); - ds4_report.SetButtonState(DualShock4Buttons.ThumbLeft, buttons[(int)Button.STICK]); + ds4.SetButtonState(DualShock4Button.ThumbLeft, buttons[(int)Button.STICK]); } } // overwrite guide button if it's custom-mapped if (Config.Value("home") != "0") - ds4_report.SetSpecialButtonState(DualShock4SpecialButtons.Ps, false); + ds4.SetButtonState(DualShock4SpecialButton.Ps, false); if (!isSnes) { if (other != null || isPro) { // no need for && other != this - ds4_report.SetAxis(DualShock4Axes.LeftThumbX, CastStickValueByte((other == this && !isLeft) ? -stick2[0] : -stick[0])); - ds4_report.SetAxis(DualShock4Axes.LeftThumbY, CastStickValueByte((other == this && !isLeft) ? stick2[1] : stick[1])); - ds4_report.SetAxis(DualShock4Axes.RightThumbX, CastStickValueByte((other == this && !isLeft) ? -stick[0] : -stick2[0])); - ds4_report.SetAxis(DualShock4Axes.RightThumbY, CastStickValueByte((other == this && !isLeft) ? stick[1] : stick2[1])); + ds4.SetAxisValue(DualShock4Axis.LeftThumbX, CastStickValueByte((other == this && !isLeft) ? -stick2[0] : -stick[0])); + ds4.SetAxisValue(DualShock4Axis.LeftThumbY, CastStickValueByte((other == this && !isLeft) ? stick2[1] : stick[1])); + ds4.SetAxisValue(DualShock4Axis.RightThumbX, CastStickValueByte((other == this && !isLeft) ? -stick[0] : -stick2[0])); + ds4.SetAxisValue(DualShock4Axis.RightThumbY, CastStickValueByte((other == this && !isLeft) ? stick[1] : stick2[1])); } else { // single joycon mode - ds4_report.SetAxis(DualShock4Axes.LeftThumbY, CastStickValueByte((isLeft ? 1 : -1) * stick[0])); - ds4_report.SetAxis(DualShock4Axes.LeftThumbX, CastStickValueByte((isLeft ? -1 : 1) * stick[1])); + ds4.SetAxisValue(DualShock4Axis.LeftThumbY, CastStickValueByte((isLeft ? 1 : -1) * stick[0])); + ds4.SetAxisValue(DualShock4Axis.LeftThumbX, CastStickValueByte((isLeft ? -1 : 1) * stick[1])); } } if (other != null || isPro) { - ds4_report.SetAxis(DualShock4Axes.LeftTrigger, (byte)(buttons[(int)(isLeft ? Button.SHOULDER_2 : Button.SHOULDER2_2)] ? Byte.MaxValue : 0)); - ds4_report.SetAxis(DualShock4Axes.RightTrigger, (byte)(buttons[(int)(isLeft ? Button.SHOULDER2_2 : Button.SHOULDER_2)] ? Byte.MaxValue : 0)); + ds4.SetSliderValue(DualShock4Slider.LeftTrigger, (byte)(buttons[(int)(isLeft ? Button.SHOULDER_2 : Button.SHOULDER2_2)] ? Byte.MaxValue : 0)); + ds4.SetSliderValue(DualShock4Slider.RightTrigger, (byte)(buttons[(int)(isLeft ? Button.SHOULDER2_2 : Button.SHOULDER_2)] ? Byte.MaxValue : 0)); } else { - ds4_report.SetAxis(DualShock4Axes.LeftTrigger, (byte)(buttons[(int)(isLeft ? Button.SHOULDER_2 : Button.SHOULDER_1)] ? Byte.MaxValue : 0)); - ds4_report.SetAxis(DualShock4Axes.RightTrigger, (byte)(buttons[(int)(isLeft ? Button.SHOULDER_1 : Button.SHOULDER_2)] ? Byte.MaxValue : 0)); + ds4.SetSliderValue(DualShock4Slider.LeftTrigger, (byte)(buttons[(int)(isLeft ? Button.SHOULDER_2 : Button.SHOULDER_1)] ? Byte.MaxValue : 0)); + ds4.SetSliderValue(DualShock4Slider.RightTrigger, (byte)(buttons[(int)(isLeft ? Button.SHOULDER_1 : Button.SHOULDER_2)] ? Byte.MaxValue : 0)); } } diff --git a/BetterJoyForCemu/MainForm.cs b/BetterJoyForCemu/MainForm.cs index 85f5e7a..76403b7 100644 --- a/BetterJoyForCemu/MainForm.cs +++ b/BetterJoyForCemu/MainForm.cs @@ -177,7 +177,7 @@ namespace BetterJoyForCemu { jc.SetPlayerLED(led); v.SetPlayerLED(led); - v.xin.Dispose(); + v.xin.Disconnect(); v.xin = null; // setting the other joycon's button image @@ -261,11 +261,10 @@ namespace BetterJoyForCemu { void ReenableXinput(Joycon v) { if (showAsXInput) { - v.xin = new Xbox360Controller(Program.emClient); + v.xin = Program.emClient.CreateXbox360Controller(); if (toRumble) v.xin.FeedbackReceived += v.ReceiveRumble; - v.report = new Xbox360Report(); } } diff --git a/BetterJoyForCemu/Program.cs b/BetterJoyForCemu/Program.cs index adf353f..ffc2ca0 100644 --- a/BetterJoyForCemu/Program.cs +++ b/BetterJoyForCemu/Program.cs @@ -240,9 +240,9 @@ namespace BetterJoyForCemu { v.SetPlayerLED(led); if (temp.xin != null) - temp.xin.Dispose(); + temp.xin.Disconnect(); if (temp.ds4 != null) - temp.ds4.Dispose(); + temp.ds4.Disconnect(); temp.xin = null; temp.ds4 = null; @@ -294,12 +294,10 @@ namespace BetterJoyForCemu { if (v.xin != null) { v.xin.Disconnect(); - v.xin.Dispose(); } if (v.ds4 != null) { v.ds4.Disconnect(); - v.ds4.Dispose(); } } diff --git a/BetterJoyForCemu/packages.config b/BetterJoyForCemu/packages.config index fbb587f..5265982 100644 --- a/BetterJoyForCemu/packages.config +++ b/BetterJoyForCemu/packages.config @@ -4,6 +4,7 @@ - + + \ No newline at end of file diff --git a/external/ViGEmClient.dll b/external/ViGEmClient.dll new file mode 100644 index 0000000000000000000000000000000000000000..dc63eac5d5bacb1f27904be889c342158ad37b9e GIT binary patch literal 138240 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ⅆ~s)Nst|Qf!had_g33I4_DH@ZMy+G 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