Author Topic: An Useful Open Source DualShock Tool (DirectInput) for FFVII  (Read 7942 times)

zzzplayer

  • Fast newbie
  • *
  • Posts: 5
  • Karma: 3
    • View Profile
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).

You may have heard of tools such as

# MotioninJoy: malware

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

# DS4windows.com: supports only DS4. Emulates a keyboard or Xbox 360 controller as Xinput or DirectInput games.

# 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're on Windows 10, use version "ScpToolkit v1.7.277.16103-BETA" or above because they are signed drivers and can prevent Window feature update 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"
   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 doesn't work once inside the game (and it can be detected and remapped with the joystick settings menu of the game) and you've made sure you've followed the guide, check the "Preferred Device" setting of the controller 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: 2017-11-25 15:09:21 by zzzplayer »

Covarr

  • Covarr-Let
  • Administrator
  • No life
  • *
  • Posts: 3919
  • Karma: 115
  • The Great Redarr.
    • 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.

sen

  • No life
  • *
  • Posts: 1252
  • Karma: 26
    • View Profile
Re: Introducing an open source DS tool (Dinput) for FFVII
« Reply #2 on: 2015-08-21 23:38:25 »
Wow good strawberries man, wondering will this work with other games too? Most importantly is this compatible with both ps3 and ps4 controller in one? If so that's amazing
« Last Edit: 2015-08-21 23:40:05 by sunz »

zzzplayer

  • Fast newbie
  • *
  • Posts: 5
  • Karma: 3
    • 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

  • Newbie
  • *
  • Posts: 3
  • Karma: 0
    • 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

  • Fast newbie
  • *
  • Posts: 49
  • Karma: 7
    • 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

  • Newbie
  • *
  • Posts: 3
  • Karma: 0
    • 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

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

chaoticyeshua

  • Newbie
  • *
  • Posts: 3
  • Karma: 0
    • 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

  • Fast newbie
  • *
  • Posts: 5
  • Karma: 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.

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

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

MrBaynie

  • Newbie
  • *
  • Posts: 1
  • Karma: 0
    • 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

  • Fast newbie
  • *
  • Posts: 5
  • Karma: 3
    • 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.