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

 

History

82 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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. Works based on the driver ViGEm.

Working modes

Several working modes are supported, they are switched by pressing the touchpad for DualSene & DualShock 4 and for Pro controllers & Joy-Cons to the Capture, and Home buttons.

To exit the stick emulation mode on the touchpad, need to switch to the default mode.

By clicking on the default profile on DualSense the white LEDs display the current battery status (1 - 0..25%, 2 - 26..50%, 3 - 51..75%, 4 - 76..100%), also on DualSense and DualShock 4 the battery status is shown on the lightbar (green - 100..30%, yellow - 29..10%, red - 9..1%), can be disabled in the config, parameter ShowBatteryStatusOnLightBar. For DualSense and DualShock 4 the current charge is displayed in the program itself.

The PS button opens the "Xbox Game Bar", PS + □ - decrease the volume, PS + ○ - increase the volume, PS + △ - increases and then decreases aiming sensitivity (reset to PS + R3), PS + X - microphone button (screenshot / pressing configured keyboard button).

By default, the microphone button takes a screenshot of Win + Alt + PrtScr (for DualShock 4 press PS + X). By changing the MicCustomKey parameter to the desired button value, it will be pressed.

To emulate the keyboard and mouse for older games, switch the mode to ALT + Q or PS + ← and PS + → and select the desired profile or create the desired profile. Profiles are switched to the ALT + ↑ and ALT + ↓ keys if the window is active or on a gamepad using PS + ↑ and PS + ↓. The default profile allows to work in Windows.

To connect external pedals (DInput), change the DInput parameter to 1, in the ExternalPedals section. To connect external pedals on Arduino, change the COM port number by changing the COMPort parameter.

To turn off the DualSense or DualShock 4, hold down the PS button for 10-15 seconds until the controller turns off.

Setup

  1. Install ViGEmBus.
  2. Install Microsoft Visual C++ Redistributable 2017 or newer.
  3. Connect the Sony DualSense, DualShock 4, Nintendo Pro controller or Joy-Cons.
  4. Unzip and launch DSAdvance.
  5. If necessary, change the dead zones of the sticks, triggers or other parameters in the configuration file Config.ini.
  6. When used with Steam games, in the controller settings, disable "Playstation personal settings".
  7. 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.
  8. (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.
  9. (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".

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.

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 some code from this library is used.
  • For Reddit users for a detailed description of the DualSense USB output packet.
  • DS4Windows[1][2] for the battery level.
  • ChatGPT for improved aiming.

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