Sunday, June 8, 2008

Game profile files for the Saitek X52 Pro Flight System

pencil icon, that"s clickable to start editing the post

Updated! (10. june). If you're ever uncertain that you've really understood something write a blogentry and you'll sone discover more. Since I wrote this entry I've discovered:

Blog entry

When you create a program that needs to persist data you have a couple of common possibilities like plain files or databases (which in the end are fils as well there's no escaping it's all files). If you choose to go with the file option wou have to decide how you want to organise and serialize/deserialize the data. The most common options are XML, csv, configuration fileformat (like the ones for PHP and OpenSSL) which are all plain text files, but you can always roll you're own format as either text or binary. I in general would suggest XML since I'm familiar with it and there are many tools available and schema validation can easily be added. Today I discovered a variant that falls close to XML but is a propriotary format.

The example

As the happy owner of the Saitek X52 Pro Flight System I've been (re)introduced to classic versioning problems. With the flightstick comes the SST Programming Software (SST stands for Saitek Smart Technology), that gives me:

  • Increase the number of functions you can assign to the controls on your controller through shift states and multiple modes
  • Create and save profiles for your favorite PC games, which you can load to configure your controller for that game every time you want to play it
  • Assign keyboard and mouse commands to your Saitek controller to play PC games that do not offer support for game pads and joysticks.

It's the second one that write about today. I first set out to find a configuration file that I could use for IL-2 1946 but after googling and browsing relevant forums I discovered that there was a lot of confusion and frustation due to changes in the profile file format. Here's some:

  • The X52 (normal) used a file format thats binary with the extension dat. This format can't be used with the software for the Pro version.
  • The file format for the X52 Pro is pr0, but the format contained has changed in a breaking way with the newest version of the software.
  • There even seems to be a platform binding so that profiles generated with the same version of the software can't be used on ex. both Windows XP and Vista.

These challenges are not new in software (as I started out) and analogy could be made to the challenges with rolling out OOXML:

  • The former version of document editing software in Office saved in a format with the extension doc. In contradiction to the SST software this format can still be read in the new version of the software.
  • The version of OOXML that's implemented in the current version of Office is different that the version going through ISO right now. I expect that they'll both use the extension docx

In the end the biggest problem is not the file formats them self but that the doesn't seem to be a migration path between them. The software that reads the profiles (deserialise them) can detect the specific format either from the filename and/or the content. The software team a Saitek has decided not to incorporate support for the different formats and thereby not support they're customers (both those with the X52 Pro and the ones migrating from the X52 (normal).

There has been created a conversion tool as a standalone program but I haven't had much succes with it, and I think it's because it's between the dat and the first version of the pr0 format.

The file formats

The three format mentioned above are:

  1. The binary/obscure dat format
  2. The first pr0 format
  3. The second pr0 format

I can't show the a), but here's a screendump of a profile for b):

Yuep, that's good ol XML. I've searched for a schema for the namespace http://www.saitek.com/sd5/sd but haven't found one. I wont try to analyze the format, but I notice that there is a version attribute (with what looks like binary content for '65').

I've installed the newest version of the SST software 6.0.10.17

and saved the default profile:

and the format now looks like:

and Yuep, that's almost like good ol XML. The syntax is a little different but very similar and also shares a resemblance to the format that I share name with. Also in this format there's a version attribute (now with the value '3').

It beats me to come up with an explanation of why they would create they're own format that's so close to XML, and use the time both to develop and maintain it as well as the tools for it, but my hope is that this format in fact is more common than I'm aware of.

3 comments :

Mal said...

Hi

It is in despair I turn to you for help after waiting over 4 days to become an approved new member of the Saitek Forum without success.

Coming from a TM background I am trying to undetake button programming of my X52 that I could with my TM F16 J'stick and throttle combination: like O/, I/, /T, /H, /R etc.

Mine is the simpliest requirement:
I want to be able to to achieve 3 diffent keystrokes with 3 presses of a single button.

eg. Button A pressed (and released) 3 times to achieve outcome of (say):

a (with the first press and release)

b (with the second press and release)

c (with the third press and release)

In TM terms (non pinkie mode)
toggles a, b and c:

/O/T a
/T b
/T c

There is not specific timing required: i.e. If I press once I get an a; comeback x days later and I press once I get b!

What could be simplier! But not on my X52 with .pr0 SST software.

Hope you can help

Mal

Sweetxml said...

Hi Mal

Sorry to hear you have problems getting into the Saitek Forum: I don't recall it as being any problem and very much the standard way where I had to confirm through my email.

As for your question I simply don't know, not even if it's possible at all. Personally it puzzles me what you want to use it for? What you're asking for is the button to keep state (even over days and shutdowns?). I would not expect it to be possible, and would solve it through button combination like shiftstate/mode.

You could try and have a look at the videos by UKSupport2:
Advanced Commands, Macros and Key Combinations
and Shiftstates/ Modes.

Best regards
Brian

Mal said...

Thanks

Wouldn't believe, coordinator approval give as I was writing to you.

The simply answer is that you can't. Not yet anyway.

The reason I wish to do it? Its a habit I developed through TM programming and /T's (toggles). Maybe a bad one but what you would do is:

Lock up bandit with Button A (keystroke a)

Fire missile when ready with the trigger.

View bandit by again clicking Button A (keystroke b)

View missile by yet again clicking Button A (keystroke c)

My few days scenario was purely hypothetical.

A more critical one could be:
a. chaff, bunches of with /H
b. flares.
c. warn wingman

each action at my own choice of timing not preset as is required in the X52

Anyway discussing it further here:

http://www.saitekforum.com/showthread.php?t=16222
and here at TAW forum:

http://combatsim.invisionzone.com/forums/
now I'm signed up.

Thanks again

Wombat