Read this first! > FAQs and Tutorials

[Guide] Make DS 4 and DS 3 work on FFVII PC (without any third party software)

(1/4) > >>

zzzplayer:
# 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: ---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

--- End code ---
      
   # 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.

Covarr:
This is amazing and you are a hero.

dkma841:
.

zzzplayer:

--- Quote from: sunz on 2015-08-21 23:38:25 ---wondering will this work with other games too?

--- End quote ---

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.


--- Quote from: sunz on 2015-08-21 23:38:25 ---Most importantly is this compatible with both ps3 and ps4 controller in one? If so that's amazing

--- End quote ---

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.

chaoticyeshua:
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.

Navigation

[0] Message Index

[#] Next page

Go to full version