Announcement

Collapse
No announcement yet.

Virtual DirectInput Controller

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Virtual DirectInput Controller

    We have many Virtual Controllers to select in reWASD. To make the list complete I think we need Virtual DirectInput Controller for old games which do not support newer controllers. I saw that Virtual DS3 controller is helping a lot with compatibility to old video games and finally old games are seeing new controllers. I was able to run Grand Theft Auto 2 and finally, inputs were working. But mapping them or creating proper rewasd profiles in old games is painful.

    I had to check in joy.cpl which button is labeled as Button 1, Button 2, Button 3 etc. and based on this create config. Button 1 was select button, Button 2 was left stick button. πŸ€¦β€β™‚οΈ Having Virtual DI Controller would be much easier.

    Such Virtual DirectInput Controller would fix this problem as buttons in reWASD can be labeled properly as Button 1, POV up etc. Like it is for DirectInput. Just one glance on reWASD application, compare with game config and we will be able to know which button activates which action. Additionally, it will be possible to use the advantages of DirectInput devices: assigning buttons up to 8 axes (a wonderful option for pressure-sensitive buttons which can be remapped to axes), possible to create virtual up to 128 buttons (maybe we do not need so many, but some combos can lead to activate eg. Button 32, something like an alternative for F24 keyboard button - physically we do not have this button, but in-game it can be activated by pressing eg. Button 1+Button 2 simultaneously), full-range POV (standard) and in extreme cases, we can use them to be able to connect more than 8 controllers to PC at the same time. Sounds good for me.

    Logitech devices have a nice, modern layout for DI labeling which is worth using:

    Click image for larger version

Name:	1.png
Views:	929
Size:	242.3 KB
ID:	233702Click image for larger version

Name:	2.png
Views:	853
Size:	180.2 KB
ID:	233701
    I think it's the last important Virtual controller from the past and after this, you can focus only on new significant devices or keyboards and mouses. πŸ˜‰
    Attached Files

  • #2
    Hello! Thanks for the suggestion. We will take your wishes into account and consider if it is possible to implement it.

    Comment


    • #3
      To give a bit light for my idea: I have found great library Xidi which translates Xinput into DirectInput, DirectInput8 and WinMM signals. It's nice, but it's not user-friendly solution. Requires to copy dll files (and optional .ini configs) into game library. Applying virtual controller config in reWASD is MUCH easier for end user, than copy libraries to game directory. Xidi is good, but I think reWASD can do better this translation.

      It would be a big thing if Virtual DirectInput controller were able to replace Xidi, giving support for old games as device with DirectInput vibrations and proper buttons. To test how it works with problematic games, you can use their configuration library which listing these old games not compatible with XInput.​

      Comment


      • #4
        Thanks for the additional information

        Comment


        • #5
          All reWASD virtual controllers are visible in DirectInput - you can see them in joy.cpl. If we take, for example, DualShock4 - what problem it has that old games do not see it or something cannot be mapped? Same about Xbox 360, which also has DirectInput part. What concerns button labelling (1,2 etc) that can easily be aliased in GUI if needed in future - no need to create new controller for that. Not enough buttons on controller? If some old game actually required > 32 buttons, then how it was playable on normal devices available in retail (currently or in the past)? Obviously, such game should allow mapping some actions to key combinations because no device has so many buttons. But then, this could be easily achieved in reWASD via macros.

          >Button 32, something like an alternative for F24 keyboard button - physically we do not have this button, but in-game it can be activated by pressing eg. Button 1+Button 2 simultaneously
          Right, but Button 1 + Button 2 press can be easily emulated by reWASD, so there is no practical need to create virtual device which has button 32 "physically".
          So, please clarify more why such virtual device is needed, maybe we're missing something.

          Comment


          • #6
            Originally Posted by DevX View Post
            What concerns button labelling (1,2 etc) that can easily be aliased in GUI if needed in future - no need to create new controller for that.
            Fair point. This is something what can fix an issue in games which supports only old controllers. I have tested few old games like Jedi Knight: Jedi Academy, Legacy of Kain: Defiance, GTA 2, Jazz Jackrabbit 1, Jazz Jackrabbit 2 and where all others virtual controllers were not recognized (DS4, Switch, X360, Xone), Virtual DS3 is recognized and works fine. So this feature will work great for sure. Especially if magic wand will assign Direct Input buttons differently, to have more human layout (not pressing Select, LS, RS, Start buttons for Button 1,2,3,4).

            One problem which I have observed is Force Feedback in old games. It's not working with virtual controllers, but with other new controllers is not working either, so probably signal standard changed after ~2003. πŸ˜• But buttons works fine, this is good.

            Old games do not require >32 buttons, so this idea probably will not have a usage. Only one useful idea can be possibility to remap real DS3 pressure-sensitive face buttons to triggers for racing games. Currently remapping them to trigger works like 100% press, or when going to macros, we can have three thresholds. Not full spectrum of pressure. Rest ideas of DevX sounds good.

            I have compared buttons from Virtual DS3 in joy.cpl and they looks like this (Xbox controller layout):
            select - Button 1
            LS - Button 2
            RS - Button 3
            start - Button 4
            dpad up - Button 5
            dpad right - Button 6
            dpad down - Button 7
            dpad left - Button 8
            LT - Button 9
            RT - Button 10
            LB - Button 11
            RB - Button 12
            Y - Button 13
            B - Button 14
            A - Button 15
            X - Button 16
            Xbox Guide - Button 17
            18, 19 - not used?​

            Comment


            • #7
              > I have tested few old games like Jedi Knight: Jedi Academy, Legacy of Kain: Defiance, GTA 2, Jazz Jackrabbit 1, Jazz Jackrabbit 2 and where all others virtual controllers were not recognized (DS4, Switch, X360, Xone), Virtual DS3 is recognized and works fine​

              It is a bit strange, because if controller is visible in joy.cpl then it must be detected by game via DirectInput.
              We'll need to investigate this more. Also, did you check raw virtual DS3 or with sixaxis driver?

              >One problem which I have observed is Force Feedback in old games. It's not working with virtual controllers, but with other new controllers is not working either, so probably signal standard changed after ~2003.

              This is good point, because it seems old games used Force Feedback via DirectInput, which is not implemented in new controllers. We'll think about this.

              > Only one useful idea can be possibility to remap real DS3 pressure-sensitive face buttons to triggers for racing games. Currently remapping them to trigger works like 100% press, or when going to macros, we can have three thresholds. Not full spectrum of pressure.​

              Ok, we'll add this possibility in one of future updates.

              > have compared buttons from Virtual DS3 in joy.cpl and they looks like this (Xbox controller layout):
              select - Button 1
              LS - Button 2
              RS - Button 3
              start - Button 4​

              It seems you are using raw virtual DS3 device. Note that if you install sixaxis driver then button order will be different.

              Comment


              • #8
                Thank you!

                Yes, I was using raw virtual DS3. Now I have installed the official driver and the configuration is messed up. So I see sharing rewasd configs for Virtual DS3 is useless as it can give different results depends on use of official driver or raw driver. Unless I will flag somehow which driver has to be used for proper config. Is it possible somehow in the future that config will apply the same directinput mappings for both drivers? Maybe as optional feature.

                Luckily, I double checked games which I have listed and I was surprised that I was wrong. They are working properly with DS4 virtual controller or some even on Xbox One. X360 was doing problems. Probably I had problem with SteamInput. When it's disabled fully, virtual controllers are working fine. GTA2 still do not have proper POV support, but I suppose it was not properly implemented on PC, so I cannot use both axis at once. Not a problem of remapping. So generally, only old Force Feedback is a missing thing here. Optional DirectInput button labeling for old games would be helpful too. πŸ™‚ Thank you for your great support!

                Comment


                • #9
                  reWASD does not know beforehand what driver you will assign for virtual DS3 so it cannot change configs depending on this automatically. Driver can even be changed on the fly. For consistency it is recommended to install offiсial sixaxis driver for all physical and virtual DS3 devices by default. If you have some third party physical DS3 not fully compatible with sixaxis, then you can always change its driver manually back to standard 'USB Input device'.

                  Comment


                  • #10
                    >So generally, only old Force Feedback is a missing thing here

                    Do you have idea what kind of force feedback effects these old games used, so they could be mapped to rumble on modern controllers properly? By effects i mean constant force, periodic effects (eg. sine, saw) etc. And what games exactly you mean which used FFB - it would be interesting to know how they "rumbled" on real FFB device in order to understand what you expect from virtual DI device.

                    Comment

                    Working...
                    X