Jump to content
Hawkeye

Important Setup Info for BMS

Recommended Posts

Important Setup Info for BMS

 

by Wizard » Wed Sep 07, 2011 5:46 pm

 

So they do not get lost in other, more informational threads about how to actually FLY in BMS, I've created this thread for things that a new BMS user SHOULD DO while setting up their new game.

 

1) Do not use any other keyfile than the ones shipped with BMS. You will *NOT* have access to the new callbacks or functions in BMS if you do. If the keyboard layout is critical to you, then use keystrokes.key. If you want a DirectX-based key assignments where your HOTAS does exactly what the real life HOTAS does, then use BMS.key and assign BUTTONS, not a profile.

 

Profiles bring extra features, yes, but extra problems, and extra things to go wrong. You can click on the 3d cockpit for nearly anything else you may need, so KISS and just use DirectX! (I use DirectX for everything I could on my HOTAS, and it works flawlessly) Ever wonder why the x2 would pop up in AF sometimes? Someone was using a keyboard-based profile, and they activated time compression with their key combos.

 

2) YOU MUST edit your falcon bms.cfg file or you will use massive amounts of HD space when flying multiplayer that you must manually clean up. The game was released with PACKET LOGGING enabled, so the game stores a history of all the packets you send and receive in multiplayer. In 2 hours of flying, this will amount to nearly a GB - and it keeps going up.

 

In the "MP Settings" section of falcon bms.cfg, add the following two lines:

 

set g_bMessageStatistics 0

set g_bEnableRakNetPacketLogger 0

 

If you flew MP without these two lines, go into BMS\User\Logs and delete all the files in there.

 

3) If the game crashes upon startup, go into Configuration on the launch screen, and DISABLE the intro video.

 

4) BMS requires ports 2934-2937 UDP, as well as ports 9987-9989 UDP for IVC.

 

5) Download and install Weapon Delivery Planner. http://www.weapondeliveryplanner.nl/download/index.html

 

You may initially think "it's not necessary..." Well, I challenge you to install it anyway and look at what it does and then tell me it isn't important :P

 

Will add more as things as learned...

Share this post


Link to post

Hawkeye, requesting additional information about DirectX binds. I've been using my own key profile and am curious exactly what I'm missing out on.

Share this post


Link to post

Hawkeye, requesting additional information about DirectX binds. I've been using my own key profile and am curious exactly what I'm missing out on.

 

Depends on how you made the key profile. The operation of the DMS and TMS buttons in particular are very dependent on what MODE you are in (NAV, MRM, CCRP, etc) and so at a minimum you want to bind the button to the *TMS UP* function for example and not to what TMS UP does in one particular mode (like lock A2A target) causing you to lose functionality in a different MODE. Now assuming you haven't done that and have bound the TMS UP button on your joystick to the corresponding key stroke (e.g CNTL ARROW UP) you are mostly there. However, in addition to TMS UP being MODE dependent there will often be different types of presses for each of the buttons. Some buttons have a different function whether you press and release within 0.5 seconds or whether you hold it longer or whether it’s a quick double tap. A really good stick program can often take all of these into account but most can’t. A DirectX button press on the other hand can handle this type of variety more easily and works much better than a keystroke (I won’t get into the complexities of what is really happening when a key is “held” by your joystick). For example you can send multiple simultaneous button “holds” using a DirectX button that you can’t with keystrokes. And, as Hawkeye mentioned sending keystrokes can sometimes cause unintended consequences when multiple buttons are pushed simultaneously which are interpreted by the game as a completely different keystroke. Finally, the BMS developers have stated that as they add more functionality to the game the MODE dependent keys will gain additional functionality so by binding to DirectX buttons now, you will future-proof yourself to these additions.

 

Well that turned out to be a very long answer as to why using the key file to define the DirectX button handles a particular function is better. The trick is to figure out how your stick maps DirectX buttons and to modify the key file. If you want help on that PM me or poke me on TS.

Share this post


Link to post

Hawkeye, requesting additional information about DirectX binds. I've been using my own key profile and am curious exactly what I'm missing out on.

 

I have been working on expanding the keystrokes.key to include HOTAS functions without bloting to bms.key size.

 

I will post my key file in the near future until then you can DL it at the SWAMP file browser (right click SWAMP in ts).

Share this post


Link to post

So how do you set up this directx stuff? I haven' been able to find any explanations of it.

Share this post


Link to post

This ia my best guess..

 

In the ...\Falcon BMS 4.32\Docs\Falcon BMS Manuals folder there is a Keyfile-generator.xls file. There is a Callback Reference tab that has the command names you want to use. Edit the .key file you are using in the BMS settings if the command you need is missing. The format is commandName -1 0 0XFFFFFFFF 0 0 0 1 "command notation". The (-1 0 0XFFFFFFFF 0 0 0 1) part sets the caommand to "No key Assigned". You then can restart BMS goto settings and assign keys or push buttons on your controllers. Example:

 

SimTriggerFirstDetent -1 0 0XFFFFFFFF 0 0 0 1 "Trigger 1st Dentent"

 

 

If you are setting up a HOTAS the ...\Falcon BMS 4.32\Docs\Falcon BMS Manuals folder the BMS-Manual.pdf pages 29-33.

 

My current efforts can be download from my TS SWAMP file browser.

Share this post


Link to post

So how do you set up this directx stuff? I haven' been able to find any explanations of it.

 

What Hawkeye is describing is how you set up the .key file to assign keystrokes and add new functions (which of course can then be used by your joystick to send commands) but it is not how you set up DirectX buttons for your joystick.

 

The simplest way to do this is to do it in the Controllers setup screen. However, you must first make sure that for each button; your stick is not sending a keystroke but is sending a button push. Every stick is a little different but hopefully, you will be able to figure that out. Usually it means just loading a default profile or it’s sometimes called running it in Windows native mode or non-emulated mode.

 

Now go into the game and first load the BMS.key file. Then going down the list find a function that you want to assign to a button. In particular, you want to assign the functions that begin with “HOTAS-“ (especially, the TMS, DMS and CMS functions). All you do is click in the left column so the text turns blue and then move or press the corresponding button on your stick or throttle. Now you will notice that between the Advanced and Cancel buttons on the right hand side below the key assignment list is a space. If you press a button on your joystick it will tell you which Button Number the game sees it as and it’s function. It will say something like INPUT Button 2 or INPUT POV 1: Up. Below that it will now tell you which function you just programmed for the button such as HOTAS-DMS Left. Remember, we are just assigning the button presses this way not the axis assignments which are done on the Advanced page.

 

This is the easy way to do this. You can also do all of this by editing the .key file directly with a text editor such as Notepad++. If you do it that way, you also have the ability to add what’s called a Shifted layer. A Shifted layer is when you hold one button as a “shift” function and that allows you to assign a second function to each button. A description of all of that and more about how to edit key files directly to add DirectX buttons is found here: (http://www.benchmarksims.org/forum/content.php?153-DirectX-Shifting-Facility)

Share this post


Link to post

Thanks Morphine, that guide helped a lot!

I've managed to get my stick set up with the same functionality that I had using the saitek profile software using only native callbacks and DX shifting (Plus I cleaned up my keyfile a bit).

Share this post


Link to post

Great!! Making them DX keys will help a lot as the BMS developers add additional functionality to the HOTAS. As Hawkeye said, make sure you look at the manual to learn all the functionality of the DMS, TMS, CMS, etc. Also, there are some functions that aren't listed there like HOLD DMS down turns the HMCS on and off assuming you've first turned up the brightness.

Share this post


Link to post

That link was extremely useful morphine, much appreciated!

 

Setting up the DX buttons is so much less annoying than mucking about with the silly saitek software, so it's just a nice bonus that the BMS guys are going to keep adding functionality for them.

Share this post


Link to post

Great post and link Morphine!

 

BMS DirectX HOTAS is new to me. I am still porting over my AF profiles so all my comments are very much a work-in-progress and best guess at this point. All systems have limitations and advantages therefore the balancing and leveraging those technologies is the very art of UI. I have a Saitek X52 HOTAS so my thoughts are predicated on that platform. If I owned a Thrustmaster HOTAS Cougar which an exact replica of the flight controls on the F-16 I would depend exclusively on DirectX since every input button/slide/hat that BMS has coded for is also simulated on the stick and throttle quadrants. It must be also noted as awesome as the TM HOTAS Cougar is; Thrustmaster software is not nearly as powerful as Saitek. I own two Thrustmaster Cougar MFDs and use only DirectX with them. I have included my current HOTAS graphic to hopefully illustrate my points.

 

HawkeyesHOTASsmall.jpg

 

The first limitation we must take into account is the fact we are not sitting in a real F-16 cockpit. We do not have the freedom of vision a real pilot does even with TrackIR nor the freedom and speed to simply push a button. The designers of the actual F-16 cockpit knew that careful placement of controls beyond the stick and throttle quadrants would be readily accessible to the pilot even without looking. Two examples would be the “Slap Switch” and “Ejection Handle”. So even with an exact emulation HOTAS Cougar if you need to quickly eject you cannot simply grab a handle between your thighs. No wonder there is a cottage industry for enthusiast to build their own cockpits.

 

The second limitation is specific to my Saitek X52 HOTAS but also virtually every other joystick on the market is that the real F-16 stick has four hats (4 or 8 way directional inputs) and the throttle has two hats. The X52 stick has only two hats and the throttle has two hats only if you convert the built-in mouse to a hat.

 

The primary advantage we gamers have over real F-16 pilots is the use of “shift states” effectively doubling the ability of our input devices. In the case of the X52 you can have not just two “shift states” but eight!

 

The secondary advantage we gamers have is the ability to combine more than command in a single button. For example besides dropping the landing gear you can simultaneously drop a landing hook and turn on ILS all with a single button hit. Or instead of simply switching from NAV mode to A-A mode you could also set the Master Arm to “armed”.

 

DirectX bindings:

Relying only on DirectX input has its limitations. By mapping commands directly to buttons in the .key file you overwrite the predefined keyboard combinations. For example if you are going down in flames (common theme for Hawkeye :) ) and forgot what button you mapped Eject to… even if your buddies are screaming “Control-E, Control-E”, it will do you no good. Obviously you are limited to only two “shift states” and mapping the alternative state is not simple task either. And again you are limited to a single command per button push. You are also limited to BMS commands... I use TeamSpeak and VAC hotkeys in my profile.

 

The advantage to using DirectX is absolutely GREAT! It is very fast and very simple to setup. It should also be faster than adding a Saitek interpolation layer although I have found the speed difference to be imperceptible.

 

Speed:

I have preformed no benchmark tests but here are my current thoughts. The .key file acts as a lookup table regardless if you use DirectX or the keyboard. The smaller a lookup table is the better. The original keystrokes.key (27,943 bytes) is smaller than the BMS.key (42,939 bytes).

 

 

In my current version (HawkeyeHOTAS.key 25,475 bytes) I deleted double entries and added the missing HOTAS commands to the top of the file for speed. That file is attached to this post as a WIP zip file and if you are a Regular in my TS Barracks/SWAMP file browser you can also get the full size jpg.

HawkeyesHOTAS.zip

Share this post


Link to post

Damn I wish I had that many buttons to go 'round.

 

By mapping commands directly to buttons in the .key file you overwrite the predefined keyboard combinations. For example if you are going down in flames (common theme for Hawkeye :) ) and forgot what button you mapped Eject to… even if your buddies are screaming “Control-E, Control-E”, it will do you no good.

You can add the same command to the key file as many times as you want with different keyboard/joystick button combos. You don't have to replace keyboard bindings with joystick bindings, just have both!

 

And again you are limited to a single command per button push.

I haven't tested it, but I wonder if you can assign the same button to multiple commands in the key file. Hmm, testy.

 

You are also limited to BMS commands... I use TeamSpeak and VAC hotkeys in my profile.

I use DirectX for game commands and saitek profile stuff for PTT :)

 

 

My key file is about 27kB, but it's basically the standard keystrokes.key with more joystick buttons added.

Share this post


Link to post

You can add the same command to the key file as many times as you want with different keyboard/joystick button combos. You don't have to replace keyboard bindings with joystick bindings, just have both!

 

 

I haven't tested it, but I wonder if you can assign the same button to multiple commands in the key file. Hmm, testy.

 

 

I use DirectX for game commands and saitek profile stuff for PTT :)

 

 

Great input VKing!

 

I never thought to double enter commands!

 

Maybe if you used a text editor you could bind multiple commands to a button.

 

I also use Saitek to convert the mouse to a hat and use the slide (dead zones are very important).

Share this post


Link to post

Seems the game will only recognize one command per button per shiftstate, unfortunatly :(

Share this post


Link to post

Application Error on Saitek X45 .key file -- and workaround.

 

I am configuring a Saitek X45 HOTAS (thank you Hawkeye for the assist) and got a Falcon BMS 4.32 application error (crash) when trying to Load the "X45-Keyboard BMS.key" file from the .\User\Joystick\Saitek directory (after copying it to the .\User\Config directory). The symptom of the crash is that the cursor goes to "hourglass" icon (pilot in parachute), then after 10 seconds or so BMS crashes to desktop.

 

Through mind-numbing trial-and-error, I've isolated two lines that cause this problem:

Line 386: SimStepHSIMode 	1006 0 0X56 0 0 0 1 	"HSI-Modes toggle"
Line 562: CycleEngine 	-1 0 0X56 4 0 0 1 	"Ctrls-Cycle Engine"

Hex 0x56 is common between the two, it maps to the "Right Shift" key, and there are no other 0x56's in the file. Is anybody aware with an issue mapping to the Right Shift key?

 

Also, note that I disabled these by inserting a hash "#" in the first column of each line. The lines were evidently ignored on Load and also omitted from Save, in subsequent version of the file. Is this undocumented behavior reliable, or am I making too many assumptions:

#These lines won't be Loaded or Saved.
#SimStepHSIMode 	1006 0 0X56 0 0 0 1 	"HSI-Modes toggle"
#CycleEngine 	-1 0 0X56 4 0 0 1 	"Ctrls-Cycle Engine"

 

Last, when I mapped behavior of my HOTAS hats, Saved, then again Loaded the .key file, the hat mapping were not retained. I'll probably have to hunt another thread to see what I missed, but thanks in advance if you can direct me.

Share this post


Link to post

I had some trouble with the hat as well. I think my shift-state hat commands weren't saved, but after the initial non-shifted bindings I mostly just edited my key file and it didn't happen again.

 

I think the game might not like that you bind the shift (or ctrl/alt) key, either.

 

(Not sure if it was a question or not, but the hex code (0X56 in that case) is the keyboard key mapping as far as I can tell (I switched the hexes of two entries and their keybinds were indeed switched).

 

E: Putting a hash in front of the line is used for commenting in BMS.key, so it seems like an intended behaviour.

Share this post


Link to post

For all you HOTAS Cougar users, you can use Dunc's profile and key file that comes with the sim in C:\Falcon BMS 4.32\User\Joystick.

 

 

Force

Share this post


Link to post

HackSAW,

 

I agree with VKing.... the problem is that using the Shift key as a functional keypress will cause a problem since keys such as Control, Alt and Shift are used as modifiers for other key presses. They Keyfile I use (a modified version of Dunc_DX.key) doesn't use the shift key as a fucntional key but only as a modifier.

 

You can do a couple of things to fix the problem.

1.) Just rem them out using the "#" character as you have done

2.) Assign them to a dummey key like this... SimStepHSIMode 1006 0 0XFFFFFFFF 0 0 0 1 "HSI-Toggle Mode Knob"

3.) Assign them to a different key stroke. Use the Keyfile-generator.xls file in the Falcon BMS Manuals directory to find a key code. Make sure no other keys are using the same keystroke.

Share this post


Link to post

Some great info on here but I have one problem that is really bugging me. . .

 

I have an X52 and am trying to get the stick Mode wheel to switch Nav/A-A/A-G as on your diagram.

 

When I set the ICP Nav/A-A/A-G commands to use the wheel however, because the PBs act as toggle switches. . .

 

When I switch from Nav (wheel green led) to A-A (wheel orange led) and then back to Nav, then back to A-A, this leaves me in Nav mode due to second PB press of A-A being detected.

 

Do you know how to workaround this, so that each wheel switch will simply set the Mastermode without this problem.

 

Many thanks, ts

Share this post


Link to post

It's a little convoluted as a quickfix because the way the mode wheel works and the way the ICP mastermodes work are completely different, but here's what you do: (for the purposes of this, MODE1 is NAV, MODE2 is A/A, MODE3 is A/G)

 

leave MODE1 shift command blank

set MODE2 shift command to advanced command: On Press, NUM+ PRESS, NUM+ RELEASE (assuming NUM+ is your A/A button). On Release, NUM+ PRESS, NUM+ RELEASE. [this will force your ICP to reset to NAV every time A/A is turned off)

set MODE3 shift command to advanced command: On Press, NUM- PRESS, NUM- RELEASE (assuming NUM- is your A/G button). On Release, leave blank.

 

The logic here is a little silly, but essentially you're relying on the heavy lifting of MODE2's advanced command to handle swapping back and forth through the master modes.

Share this post


Link to post
Guest
This topic is now closed to further replies.

×
×
  • Create New...