DX programming
-
So many of us “newbies” don’t really know what most of the concepts and procedures that that are casually tossed out as if everyone knows. IE, DX joystick programming. What is that? vs “regular” joystick programming? Can someone please point me to where I could read and educate myself about a little more. Just got a Cougar throttle and stick and am eager to jump in and begin…thanks!
-
DX is connecting a button directly to a game command.
If you go to the Setup UI and click a command (say, TMS UP) and then click a button on the joystick to assign that button to that command, you’re DX programming the button.
The alternative is to use some sort of middle-ware, like FOXY, TARGET or SST. Those turn key presses in to commands and you assign the keyboard key to your joystick.
However, DX is much more robust than what you can do with simple point and click command assignment. To read up on that (in addition to forum search and YouTube tutorials) check the docs folder: x:\Falcon BMS 4.33 U1\Docs\Key Files & Input\BMS Key File Manual.pdf .
-
DX is short for DirectX which is the API which is how Windows handles joystick input since forever until things like Xbox controllers which are XInput. “DX” is absolutely the normal, standard, regular, typical way joysticks are used.
A lot of joystick manufacturers package their joysticks with software which emulates keyboard presses, mouse movements, etc. in the interest of primarily instant gratification of using some provided profile which already has keystrokes matching that title’s defaults. Secondarily there is customization possible by such software. The downsides of keystrokes is a less direct chain of events.
The forum section about the Cougar hardware ( https://www.benchmarksims.org/forum/forumdisplay.php?50-Cougar) should be useful. Since the Cougar is exceptionally well suited to Falcon as well as being of a similar vintage how to set up Cougar for BMS is a well beaten path.
-
Thank you both for your quick responses. That answered many of my questions. I was thrown by the “DX programming” verbiage to what simply could have been called “joystick buttons programming”.
While I have you here now, I still don’t think I fully understand why one would need to use Target or one of the other third party softwares. You state that “Those turn key presses into commands and you assign the keyboard key to your joystick.”
Isn’t that what the BMS Controller section of the UI does anyways? Can’t I just use it assign all the keyboard assignments and button presses I need in order to replicate actual F-16 HOTAS functions (and any sim required functions) . As you mentioned there are plenty guides that have example setups for each button and useful keyboard keys - what more would I gain by using Target for instance? Just trying to make sure I have the BIG picture before I start diving into the excruciating details! -
TARGET’s cool because you can use buttons to move an axis or axis to press buttons. Or you can have a button be pressed only if some switch is flipped to one side and a different button pressed if the switch is the other way. Or by pressing the same button it cycles through several presses in sequence. Basically if you can imagine it, it can be done.
Since the Cougar is so like the real controls there’s a strong case for using it bare, as-is. You won’t have to run any TARGET software every time you play. On the other hand if you ever find that you want to utilize some of the special abilities of TARGET (or Foxy or whatever virtual device) then you would have to redo the setup as if for the first time.
Yes you can obviously bind buttons directly to functions in Falcon but you have to do it (or you would if the Cougar wasn’t so popular as to be practically done for you). But realize that setting button assignments one by one thirty or forty times isn’t as fast as leveraging the default keyboard strokes. People love saving even 10 minutes of setup if they can. Sure it isn’t as dependable, ties up the keyboard as middleman, etc. but instant gratification is instant! Also lots of people buy X-52 joysticks with software that does 6 layers of shifts and modifiers on them and they’ll be damned if they don’t bind every minor control they can think of and fill every slot like the ultimate Swiss Army Joystick.
As annoying as a potential second start might be I suggest going the direct route for setup at first. It should be fast enough and a useful education if you ever do something more complex. I notice you say specifically a Cougar throttle. What other controllers do you have?
-
Thank you both for your quick responses. That answered many of my questions. I was thrown by the “DX programming” verbiage to what simply could have been called “joystick buttons programming”.
While I have you here now, I still don’t think I fully understand why one would need to use Target or one of the other third party softwares. You state that “Those turn key presses into commands and you assign the keyboard key to your joystick.”
Isn’t that what the BMS Controller section of the UI does anyways? Can’t I just use it assign all the keyboard assignments and button presses I need in order to replicate actual F-16 HOTAS functions (and any sim required functions) .Good questions to ask!
First line then, DX programming versus joystick buttons programming. DX, short for DirectX, specifies how the sim is connecting those joystick button presses, to in-game actions. Joystick buttons programming doesnt really specify how we are connecting our hardware inputs to the game inputs. For a lot of people, the standard is that you program the joystick to simulate a keyboard button press, and then you program the game to expect a keyboard button press as the command. For a lot of games which dont support joysticks at all, this is the only way you can control the game with a joystick.
With DirectX programming (I guess DirectInput is more specific?) you eliminate the keyboard from the equation. Instead, the joystick tells windows when its buttons are pressed or released, and the game is programmed to subscribe to windows events for what to do when those keys are pressed or released. The first benefit is that the joystick inputs are seen by windows automatically in the case of nearly all joysticks (unless you built it yourself, you can take it for granted that all joysticks work with directx). The game still needs to be programmed to understand which dx inputs should direct which game commands, the same as how you need to program the game to understand keyboard presses as commands.
The second benefit is that the keyboard is eliminated from the equation. In particular, shift keys are eliminated from the equation. As a common example, lets look at the default keyboard controls for a flight simulator. Lets say the flight controls are the arrow keys with SHIFT being held down, and the radar cursor is the arrow keys with ALT held down. You bind the joystick to press Shift + an arrow key for the stick input, and you then bind the cursor controller to press Alt + an arrow key for the cursor input. In flight however, you discover that if you try to operate both the flight controls and the cursor at the same time, they both stop working properly. In the case of BMS, when you have overlapping shift modifiers like this, you can end up with ‘stuck keys’ very easily preventing you from regaining control easily. Using directx programming avoids this entirely.
As far as why you would want to use TARGET, I ask the same question to lots of people! Why would you want to use it? I guess Frederf answered that pretty well already. To summarise for completeness, TARGET lets you emulate other inputs from your controls - you can make your game software see your joystick inputs as being keyboard inputs, for example. Or combine inputs from your TM warthog stick and throttle, two different devices, into a single virtual device, which can be very useful for software which does not support multiple joysticks. I guess the best reason to use TARGET is because you cant achieve what you need to, without resorting to it. If you dont need it, why use it?
-
Thanks again Frederf and Blu3wolf for all the great info. It would appear then, that for me as a beginner, using the BMS Controllers UI I should be able to very nearly (or totally?) replicate the actual switch functions of the real F-16, and then also be able to sufficiently incorporate the most meaningful “in-sim” actuations that are required to be efficient. I am not one who needs to have 6 layers and bind every single option - in fact if one really needed to remove a hand from the throttle or stick to actuate a control or switch (such as reaching for the gear handle), then that is how I would prefer to go about it. I don’t have the resources to build a full pit yet (I have built the seat and side consoles) , so simulating ‘reaching’ for the gear handle or any other such action by ‘reaching’for the keyboard to press ‘G’ for gear is fine by me.
Here is the setup I would like to achieve for my simulation goals. (1) “Realistic” control manipulation - which is mostly achieved through the nice Cougar throttle and joystick as far as physical replication (still looking for some good rudder pedals that are realistically wide enough…wish I could find some SimPeds! (any other suggestions welcome here too)
for a DCS A-10) where you could do just that, and there were ‘hotspots’ that would also bring up the other panels (left/right console etc) whose switches and buttons could also be touch controlled. It was the perfect solution for me!
(2) I currently have a triple monitor main screen setup that I have been using for FSX and Xplane. What I really would like to add is just a 21”-22” or so touchscreen monitor centered below them that I could just use for touch control of all the other buttons. I saw a video of this exact sort of setup on YouTube (I believe it was by CapLozUnfortunately, my digging through all the forum articles on touchscreens leads me to believe that such a setup is not possible in BMS. Something about not being able to use the ‘primary’ screen as an operable touch screen for the purpose I just described? I am talking about simply opening another view window and dragging it to that touchscreen monitor. Apparently you have to use some Helios/YAME method which is above my head for now. Disappointing if that is in fact the case. Are we absolutely positive that one cannot use a touchscreen as I described without the Helios etc.? I am still searching but haven’t found that solution - if it is in fact impossible then I can stop hunting… I apologize for slipping into a touchscreen setup question in this forum, but both of you are SeniorMembers and very informative, so I figured while I had your attention I would ask for advice/direction on that issue as well!
-
As Ive not used a touchscreen myself with BMS, I dont think I will be any help in this regard. Ive also not used Helios or YAME.
Within BMS it is possible to totally replicate the actual switch functions of the real F-16, for all controls of the aircraft which are simulated by BMS. That last part is an important distinction, but if the goal is to operate BMS realistically, then it doesnt matter too much.
As far as pedals go, the Saitek Pro Flight pedals are good. Ive heard good things about some of the newer offerings too, but one thing Im yet to hear about any of them is their cheapness.