Author Topic: [Guide] Make DS 4 and DS 3 work on FFVII PC (without any third party software)  (Read 48475 times)

zzzplayer

  • *
  • Posts: 8
    • View Profile
# Overall Summary:

   Just use "Steam Controller Configuration" and remap DS buttons to keyboard buttons. This is the fastest, easiest, and most elegant method without the use of any third party software.

   I've included Steam gamepad presets for both DS 4 and DS 3 in this post ( see below for steam:// ) so you can just import them without having to manually map this yourself.

# Summary about DS 4 and DS 3 compatibility for FFVII PC:

    DS 4:
    Windows 10 has native drivers. When the gamepad is plugged in for the first time, Windows 10 automatically installs it as a DirectInput gamepad. All buttons are tested to work under Windows "Game controller settings". However, the buttons cannot be detected and changed under "FFVII Game Settings -> Joystick". Once in game, some buttons work while others do not. "Steam Controller Configuration" (see below) can make all buttons work with the game.

    DS 3:
    Windows 10 has no native drivers; official drivers is needed. When the gamepad is plugged in for the first time, Windows 10 detects it and the device shows up as a placeholder device. Once the official drivers is installed, the device acts as a DirectInput gamepad. All buttons are tested to work under Windows "Game controller settings". However, the buttons cannot be detected and changed under "FFVII Game Settings -> Joystick". Once in game, some buttons work while others do not. "Steam Controller Configuration" (see below) can make all buttons work with the game.

# Traits of FFVII PC input implementation:

    For joystick/controller support, the game implements a "joystick type" of DirectInput. The four directions are mapped to X and Y axes. The game lacks support for POV hat (D-pad) and Triggers on standard DirectInput and XInput controllers.
   
   Under "FFVII Game Settings -> Joystick", the button presses of a standard DirectInput or XInput gamepad cannot even be detected and changed.
   
   Once in game, some buttons of a standard DirectInput or XInput gamepad work while others do not.
   
   While in game, the game responds to both keyboard and joystick inputs simultaneously.

# Potential solutions:

    I. Convert gamepad buttons to "joystick type" DirectInput so the game can understand ( e.g. vJoy, as outlined in the old guide below does this; XInputPlus)

    II. Convert gamepad buttons to keyboard buttons (e.g before the new method, people use 3rd party wrapper type software to do this)

    III. Mod the game so it accepts standard DirectInput or XInput gamepad (e.g. FFVII Nx driver does this so a XInput gamepad can work)

# Summary of the new method:

    The new method is a variant of potential solution "II." above (map to keyboard buttons), but using only "Steam Controller Configuration", which is much easier and without the need for any third party software.

    This new method can make DaulShock/XBox or any controller work on FFVII without any third party software.

# Background leading to the new method:

    If you have been following Steam client updates, you may remember Steam released support for DaulShock 3 back in Jul. 24th, 2018 (requires installing the official DS 3 driver from PlayStation Now app beforehand). This introduces DS 3 support for games that use Steam Input.
    However, even with this update, this still doesn't fix the situation for us who want to use a DS 3 controller on FFVII (the game uses a joystick type of DInput, not Steam Input API).
    https://store.steampowered.com/news/42269/

    In another Steam update in 2020, if you enable controller support in Steam for your controller in Steam -> Settings -> Controller, Steam will force capture your controller device and apply a game config even when the game in question does not use Steam Input API. Previously, game configs are only applied when a game use Steam Input API. Due to this change, vJoy as outlined in the old guide below no longer work. On the other hand, this opens up new opportunities as we no longer need the old setup below; we just need to use the Steam Controller Configurator to map keyboard buttons to some of our DS3 buttons for the DS3 to work with the game.

    In other words, we can abandon the complex guide below and use a more simplified method with only the Steam client and the official DS 3 driver (PS Now on PC app) for the Dualshock 3 to work on FFVII.

    In the case of FFVII, the game implements a joystick type of DInput, accepts both gamepad and keyboard presses simultaneously while in game. By default, the game can accept some of the buttons of a DInput and XInput gamepad correctly, but not others. The D-PAD and some buttons of a DInput/Xinput controller won't work with the game. So all we need to do is remap those specific buttons that don't work (or all buttons) to keyboard buttons using Steam Controller Configurator. Also, as an added bonus for doing this way, both the D-PAD and analog stick of the DualShock 3 controller can now work simultaneously.

    The Steam game config shall work with both DS3/DS4/Xbox controllers or most likely any controllers that has D-PAD, analog sticks, and shoulder buttons.

=========================

New Guide:

Summary of steps for the new method:

    1. If manual installation of drivers is needed, install the drivers for your controller in order for it to function under Windows.

    2. Enable Steam support for your controller type in Steam Settings.

    3. Map the controller buttons to keyboard buttons using "Controller Configuration" under "Steam Library -> FFVII".

Steps for the new method:

note: The guide below can be applied to both DS 4 and DS 3; the first step is only applicable to DS 3. The guide and the controller presets may also be applied to other controllers such as Xbox (Steam shall typically be able to convert the presets due to the mappings are basic).

1. (This first step is for DS 3 only) Plug in Dualshock 3 controller and install the official Dualshock 3 driver from PlayStation Now

    I.) Download and install the official Dualshock 3 driver
   
        # Download the official standalone DS 3 driver included from "PS Now on PC" App (via PCGamingWiki, click "Official DualShock 3 drivers v3.0.0.0")
       https://www.pcgamingwiki.com/wiki/Controller:DualShock_3#Wired_connection_-_official_drivers
      
        OR
      
       # Download the "PS Now on PC" App, which includes the official DS 3 driver
        https://www.playstation.com/en-us/explore/playstation-now/ps-now-on-pc/
   
    II.) After installation, the controller should show up like the following in "Control Panel -> Devices and Printers":
   
   
   
    If you right click the icon and select "Game controller settings", click and select on the controller in question, and click "Properties" button. You may test the buttons and the buttons presses should all work:
   
   

2. Make sure Steam can detect the DS controller and has enabled DS support (PlayStation Configuration Support).

    Steam -> Settings -> Controller -> General Controller Settings
   
   
   
   

3. In Steam, go to your game in Library and click "Controller Configuration".

   

4. Map the D-PAD and SOME specific buttons of your controller to the keyboard buttons like the following.

    You can apply mine "FFVII DualShock NUM -> Keyboard" by zzzplayer
   
   note:
      i.) The DS 4/3 configs are interchangeable and may even work on Xbox controllers. Steam can convert them correctly despite the warning because the buttons are basic.
      ii.) After you applied the config, you may want to export a local config copy.
   
   DS 4:
   steam://controllerconfig/39140/2185138927
   
   DS 3:
   steam://controllerconfig/39140/2185133339
   
   

5. Test the buttons in game.

=========================

OLD Guide below: no longer needed if the above works for you

Hello folks,

I want to share an open source tool with you that makes DS controller, especially DS3, work with Final Fantasy VII (Steam version).

Why?

   I.) As you can see from the FFVII Game settings, the game supports "Joystick" (DirectInput) and not "Gamepad".
   

   According to Wiki, this is "Joystick":
   https://en.wikipedia.org/wiki/Joystick
   

   Also according to Wiki, this is "Gamepad":
   https://en.wikipedia.org/wiki/Gamepad
   

   II.) Also from PCGamingWiki:
   https://www.pcgamingwiki.com/wiki/Final_Fantasy_VII_(2012)#Input_settings
   "Supports "joystick type" DirectInput device. The four directions are mapped to X and Y axes. Lacks support for POV hat (D-pad) and Triggers on standard DirectInput and XInput controllers."

You may have heard of tools such as

# MotioninJoy: malware

# Better DS3: has better interface, but still relies on malware MotioninJoy driver

# DS4windows: supports only DS4. Emulates a keyboard or Xbox 360 controller as Xinput or DirectInput games.
https://github.com/Ryochan7/DS4Windows

# other Keyboard-to-DS tool:

   # InputMapper: free and ad-supported. supports only DS4. emulates a xbox 360 controller (that is, Xinput games only) or keyboard.
   # JoyToKey:commercial and proprietary
   # Xpadder: commercial and proprietary (though, seems to be free on the sourceforge page)
   # Pinnaclegameprofiler.com: commercial and proprietary

# "SCP Driver": an open source driver for DualShock 2/3/4 on Windows. emulates a xbox 360 controller (that is, Xinput games only).

Among these, the best is either SCP Driver or DS4windows; however, while the SCP Driver worked fine, the FFVII game seems to only respond to the left analog stick and not the D-PAD (for me at least).

The tool I'm introducing here is called "Dinput Wrapper for SCP Driver", and with the latest updates that I've worked with the author to patch, you now have an open source tool that makes DualShock 3 or 4 work on FF VII.

"Dinput Wrapper for SCP Driver" works along with "SCP Driver" and "vJoy".

Together, "Dinput Wrapper for SCP Driver" features the following:

# open source
# works with DualShock 2, 3, or 4
# not by keyboard emulation
# works directly with DirectInput games


Steps for installing ScpToolkit and "Dinput Wrapper for SCP Driver":

1. Download and install ScpToolkit (aka ScpServer Reloaded). Read & Follow the installation instructions.
   (note: If you have Windows 10 Creators Update or above (and if after a fresh install or reset), then you may want to use version "ScpToolkit v1.6.238.16010", which can prevent signed certificate issues.)
   http://forums.pcsx2.net/Thread-ScpToolkit-XInput-Wrapper-aka-ScpServer-Reloaded
   https://github.com/nefarius/ScpToolkit/releases
   

2. Test the controller work with ScpToolkit
   i) start ScpToolkit Monitor (Windows Start Menu -> ScpToolkit -> ScpToolkit Monitor)
   ii) once started, there shall be a SCP Monitor icon appear in the Notification area of Windows Taskbar
   iii) right click on the SCP Monitor icon and click "Input Tester"
   iv) test all buttons, D-Pad, and analog sticks
   v) once done, right click on the SCP Monitor icon and click "exit"
   vi) also, if you go to the "Devices and Printers" screen within Control Panel on Windows, you DS controller should be installed as a "Xbox 360 Controller for Windows".
   

3. Download and extract "DInput Wrapper for SCP Driver" files (ScpPad2vJoy)
   (note: the program only has four files so you may extract direct to the ScpToolkit directory "C:\Program Files\Nefarius Software Solutions\ScpToolkit" or to a separate directory such as "C:\Program Files\ScpPad2vJoy" if you intend to have multiple config files for multiple games in the future.)
   http://forums.pcsx2.net/Thread-Dinput-Wrapper-for-SCP-Driver
   https://github.com/TheLastRar/SCP2vJoy

4. Download and install vJoy
   (note: Use the version suggested by ScpPad2vJoy in the pcsx2 forum. As this writing, vJoy v2.1.6)
   ( https://github.com/shauleiz/vJoy/releases/tag/v2.1.6.20 )
   http://vjoystick.sourceforge.net/site/index.php/download-a-install
   https://github.com/shauleiz/vJoy/releases

5. Configure "Dinput Wrapper for SCP Driver" (ScpPad2vJoy)
   i) I assume you want FFVII configuration work by default whenever you start "ScpPad2vJoy.exe"
   ii) Go to the directory where you extracted the ScpPad2vJoy files and create a file called "Default_vjConfig.txt" 
   iii) In your "Default_vjConfig.txt", use the following code:

Code: [Select]
B1=SQUARE
B2=TRIANGLE
B3=CROSS
B4=CIRCLE
B5=L1
B6=R1
B7=L2
B8=R2
B9=SELECT_SHARE
B10=START_OPTIONS
AY_UL=UP
AY_DR=DOWN
AX_UL=LEFT
AX_DR=RIGHT
      
   # The four AX_ and AY_ parameters are the key mappings here that makes this solution work. Initially, when only SCP Driver is installed, the game only responds to the left analog stick of DS 3 for directional control. The issue remains when the "Dinput Wrapper for SCP Driver" and vJoy device is used. Since the game only responds to axis values, the four AX_ and AY_ parameters is a workaround solution that converts the D-PAD physical buttons to axis values to make it work.

6. Start "Dinput Wrapper for SCP Driver"
   

7. Test the controller work with vJoy
   
   i) run Start -> Programs -> vJoy -> Monitor vJoy
   ii) test the buttons and D-PAD:
      # When you press a regular button, the button colors should switch to red.
      # When you press the D-PAD buttons, the axis bars should go either up or down.
   

8. Run FFVII

   i) map the buttons in game: Settings -> Joystick
   
      Map the button function names according to the PS1 buttons. This also tests if the game captures your buttons.
      
      you may want to use the following table:
      https://web.archive.org/web/20150820154346/http://www.cavesofnarshe.com/ff7/buttons.php
   
   
   ii) start the game and test play

9. Troubleshoot:

   i) If for some reason, the controller works under Windows (and the controller can be detected and remapped with the joystick settings menu of the FFVII launcher menu), but doesn't work once *inside the game*, then check the "Preferred Device" setting of the "Game Controller settings" under Windows and make sure it's set to "vJoy Device" AFTER you've started ScpPad2vJoy.

       # Control Panel -> Devices and Printers -> right click on any game controller -> click Game Controller settings -> click "Advanced" button -> make sure "Preferred Device" is set to "vJoy Device" for use with older programs.
« Last Edit: 2020-11-28 08:30:27 by zzzplayer »

Covarr

  • Covarr-Let
  • Administrator
  • *
  • Posts: 3940
  • Just Covarr. No "n".
    • View Profile
Re: Introducing an open source DS tool (Dinput) for FFVII
« Reply #1 on: 2015-08-21 20:42:00 »
This is amazing and you are a hero.

dkma841

  • *
  • Posts: 1225
  • delete
    • View Profile
Re: Introducing an open source DS tool (Dinput) for FFVII
« Reply #2 on: 2015-08-21 23:38:25 »
.
« Last Edit: 2021-10-28 16:10:38 by dkma841 »

zzzplayer

  • *
  • Posts: 8
    • View Profile
Re: Introducing an open source DS tool (Dinput) for FFVII
« Reply #3 on: 2015-08-22 03:03:54 »
wondering will this work with other games too?

In the "Dinput Wrapper for SCP Driver" forum thread that I listed, there is one guy who tried this on Final Fantasy XI PC (another old game that was made before the newer Xinput was introduced) and has worked for him.

Most importantly is this compatible with both ps3 and ps4 controller in one? If so that's amazing

The "Dinput Wrapper" serves as an interface between "SCP Driver" and vJoy. Since the "SCP Driver" already supports the DS4, it will install the controller as Xinput device, then the "Dinput Wrapper" would take from there. Though I havn't personally tried the "Dinput Wrapper" on the DS 4, but in theory, it's very likely that the software will work on the DS 4 too (I've already tried the software on the DS 3 and it worked as I described in my opening post). The "Dinput Wrapper" should take the Xinput signal and re-map it as vJoy (a Dinput device) output.

If any of you have tried the "Dinput Wrapper" with a Dinput game on the DS 4, you're welcomed to post and share your experiences here.
« Last Edit: 2015-09-14 09:43:16 by zzzplayer »

chaoticyeshua

  • *
  • Posts: 3
    • View Profile
To anyone able to help, I can't seem to get this to work.

I've been using ScpReloaded for a while, and that works great even with Bluetooth. However, I cannot seem to make SCPPad2VJoy work in Final Fantasy VII. I've installed vJoy. When I run SCPPad2VJoy I click Start, and see the devices enable/disable in Device Manager like they're supposed to. In "Set up USB Game Controllers" it shows vJoy Device, and picks up input. When I use Monitor vJoy it picks up input. It even picks up input in Final Fantasy VII's Settings -> Joystick to configure the buttons... But when I launch the game itself, no button presses are picked up. I've patched the game with Reunion from http://forums.qhimm.com/?topic=14914.0. But I've also removed the patch and verified the game cache through Steam again and it still didn't help. I have the latest versions of everything which, supposedly, are compatible with each other.

Any help would be appreciated if there are people out there who still use this.

Jahiliyyah

  • *
  • Posts: 48
    • View Profile
Interesting. Using my DS3 and SCP Driver I never noticed the issue you're describing with the D-pad myself.
« Last Edit: 2016-03-01 22:50:38 by Jahiliyyah »

chaoticyeshua

  • *
  • Posts: 3
    • View Profile
It's not just the d-pad, though, it doesn't pick up -any- input at all even though I've set the buttons in Settings -> Joystick.

eXistenZe

  • *
  • Posts: 260
    • View Profile
Also using SCP Driver and server with DS3 with no issues at all in all games. No need for complicated setups.

chaoticyeshua

  • *
  • Posts: 3
    • View Profile
The problem is that just using SCP with my DS3 in Final Fantasy 7 (Steam version) the d-pad doesn't work. All directional input has to be done through the left analog stick.

If you have this working while only using SCP, then please tell me what you've done to make it work, because I can't seem to.
« Last Edit: 2016-02-25 18:13:30 by chaoticyeshua »

zzzplayer

  • *
  • Posts: 8
    • View Profile
The problem is that just using SCP with my DS3 in Final Fantasy 7 (Steam version) the d-pad doesn't work. All directional input has to be done through the left analog stick.

If you have this working while only using SCP, then please tell me what you've done to make it work, because I can't seem to.

chaoticyeshua, if you have solved your problem over at PCSX2 forum, you should update your post.

The reason it didn't work for you is because you didn't correctly follow the instructions that I posted above.

The cause of the problem is revealed in your own post over at this PCSX2 forum thread.

You have used the wrong config for the D-PAD

Quote
.
.
.
PU=UP
PD=DOWN
PL=LEFT
PR=RIGHT


While my original post used the following config for the D-Pad:

Quote
.
.
.
AY_UL=UP
AY_DR=DOWN
AX_UL=LEFT
AX_DR=RIGHT

Clearly, the wrong config for the D-PAD is what caused the issue you described.

In my original post, I said when you test using the "Monitor vJoy" tool:
"the axis bars (if you use the AX_ and AY_ parameters above) should go up or down when you press the D-PAD buttons." This step is important because it tells user the D-Pad signal is being converted to axis signals, which the game responds to.

The author of "Dinput-Wrapper-for-SCP-Driver" (Ge-Force) who helped you solved the issue used the exact same config as I have posted above.

WhiteShadow11

  • *
  • Posts: 29
  • You are free.
    • View Profile
Hello, does this work for DS4Windows too?

MrBaynie

  • *
  • Posts: 1
    • View Profile
Hi,

I tried everything in this post, but it doesn't work for me.

When I launch scpad2Vjoy, I can see in Vjoy Monitor that the D-pad is recognized as the analog stick, so this part is good.

When I launch FF7, I can remap the controller in the settings, the D-pad is recognized. Everything looks fine.
But still, when I launch the actual game, the controller does nothing, even if the pad is detected by the config tool of the game.
No buttons work at all, not just the D-Pad.

Does anybody has an idea about this?

Edit:

I found the solution on the PCSX2 forum, i will describe the solution if ever somebody else has the same problem:

FF7 uses the preffered controller from the windows option. When you use scp toolkit, your DS3 is emulated as an XBOX360 controller, so the preferred device is the XBOX360 controller.
When you launch scpad2Vjoy, the DS3 is now recognized as a vjoy gamepad, so it is no longer the prefered device, and FF7 won't work.

Go to "Set up USB game controllers" in control panel/settings, find the vjoy controller and then click the "Advanced..." button to configure the vjoy device as you preferred controller.

Edit 2:

The file "Default_vjConfig.txt" must be placed in the "SCPad2Vjoy -V1.6" folder, not the directory of ScpToolkit.
It took me a while to figure that out.
« Last Edit: 2017-10-25 15:08:14 by MrBaynie »

zzzplayer

  • *
  • Posts: 8
    • View Profile
1.)
Quote
FF7 uses the preffered controller from the windows option. When you use scp toolkit, your DS3 is emulated as an XBOX360 controller, so the preferred device is the XBOX360 controller.
When you launch scpad2Vjoy, the DS3 is now recognized as a vjoy gamepad, so it is no longer the prefered device, and FF7 won't work.

Go to "Set up USB game controllers" in control panel/settings, find the vjoy controller and then click the "Advanced..." button to configure the vjoy device as you preferred controller.

You typically don't need to manually set the Preferred Device setting. When you start "DirectInput Wrapper for SCP Driver" (ScpPad2vJoy.exe), the program automatically sets the Preferred Device for old programs for the controller as "vJoy Device".

I never had to manually set the Preferred Device setting. When I turn on ScpPad2vJoy.exe, the Preferred Device is automatically set to "vJoy Device"; when I turn off ScpPad2vJoy.exe, the Preferred Device returns to "None".

Maybe you've multiple controllers on your system that caused this problem or you may have once manually force set the Preferred Device to the wrong device.

2.)
Quote
The file "Default_vjConfig.txt" must be placed in the "SCPad2Vjoy -V1.6" folder, not the directory of ScpToolkit.

This is a communication issue.

In the original tutorial, I *implied* that the files of "ScpPad2vJoy" zip archive is extracted into the same directory as the ScpToolkit installation directory, which is *typically* "C:\Program Files\Nefarius Software Solutions\ScpToolkit".

I made such implication because "ScpPad2vJoy" is essence an addon to "ScpToolkit" and only has four files.

By default, ScpPad2vJoy loads the "Default_vjConfig.txt" file from the same directory where its binary resides.

Hence, given the above scenario, the tutorial was correct that the "Default_vjConfig.txt" file will be loaded from the same diretory as ScpToolkit IF "ScpPad2vJoy" installed into the ScpToolkit directory.

If you had chosen to install ScpPad2vJoy into a different diretory, then the directory in which the "Default_vjConfig.txt" file is loaded from will of course be different.

Regardless, the "Load Config" button exists and you can always load the config from whatever location.

Of course, I should have been more explicit about the "ScpPad2vJoy" directory; also, there are benefits to extract ScpPad2vJoy files into a separate directory (e.g. the user may intend to have multiple config files in the future and may not want to have them mix up with "ScpToolkit" files).

I've revised the tutorial to clarify this point.

principealex1

  • *
  • Posts: 18
    • View Profile
Following this guide D-Pad should work, but analog no more right?, there's no way to make both work?

zzzplayer

  • *
  • Posts: 8
    • View Profile
Following this guide D-Pad should work, but analog no more right?, there's no way to make both work?

Please see the updated guide at the top of the opening post above. With the above Steam controller config setup, both the D-PAD and Left Analog stick can work. Left Analog stick can also be toggled for auto-run. The Steam controller config above shall work for both DS3 and DS4.

soldier3rdclass

  • *
  • Posts: 8
    • View Profile
Do you know if this guide will work for an old Logitech G-UF13A? I can't get the dpad to work with ff7, even tried using FFNx.

zzzplayer

  • *
  • Posts: 8
    • View Profile
Do you know if this guide will work for an old Logitech G-UF13A? I can't get the dpad to work with ff7, even tried using FFNx.

After doing some research, I assume the Logitech G-UF13A is a DirectInput gamepad?

Are you able to get the gamepad drivers to install on Windows?

Do the gamepad buttons tested to work under Windows in "Control Panel -> Devices and Printers -> select gamepad icon -> (right click) Game controler settings -> Properties" as outlined in the screenshot above?

I.)
If it's a standard DInput gamepad, then the game launcher Joystick configuration shall work with the gamepad as it is, no other software shall be needed.

II.)
If it isn't a standard DInput gamepad or for whatever reason the gamepad doesn't work with game, then you may try the following:

Go to "Steam -> Settings -> Controller -> General Controller Settings":

Is Steam able to detect your gamepad?

If so, enable "Generic Gamepad Configuration Support".

If all of the above work, try go to "Steam -> Library -> FFVII", and click "Controller Configuration" and map the buttons as keyboard buttons.

damiendada

  • *
  • Posts: 5
    • View Profile
Thanks for sharing this guide!