Skip to content

Advanced Xbox controller emulation for DualSense, DualShock 4, Pro Controller, Joy-Cons / Продвинутая эмуляция Xbox геймпада для DualSense, DualShock 4, Pro контроллера, Джойконов

License

Notifications You must be signed in to change notification settings

r57zone/DSAdvance

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EN RU ← Choose language | Выберите язык

DSAdvance

Advanced Xbox gamepad emulation for Sony DualSense, DualShock 4, Nintendo Pro controller or Joy-cons. Supports aiming and driving by tilting the gamepad, stick emulation on the touchpad, keyboard and mouse emulation, and external pedals with extra buttons, and other Digispark-based joysticks. Works based on the driver ViGEm.

Features

✔️ Tilt driving and aiming support (gyroscope, no additional settings required);
✔️ Easy switching between driving and aiming modes (maximum innovative motion gameplay);
✔️ Windows control, volume adjustment, and screenshot creation using a gamepad;
✔️ Battery level display on the light bar and player indicators (for Sony gamepads);
✔️ Various emulation modes for games with adaptive triggers;
✔️ Turning off the light bar for full immersion in the dark;
✔️ Support for two gamepads, the first with full functionality, and the second with simplified features (must be enabled in the config);
✔️ Support for external modified racing pedals with any 16 buttons;
✔️ Support for emulating any Xbox controller button presses using a Digispark joystick (up to 16 buttons);

Multiple operation modes are supported. You can switch between them by pressing the touchpad on DualSense and DualShock 4, the Capture and Home buttons on Pro Controllers and Joy-Cons (pressing Home again toggles aim mode — always/L2), or by pressing the touchpad on gamepads compatible with DualShock 4 but lacking a touch sensor (if the ChangeModesWithoutAreas parameter is set to 1). You can also change operation modes using ALT + 1/2. You can also switch operation modes using ALT + 1/2. Pressing ALT + 1 again disables driving mode, and pressing ALT + 2 again toggles the aim mode (always/L2).

The default gamepad color and the area colors can be changed in the configuration file.

To enable aiming with the L1 button, change the AimingWithL2 parameter to 0 in the config.

By default, the computer control area is located at the bottom center. To enable touch sticks, set the TouchSticksOn parameter to 1 — the desktop control area will be replaced with the touch stick area. To exit stick emulation mode, press the default mode button.

When pressing the default profile button on the DualSense, white LEDs indicate the current battery charge status (1 - 0..25%, 2 - 26..50%, 3 - 51..75%, 4 - 76..100%). On DualSense and DualShock 4, battery status is also shown on the light bar (green - 100..30%, yellow - 29..10%, red - 9..1%). This can be disabled in the config via the ShowBatteryStatusOnLightBar parameter. Battery status is also displayed in the program via ALT + I.

Double-tap the brightness area, then swipe left or right to adjust the backlight brightness. Double-tap again to lock it and prevent accidental changes.

There are 3 emulation modes:

  • Simple Xbox gamepad emulation with extended functionality;
  • Xbox gamepad emulation only for driving mode and mouse aiming (for certain games with adaptive triggers);
  • Mouse only;
  • Keyboard and mouse emulation for Windows control and some older games;

Mode switching is done via ALT + Q or PS/Home + ←/→ and Capture/Home. Keyboard and mouse emulation supports different profiles; select the required profile or create a new one. Profiles can be switched using ALT + ↑/↓ when the window is active, or on the gamepad using PS/Home + ↑/↓. The default profile allows Windows operation.

To connect external pedals (DInput) and Digispark joystick based devices, change the parameter change the DInput parameter to 1 in the ExternalPedals section. To connect external pedals on Arduino, change the COM port number by modifying the COMPort parameter.

There are 2 modes:

  1. "Always pedals" - the pedal axes are always bound to the controller triggers.
  2. "Dependent (driving/aiming)" - in driving mode, the pedal axes are bound to the triggers, in aiming mode, you can bind button presses to the axes. The degree of force is determined by the PedalValuePress parameter. You can switch modes using the keys ALT + E. You can set the default mode by changing the DefaultMode parameter.

You can also set pedals or other devices to have up to 16 buttons, which can be assigned to any Xbox gamepad buttons by changing the Button1..16 parameter.

To turn off DualSense or DualShock 4, hold the PS button, to turn off Nintendo controllers, hold the Capture or Home button for 10-15 seconds until the controllers turn off.

Hotkeys

Action Sony Buttons Nintendo Buttons Windows
Open Xbox Game Bar (Win + G press) PS Capture + Home -
Decrease and increase Windows volume PS + □ and PS + ○ Capture + Y and Capture + A -
Screenshot (Win + ALT + PrtScn press) Microphone button or PS + X Capture + B -
Record video (press Win + ALT + R) Hold the microphone button or PS + X Hold Capture + B -
Aiming mode: mouse emulation or right stick offset PS + R1 Capture + R1 ALT + A
Operation mode (driving or aiming) Touchpad areas or touchpad press (for controllers without touch panel, enable in config) Capture/Home (press Capture again to reset, press Home again to toggle aim mode — always/L2) ALT + 1, ALT + 2 (press ALT + 1 again to reset, press ALT + 2 again to toggle aim mode — always/L2)
Change aiming sensitivity: increase and then decrease PS + △ Capture + X -
Reset aiming sensitivity PS + RS Capture + RS -
Change rumble strength or disable it PS + Options Capture + Plus ALT + </>
Enable/disable touchpad press for mode switching (Sony) PS + Share - ALT + W
Auto stick press when tilted at a certain angle (value set in the configuration file), either once or continuously PS + LS HOME + LS ALT + S
Screenshot modes: Xbox Game Bar, Steam, Xbox Game Bar + Steam, custom-configured button (MicCustomKey parameter should be set to the desired key) - - ALT + X
Turn off light bar (Sony) PS + L1 or double-tap the brightness area of the touchpad and swipe left or right. If brightness adjustment is locked (LockChangeBrightness), the light bar will turn off with a double tap. - ALT + B

Setup

  1. Study the documentation to be aware of all features and specifics.
  2. Install ViGEmBus.
  3. Install Microsoft Visual C++ Redistributable 2017 or newer.
  4. Connect the Sony DualSense, DualShock 4, Nintendo Pro controller or Joy-Cons.
  5. Unzip and launch DSAdvance.
  6. If necessary, change the dead zones of the sticks, triggers or other parameters in the configuration file Config.ini.
  7. (Optional) To enable operation of two gamepads, change the Enabled parameter to 1 in the SecondaryGamepad section. You can also adjust dead zones for sticks, triggers, and colors.
  8. When used with Steam games, in the controller settings, disable Playstation personal settings.
  9. It is also recommended to install HidHide, then in the HidHide Configuration Client add DSAdvance.exe and turn on the parameter Enable device hiding (If turned off). It is necessary so that the game did not see our controller, and saw only emulated Xbox 360 gamepad.
  10. (Optional) To launch from the notification area (tray), by double-clicking, you can add a shortcut to Launcher.exe to Windows startup %AppData%\Microsoft\Windows\Start Menu\Programs\Startup.
  11. (Optional) To run third-party utilities via Launcher, specify the title and path to the application in the configuration file.

Download

Version for Windows 10, 11.

Download

Possible problems

The game sees 2 controllers at the same time (DualSense / DualShock 4 / Nintendo Pro controller or JoyCons and Xbox)
If the game supports a modern gamepad you can turn off the emulation of the Xbox gamepad on the keys ALT + Q or hide this gamepad at all using the program HidHide or try in wireless mode.

Permanently changing keyboard and gamepad icons
You can change the aiming mode to Mouse-Joystick, in the program, or use aiming by left trigger.

Adaptive triggers or light bar don't work in the game
Add the game to the "HidHide" exceptions list and change the DSAdvance mode to Only mouse or Xbox gamepad (only driving) & mouse aiming.

Driving don't work in games with DualSense support (without HidHide)
Launch DSAdvance first, and only then the game itself, the game can give priority to the emulated Xbox controller and driving will work. You can also enable Only driving & aiming emulation mode so that the controller will only turn on in driving mode.

Keyboard emulation don't work in some games
In some games, for example, Max Payne or Crysis 2, unfortunately, this don'n work yet.

Rumble don't work on Nintendo Pro controller
In USB mode, rumble is disabled due to issues, it works in wireless mode on compatible controllers, but hasn't been tested on original ones.

Credits

  • Sony and Nintendo for the most advanced gamepads and investment in innovation, and for driving innovation in games.
  • ViGEm for the ability to emulate different gamepads.
  • HIDAPI library with fixes for the library to work with a USB devices. The project uses this fork.
  • JoyShockLibrary for a cool gamepad library that makes it easy to get controller rotation. Also uses some code from this library and JibbSmart snippet for aiming.
  • DS4Windows[1][2] for the battery level.
  • JoyCon-Driver for Joy-Cons rumble.

Building

  1. Download the sources and unzip them.
  2. Download and install Microsoft Visual Studio Code 2017+.
  3. Update the project properties with your tools and SDK.
  4. Choose the Release build type (if Debug is installed) and x86, then compile the project.

Feedback

r57zone[at]gmail.com

About

Advanced Xbox controller emulation for DualSense, DualShock 4, Pro Controller, Joy-Cons / Продвинутая эмуляция Xbox геймпада для DualSense, DualShock 4, Pro контроллера, Джойконов

Topics

Resources

License

Stars

Watchers

Forks