KEMBAR78
FSUIPC History | PDF
0% found this document useful (0 votes)
240 views78 pages

FSUIPC History

This JSON summarizes the history and updates of the FSUIPC software. The document outlines 10 different versions of FSUIPC from 2013, describing fixes and improvements to issues like possible crashes, control mapping errors, and Lua programming capabilities. New features were also added across the versions.

Uploaded by

Jordi DM
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
240 views78 pages

FSUIPC History

This JSON summarizes the history and updates of the FSUIPC software. The document outlines 10 different versions of FSUIPC from 2013, describing fixes and improvements to issues like possible crashes, control mapping errors, and Lua programming capabilities. New features were also added across the versions.

Uploaded by

Jordi DM
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 78

History of FSUIPC

Version 3.999z8 (September 2013)

1 Fixes a possible FS freeze when changing aircraft if an [Auto] section invokes a Lua plug-in. This problem was introduced
by an omission in change #2 in version 3.999z5.

Version 3.999z6 (August 2013)

1 Includes a correction to the cowl flap axis mapping for 3 and 4 engined aircraft.

Version 3.999z5 (August 2013)


1 Added new controls to operate the Throttle Sync option, previously only available by Hot Key assignment:
Throttle sync on 1141
Throttle sync off 1140
Throttle sync toggle 1142
2 Fixed a rare but still possible crash within the Lua kill/reload sequence when a plug-in is repetitively executed
instead of using the Event system or loop.
3 Fixed the Throttle Sync option so that it works correctly in "No Reverse Zone' modes (NRZ).
4 Made the use of an assigned reverser axis cancel Throttle Sync mode. Before this the throttle sync action made
the reverser axes operate as normal forward thrust throttle axes.
Version 3.999z4 (June 2013)
1 The Lua function ipc.display now includes an optional colour parameter, with the ability to select red or white.
2 The added Traffic Density Toggle control now toggles between zero traffic and the previous value if the
provided parameter is set to zero.
Version 3.999z2 (May 2013)
1 Removal of SimFlight digital signature and the signature checking following hacking by folks distributing
signed virus-infected programs -- none from SimFlight. All FSUIPC users will need to update because when
GlobalSign revoke the signature previous versions of FSUIPC will cease functioning.
Version 3.999z1 (April 2013)
1 Additional keys found on some keyboards are now recognised for keyboard assignments:
225 'AX' key on Japanese AX keyboard
226 "<>" or "\|" on RT 102-key keyboard
227 Help key on ICO
228 00 key on ICO
Version 3.999z (February 2013)
Additional facilities
1 A new Lua library, 'mouse', has been added. This provides ways of moving the mouse pointer and clicking its
buttons, and even turning its wheels. It is documented in the update Lua documentation package available
separately. This addition also applies to FSUIPC3, but not to WideClient.
2 A new FSUIPC control is provided:
1130 Mousebutton swap
This, when executed, makes the next Left Mouse Button press and release operate as a Right mouse button press
and release. This is a one-off action, only applying to the next left mouse button action.
This is primarily aimed at users of toch screens with aircraft panels like those from PMDG where the left button
decreases a setting and the right one increases it. Touch screen 'touches' are usually only left mouse clicks.
3 There's now a built-in facility for tracing the operation of Lua plug-ins, both with line numbers within the files
and with changing local and global variables being logged. This effectively makes the "LuaDebug" control
redundant, but it has been left in just in case folks would rather use their own souped-up version of the
ipcDebug.lua plug-in.
The debug/trace mode is enabled and disabled in the Logging tab. The tracing and variable records go to either
individual Lua logs or the main FSUIPC log, depending on the Lua log files option chosen (also in the Logging
tab). So that log lines can be differentiated when more than one Lua plug-in is running, the first few characters
or each line are "LUA.n" where n is an arbitrary ID number (0-255).
The state of the option is recorded in the FSUIPC.INI file as DebugLua=Yes or No.
4 Added new Lua function lua.setowndisplay, which enables the ipc.linedisplay and ipc.display functions to
have their own private Window entitled, positioned and sized as needed. Full details are provided in the updated
Lua plug-ins documentation published separately.
5 The Lua gfd library is improved for the GoFlight RP48 "mouse edition", which appears to have a firmware error
which prevents the indicator status being read. FSUIPC compensates for this by remembering the settings made
by itself.
6 An additional Lua gfd library function, gfd.ReadLights, is added which returns the current indicator settings
for those GoFlight modules which support it. [Note that this value is whatever is returned by the module itself,
so units with faulty implementations of the indicator reading function -- some LGT2's and the "mouse edition"
of the RP48 -- will only return zero.
7 The Lua event library is extended with the addition of the event.Lvar function. This allows a named local gauge
variable ("L:Var") to be monitored at regular intervals (minimum 100 mSecs) and a given function called when
the value is found to have changed.
Full details are included in the updated Lua documentation, released already.
8 The facility to 'blend' FSUIPC's steering tiller control into rudder control as speed whilst on the ground
increases has been improved for airliners with a set of facilities to restrict the rudder effect in different
groundspeed ranges.
The simplest of these facilities keeps the rudder at 10% of its input until half way to the full threshold speed,
then increase linearly to 100% This is intended to make reasonably easy to check the rudder pedals whilst
taxiing without causing bad swerves, and also allows some use of rudder even at very slow speeds at the end of
the landing ground roll. The value of 10% minimum comes from the 737NG where at taxi speeds the rudder
deflection is a maximum of 7 degrees compared with 67 degrees fully.
To make FSUIPC do this blending instead of the normal 0-100% linear method simply change the
MaxSteerSpeed parameter in the relevant [JoystickCalibration] section of the INI file to a negative value, eg -
60 for the default 60 knot threshold.
A more complex specification can be provided which allows the user even more scope. The MaxSteerSpeed
parameter can be given as
MaxSteerSpeed = Qn1,n2,n3,n4
where n1 to n4 are numbers used as follows:
• If n1 is not zero, then rudder effect is 0% (ie eliminated) until a groundspeed of n1 knots. Then the effect
rises linearly from 0% at n1 knots to 10% at n2 knots.
• If n1 is zero, then rudder effect is 10% until the groundspeed reaches n2 knots. n2 is not allowed to be zero.
• If n3 is not zero, then rudder effect rises linearly from 10% at n2 knots to 30% at n3 knots, then linearly
again from 30% at n3 knots to 100% at n4 knots.
• If n3 is zero, then rudder effect rises linearly from 10% at n2 knots to 100% at n4 knots. n4 is not allowed to
be zero.
Note that apart from the option for n1 and n3 to be zero, n4 > n3 > n2 > n1. You should see that the option:
MaxSteerSpeed=-60
is in fact the same as specifying
MaxSteerSpeed=Q0,30,0,60
There is one shortcut. MaxSteerSpeed=Q is the same as specifying
MaxSteerSpeed=Q10,20,30,60
Note that both tiller and rudder need to be assigned in FSUIPC by the "direct to FSUIPC calibration" method,
and both be properly calibrated, for any blending to be active in any case.
Improvement
1 Local joystick buttons used only for conditional testing and not assigned explicitly as well were originally not
scanned and therefore the conditions were inoperative. This is now changed-- such joysticks are now included
in the regular scan.

Bug Fixes
1 An error in the ipc.exit function, which could in some circumstances cause subsequent Lua executions to hang
FS, has been fixed. This applies also to FSUIPC and WideClient.
2 The FSUIPC options assignment and calibration tabs could be fooled into making a Profile assignment to a
Profile with no name, if the INI file had somehow been corrupted and ended up with a [Profile.] section and
accompanying [Axes.] etc sections. To avoid the latter corruption in future, such bad sections are deleted
automatically when FS is started.
3 An error which can cause spurious generation of phantom Profile assignments, and unwanted additional sections
in the INI file such as [Buttons.] and [Keys.], has been found and fixed.
4 Errors in the Calibration "sync pos" facility could result is poor alignment despite the positions synchronised,
and when using the "No reverse zone" option could produce entirely the wrong range.
Note that, as part of the fix, the reverse range part of the axis, if any, is not subject to synchronised positioning,
and any positions defined there are discarded.
Users already with Sync Pos usage may wish to re-do this with this version for better accuracy.
5 Fixed an error which could cause FS to hang when any [Axes ] assignments section in the INI file includes a
scaling entry in an incorrect format.
6 Avoided changing the main Windows DLL search path so that RealityXP addons do not fail to find a needed
DLL. The Lua DLLs can still be found when needed because the Modules\DLL path is now added to the
'PATH' environment variable.
7 Fixed a problem with the LVar macro format "L:<name>=DEC,0", to decrement the named L:Var value down
to 0. The "0" was taken as omission and so did not limit the decrementing process.
8 Fixed an error in the Lua event.key function. This caused it to fail to act upon any subsequent shifted keys
(Ctrl, Shift, or Alt plus a keypress) after the first such event. It was recording the key down but not the key up,
so did not see any more key downs.
9 Fixed an error which could cause some Lua plug-ins to crash FS when being repeatedly killed and restarted (as
in the case of assignment to a rotary encoder).
10 The Lua sound.playloop function now works, correctly looping, even when the option is set for not playing
when FS doesn't have the focus (i.e with a negative volume value).
11 A newly introduced bug causing L:VAR SET macros to fail when called with parameter = 0 is fixed.
12 The Lua function ipc.setdisplay now succeeds in not only setting the size and position of an existing Lua
Display window, but also of presetting those parameters for one about to be created.
13 A problem with accessing the KEY file of registered users when FS is being run in Windows 7 or Windows
Vista without being set to run in XP Compatibility mode is fixed.
Note that in Windows 7 or Vista modes the FSUIPC INI, KEY and LOG files are placed in and used from the
Flight Simulator Files folder in your "Documents" folder. This is to avoid write permission problems. It is best,
though, to run FS in XP compatibility Mode, for many other reasons too.
14 Any Lua control type other than the basic Lua <name> control (to load and execute the named lua plug-in)
assigned to Axis ranges on the right-hand side of the Axis assignments tab reverted to that basic Lua function,
because in error they were saved incorrectly. This long-standing error is now fixed.
15 The use of LuaValue controls to set the ipcPARAM value for a currently running Lua plug-in was actually
changing that parameter on the plug-in's stack immediately. This could very occasionally cause a crash,
depending where in the Lua interpreter the plug-in was currently engaged.
To remove this cause of crashes, FSUIPC now only changes the parameter when either an ipc.sleep function is
being executed, or any event function is actioned to call its target function.
Note that the ipcPARAM variable should never be used by the plug-in for its own values as it is liable to be
changed in both of the above circumstances even without the use of the LuaValue control.
16 FSUIPC3 had a built-in expiry date of 31st December 2012, so registrations later that that looked wrong. Seems
that I never expected it to be still being purchased after all of 8 years! Fixed in version 3.999y5.
Version 3.999 (February 2012)
Additional Facilities
1 The Lua serial port library, com, has been expanded to include special support for joystick HID devices.The
data being read using the usual com.read (or a new com.readlast) function can be analysed to extract joystick
axis or other analogue values and button or switch states. The capabilities offered far exceed those of the
standard joystick interface supported in FSUIPC. Up to 16 axes of each of 12 different types, and up to 256
buttons or switches, can be read. The revised Lua package should be downloaded for full information, included
an example plug-in (HidDemo.lua).
2. The Lua File System library (lfs), by the "Kepler Project" is now built into FSUIPC. Reference information is
provided within the latest Lua plug-ins package.
3. A new Lua event is available: event.terminate, to do up to 5 mSecs of processing before FSUIPC forcibly
terminates the Lua thread.
4. Full support for the GoFlight GF-WP-6 modules is included. The Lua gfd library is extended with new
indicator colour setting facilities.
5. The Profile facilities in FSUIPC are extended by allowing a new Profile to be created based on an existing one.
When the Profile drop-down is selected for an as-yet unassigned aircraft, the option "New, based on ..." leads to
another selection where the Profile to be copied can be selected, before the new name is chosen.
6. A new Lua function is provided to test button flag states:
ipc.testbuttonflag( joynum, btn )
This operates exactly like the testbutton function but tests the button flag state instead the button itself. Note
that there are no flags associated with the POV setting, so the button number is in the range 0 - 31 only.
7. In order to encourage new or developing FSUIPC users to switch to Profiles for assignments, instead of the
older aircraft-specific arrangement, the INI settings for UseProfiles and ShortAircraftNameOk are
automatically changed to Yes and Substring respectively if upon loading FSUIPC detects no existing use of the
aircraft specific facilities.
8 GoFlight devices are now re-scanned for new connections whenever the "reload" button is pressed in the
FSUIPC Buttons & Switches options. Note that there is a small possibility that this could crash any running Lua
plug-in which is currently accessing GF devices through the Lua gfd library, but this risk has been kept as small
as possible.
9. The new VRInsight Boeing and Airbus style MCP combi modules are now recognised and supported, like the
original MCP-combi. The names are MCP2B and MCP2A, respectively.
10 A new function is provided in the Lua ipc library, to read assigned joystick axis values, as read from the device
(not after calibration). This function is:
val = ipc.axis(joy#, axis)
where joy# is the Joystick number (or "letter" when joystick letters are in use), and axis is one of "X", "Y", "Z",
"R", "U", "V",. These values are as shown in the axis assignment option screen.
11. The GoFlight “DIO” (Digital Input-Output) device is now supported, both in the recognition of its buttons and
switches (up to 56) for assignment, and in the handling in the Lua gfd library, where it’s 32 outputs can also be
switched.
12. A new Lua library called ext is added (also in WideClient 6.899h) which loads, handles and closes external
programs and, to some extent, program windows such any those undocked from FS. The latest Lua plug-ins
package includes full documentation. THe 'ext' library was then extended with shell, keys and message posting
functions. This also applies to WideClient 6.899j and later.
13. Additional offsets are now provided to allow applications to get weather data relevant to the user aircraft's
current altitude. These are basically an extension to the provisions for populating the old FS98 weather values
and are the same as those added to FSUIPC4 some time ago..
The new values provided are:
0E84 1 byte Cloud type, 1–10, if the aircraft is in a cloud layer. Otherwise 0
0E85 1 byte Cloud coverage, 0–8 "Oktas" or eighths of the sky.
0E86 2 bytes Cloud icing level 0–4
0E88 2 bytes Cloud turbulence level, 0–255 (as for older offsets 0EFC etc).
0E94 2 bytes Wind gusting value (max speed in knots, or 0 if no gusts)
0E96 2 bytes Wind directional variation—degrees in the same units as wind directions
0E98 2 bytes Wind turbulence value, 0–255, just like offset 0ED2, etc.

Bugs Fixed
1. Some of the user registration checks have been modified in order to get around some recent security changes in
Windows.
2. An extraordinarily long delay between sending the KEYDOWNs and KEYUPs for a button press programmed
to send keypresses has been eliminated. That delay could previously range from 100 mSecs to over 8 seconds!!
This fix ensures it is always within about 150-200 mSecs, and generally nearer 80.
3. The joystick polling for the Axis and Button recognition in the assignment tabs is now restricted to those
devices which have correct DirectInput entries in the registry. This is the case even though DirectInput isn't
actually used in FSUIPC3 (only FSUIPC4). This follows a problem report where FSUIPC was causing FS
hangs on a system where some old forgotten driver was apparently trying to respond when interrogated by the
previous FSUIPC3 global scanning technique.
4. The Lua facilities for loading and running external modules have been improved and should now allow C DLL
modules as well as Lua modules to run okay, if they are designed to run on the standard Lua interpreter. These
fixes do need more extensive testing, but it seems the main cause of problems, the alignment of members of
structures, was the culprit: All FS structures are single-byte aligned (i.e. no alignment), so FSUIPC had to be so
arranged to interface to it correctly, whereas the default C alignment to by member size, up to 64-bit or 8 bytes
max. FSUIPC now arranges for the Lua structures to be so aligned so that they match the assumption in the
external modules.
5. Fixed offsets 332E–3336, and 3412, 3416, 3418 to provide the axis values is the correct range, calibrated if so
subjected. For clarification, for throttles the correct range is 0-16k for forward thrust, with negative values
providing reverse. These values are then suitable for application directly to the FS control offsets, as
documented.
These offsets have been wrong for a long time, often providing the incorrect range (-16k to +16k). Therefore, in
case this bug fix messes up any programs which have assumed the offsets were behaving correctly, and made
their own "fix" already, a parameter in the [General] section of the FSUIPC.INI file is available to force these
back to their old (wrong) behaviour: just set "AxesWrongRange=Yes.
6. The Lua com library function gethidvalues now gives proper values for some non-standard implementations,
such as the dials on GoFlight devices.
7. The "slopes" option in FSUIPC's joystick calibration facilities now also apply correctly to brakes. Previously
the slopes could be assigned but were ignored.
8. An odd error in the Joystick Calibration pages is corrected which could make the NRZ (No Reverse Zone)
option selection in the pages which feature this affect other pages in this tab. This would have been noticeable
only when setting (or resetting and setting) one of those others immediately after selecting the NRZ option
elsewhere. The centre selection would disappear. If the dialogue was closed and reopened in-between these
actions no problems would have been observed.
9. The use of [ and ] characters in Profile names has always been disallowed (they are replaced by ( and )
respectively), but if the 'new profile' entry contained only [ and ] characters an invalid null profile section would
have been produced. This is now fixed.
10. Section names in the FSUIPC.INI file which are incomplete -- not featuring [ ... ], or invalid for Windows --
having multiple or missing [ or ] characters -- are now automatically fixed, normally be deleting the offending
line altogether.
11. When a Lua plug-in thread is forcibly terminated, the correct tidy-up procedures actions in the interpreter are
now correctly executed.
12. Problems caused by macro files of greater than 32 kb are fixed.
13. FSUIPC now no longer makes auto-assignments for PFCHID quadrant axes if the main PFC driver (PFC.DLL)
is also loaded.
14. Two problems are fixed which caused incorrect output values to be provided for non-linear slopes in the
negative parts of the axis range.
15. The mouse macro making facility has been made more crash-proof in circumstances where a delay in updating
files on disk allows the macro naming window to remain on screen after closing the making session.
16. An error in the filtering option (in the joystick calibrations options) could have resulted in occasional spurious
incorrect values creeping through any filtered axis assigned in FSUIPC as "direct to FSUIPC calibration". This
is corrected.
17. Fixed a problem with Lua plug-in names beginning with 'Set', "Clear', 'Toggle', 'Kill', 'Debug' or 'Value' where,
for example, the macro "Lua SetADF" would have been incorrectly treated as "LuaSet ADF" and therefore not
actually run the one called "SetADF" but set a flag for a running one called "ADF" instead.
A space between the Lua and Set (or whatever) is still accepted if present, however, as in, for example "Lua Set
ADF" to set a flag for a plug-in actually named "ADF".
18. Fixed the new "wind turbulence at aircraft" offset to give the correct maximum 255, not 256.

Other improvements
1. Axis values written to the erstwhile "PFC axis" offsets, 3BA8 - 3BC4, are now automatically ranged if RAW
mode is not selected and the axis has not yet been assigned. This makes those offsets much more suitable to use
by additional hardware which is not recognised by Windows as a joystick type, or (especially) to using any sort
of joystick axes from a WideClient application or Lua plug-in.
2. DLLs which are used by Lua plug-ins can be placed in a sub-folder in the Modules folder called DLL.
Previously they had to be placed in the main FS folder, or in windows or Windows System folders.

3. The FSUIPC logging options can now be read and set via offset 3400 (16-bit word).
4. Combat Flight Simulators 1 and 2 are now supported more fully, with joystick calibration possible if "direct to
FSUIPC" assignment is used.

5. The process of killing and restarting Lua plug-in threads has been a little more foolproof, avoiding some other
possible reasons for subsequent deadlocks at the cost of a little extra delay executing the reload.

6. Reading local gauge variables L:Vars) in Lua plug-ins has been made a lot more efficient by calling the
appropriate FS functions directly in the Lua thread, rather than queuing the requests in the FS main thread.
Originally the latter method was chosen on the assumption that the said functions were not programmed for re-
entrant use, but recent testing seems to show that they are amenable to this treatment.
7. The GoFlight display facilities in the Lua gfd library has been changed to use standard string functions to write
any digital displays, rather than the LED/LCD segment-setting functions. This is to get over a problem where
the older firmware in some (and particularly the MCP, not the Pro) displays '0' for the correct segments for a '9'
using the lower horizontal segment. (Apparently a simpler 9 using only 5 segments would have worked). This
change has been tested on several display devices, but not all.

Version 3.99 (April 2011)


• Facilities are added to allow two FSUIPC-assigned reverser axes (1 and 2) to be mapped 1->12, 2->3 for three-
engined aircraft and 1->12, 2->34 for 4 engined aircraft.
• Support for the SquawkBox 3 transponder mode and identify actions has been added via four new assignable
controls to operate the 7B91 and 7B93 offsets read by SB3.
Xpndr stby (sb3)
Xpndr on/mode c (sb3)
Xpndr toggle (sb3)
Xpndr ident (sb3)
• Sound playing facilities have been added to FSUIPC, accessible through both FSUIPC offsets and, more
completely, via a new sound library for Lua plug-ins. The facilities are identically implemented in the new Lua
facilities added to WideClient (version 6.81). Multiple sound devices are catered for, as is sound positioning
and, in Lua, volume control and live adjustment.
For details of the Lua facilities please see the latest Lua library documentation. For the FSUIPC offset interface
for sounds, pending updates to the SDK please see this text document:
http://fsuipc.simflight.com/beta/FSUIPC_Sound_via_Offsets.txt
• Support for the new VRInsight GPS-5 device has been added.
• VRI devices being handled through FSUIPC now each have their own independent Comms thread. This
improves performance and removes potential problems with resource clashes which can lead to the incomplete
termination of FS at the end of the session.
• The Buttons & Switches assignments for the VRInsight M-Panel are now correct. Note that the little joystick
selector is not programmable—that changes the operation of the other buttons and the knob and this is handled
internally to the device.
• The radio function buttons of the VRInsight M-Panel and MCP-Combi are now recognised by FSUIPC's buttons
& switches tab, but this is provided primarily as a way of intercepting and therefore inhibiting some of the
actions -- for instance when a separate radio stack is in use. It is still recommended that the VRInsight's radio
handling be left mostly intact.
• The Lua com library facilities are enhanced by adding options to the com.read function for reading until a
specified terminating character is seen, rather than a fixed sized block or a block between two limits. The limits
can still also be applied, overriding the wait for the terminator, but the lower one can be set to -1 to indicate no
minimum size so that the data is only returned when a terminator is seen or the maximum size is reached.
• COM ports opened by a Lua plug-in are now automatically closed if the Lua thread is Killed or terminated
forcibly with an error. Previously on such events the COM port remained opened and inaccessible for the
remainder of the session.
• A bug in the Lua ipc.get function is fixed. Previously multiple uses of this function could cause a stack overflow
error and subsequent FS crash.
• If a program, which is being started by virtue of [Programs] parameters in the FSUIPC INI file, cannot be found
for any reason, FSUIPC now simply "beeps" and logs the error. Previously it would have brought up a Message
Box and waited for an answer. Unfortunately the message box often couldn't be seen in FS full screen modes,
and it appeared as if FS had hung awaiting an Enter or ESCape keypress.
• The size and position of each open FSUIPC display window (eg. for Radar Contact or the Lua display) is now
saved in the FSUIPC INI file whenever the window is re-sized, moved or closed. Previously these details were
only saved when the window was closed by FSUIPC (i.e. by Lua or the application or the "AdvDisplay" hotkey)
or its state was changed (i.e. docked or undocked).
• Spaces or other non-printable characters are now removed from the ends of Joystick names when the
[JoyNames] section in the INI file is updated. This may fix some recognition problems with certain CH devices
which seem to have spaces at the ends of their registry names.
• The axis scaling facilities have been made a little more flexible by extending the default precision of the
multiplier used from 3 to 7 decimal places.
• Support for WideClient remotely-controlled Lua display windows is added.
• The Lua event library facilities to detect POV buttons 32-39 were incorrect. These now work as documented,
and an additional facility is added: if the button number is given as 40 then the event is triggered on any of the 8
POV buttons being pressed and/or released, according to the 'downup' parameter.
• The Lua display window is now closed more consistently when the last Lua plug-in which used it terminates.
• The Lua event.key facilities can now provide event calls on keypress repetition. To receive repeats the
"downup" parameter must be specified, with '4' added to the documented values, so that:
4 = pressed +repeats
5 = pressed +repeats
6 = same as 2, only release
7 = pressed, + repeats, +release
The "downup" parameter in the called function will be 3 for a repeated press, 1 for an initial press and 0 for a
release.
• The current state of the buttons on actively scanned joysticks (local ones, 0 to 15) is readable in FSUIPC
offsets 03C0-03FF. Each of the 16 DWORDS contain the 32-bit state of the joystick 0-15, in order. Button 0 is
the least significant bit (bit 0) in each DWORD.
• As an added safety precaution against repetitive execution of the same Lua plug-in causing an FS crash by
stack overflow, the same Lua plug-in as one already running cannot be started within 66 mSecs of the start of
the running copy. For plug-ins which take more than that amount of time to load and execute this effectively
restricts the repeat rate from dials to 15 times per second. (The rate from buttons or keypresses being held down
was already restricted as the repeat cannot occur till the current plug-in execution finishes).
The time (66 mSecs) is adjustable in the FSUIPC.INI file -- parameter LuaRerunDelay in the [General] section.
• An error in the FSUIPC options interface is fixed which would have caused a number of odd problems,
including the resetting of the "white messages" option on the Miscellaneous page.
• The new Lua sound facilities now work correctly on WinXP as well as Win7 and Vista. Before this the
termination of the Lua program terminated the sound as well -- a quirk of the older DirectSound facilities.
• Additional Lua facilities are supported, including:
com.openhid to use the com library facilities on USB HID devices
event.com to allow for event driven device drivers instead of using loops doing com.reads.
event.sim special sim events such as closing, flight saves and loads and aircraft changes
event.timer simple wake up calls at specified intervals
For full details please see the updated Lua library documentation.
• FSUIPC now only provides UNC paths (UNC = "Universal Naming Convention") if WideFS is registered.
Without the use of WideFS using network-usable paths is not necessary.
• Two additional offsets are now populated for FS2004 (and possibly FS2002, though untested):
03B0 (8 bytes) is a double floating point value providing the left aileron deflection, in radians
03B8 (8 bytes) is a double floating point value providing the right aileron deflection, in radians.
• Fixed an error in the Lua and VRI facilities whereby some input bytes on COM or USB devices could be lost
each time the internal read buffer wrapped around (this occurs every 1024 bytes read).
• Made the Lua timer event properly cancellable with event.cancel, and also allowed a Lua program with only
the timer event enabled to stay resident whilst that timer event is enabled. Previously you would have needed
another type of event as well as the timer to get WideClient to keep the Lua program loaded.
• Fixed an error which prevented Lua plug-ins and Macros being run via the axis zone feature (right-hand side of
the Axis assignments tab).
• The Lua event.offset function now automatically executes the named function with the initial value as well as
on every subsequent change. This saves having to explicitly call the function with an offset reading to get things
initialised with their current start-up values.
• An error in the FSUIPC tables for decoding the VRInsight device button and switch names has been fixed. This
affects the M-Panel and CDU2 devices only. The correction does two things:
1. It fixes the duplicate button numbers for the SP, DEL and CLR buttons on the CDU2. The / button is also
renumbered.
2. Tt fixes the overlap of button numbers between the M-Panel and the MCP-Combi.
However, one side effect of these fixes is that many of the button numbers on the M-Panel now change. If you
are not using an MCP-Combi device, and don't want to have to reprogram your M-Panel assignments in
FSUIPC, you can stop the second fix above operating by adding the following line to the [General] section of
the FSUIPC.INI file:
OldMpanelButtons=Yes
• Fixed an error which prevented macros containing L:Var actions being listed in the drop-downs or even actioned
when assigned by manual editing in the INI file.
• An additional FSUIPC assignable control, COM1/2 Tx switch (1124) is now available. This switches between
having COM1 and COM2 selected for transmission.
• The Lua flag facilities are extended significantly. There are now 256 flags per Lua plug-in, not just 32, and these
additional Lua functions are added to the ipc library:
ipc.setflag(flagnum)
ipc.clearflag(flagnum)
ipc.toggleflag(flagnum)
where the "flagnum" value must be in the range 0 to 255.
Note that if you have an event.flag waiting for any flag changed by one of these new functions, then it will
trigger on exit from the Lua program. However, there is no queuing -- only one event will trigger even if
multiple flags are changed in the one execution. The last one changed will be the one signalled in the event.
• Fixed problems obtaining correct joystick "GUID"s on some systems, depending on FS's "compatibility mode"
setting.
• Added new Lua plug-in facilities for changing bits in offsets rather than complete bytes etc. These are via new
Lua ipc library functions, ipc.togglebitsXX, ipc.setbitsXX, and ipc.clearbitsXX, where XX is UB, UW or UD
for Byte, Word and Double Word offset values respectively.
• Added a new Lua-related control, LuaValue, which sets its parameter into the named Lua plug-in's ipcPARAM
variable. It only does this when the parameter is changed, so it suits assignment to axes where the parameter is
the axis value. There's a new event function, event.param, to call a specified function when ipcPARAM is
changed in this fashion.
• Two new facilities are added to allow users to ensure keypresses assigned to buttons (or sent by external
programs as FSUIPC controls) are directed to the main FS window for processing. This would normally be the
case except that folks using Windows external to FS might be changing the keyboard focus away from the main
FS window. Using a touchscreen, for instance, moves the keyboard focus even though it is the mouse which is
activated by touch.
The two facilities are for use in different user circumstances. First, you can add the line
KeyboardFocus=Yes
into the main [Buttons] section in the FSUIPC.INI file. This will make FSUIPC restore focus to the main FS
window every time it is asked to send a keypress. The FS window will become the foreground window at the
same time.
The second is an alternative for use by more ambitious users who wish to retain focus elsewhere for some
keypresses. It is the addition of a new assignable control called "key focus restore" (number 1125) You can
assign this to a button separately to restore the focus when you need to, or use multiple assignments just with
those buttons intended to send keypresses to FS. Multiple assignments either means editing the INI to make the
additional assignment to the same button press, or else just assigning the key focus restore control to the 'press'
and the keypress sending to the 'release'. In this case you'd need to use the "key press and release" control for the
keypress action instead of programming it directly on the left-hand side of the button assignments tab.
• A new FSUIPC-added control called "Nothing" is added to the assignment dropdowns. This does absolutely
nothing. It might be useful to assign to buttons or keys in an aircraft-specific setup, or Profile, in order to make
the globally-assigned keys do nothing for those aircraft.
• An error in the VRInsight serial port assignment routines caused the FSUIPC display window (as used by, for
example, Radar Contact), to be initialised in its "hidden" mode instead of visible. This is now fixed.
• A bug in the Lua event.timer facilities made every Lua plug-in share the same timer. They now all correctly
have their own timer.
• The function name provided as a string in the Lua event function calls can now be functions in tables. This
enables functions in Modules, brought in by the require function, to be used for event processing, because
Modules so enabled provide tables of functions (and other values) for access in the current program. The format
of the function reference string must be <table>.<function>, so if the Module is named (or equated to) "M", say,
then function "fn" inside it would be referred to as "M.fn" in the event function. (The alternative form "M[fn]" is
not allowed).
The facility is actually extended to handle tables within tables, to no set limit other than the entire string name
must be less than 64 characters (between the "").
• The macro file creation and loading facilities are modified to prevent filenames ending in a space. When these
were allowed to occur it messed up the whole indexing system for macro files, because the Windows INI file
routines don't like parameters ending in space—or rather they treat the last non-space as the last character in the
parameter.
Similarly, Lua filenames ending in space aren't allowed, and such files will be ignored.
• An additional function, ipc.readPOV(joystick number) is added to the Lua ipc library. This returns the pseudo-
button number (32-39) if the POV is pressed, else 0.
• FSUIPC-added FS control names (derived from earlier FS versions) are now no longer 'lost' after assignment.
Note, however, that these may not actually do anything in the version of FS being used.
• An error in the automatic axis assignments for the PFCHid.DLL driver is fixed. The wrong assignments were
based on an original joystick axis selection in PFCHid which was changed before actual user release, but
FSUIPC3 didn't receive the matching changes.
The mapping for the 6 quadrant axes, together with their default assignments, is as follows (left to right on the
quadrant) The correct new axis is shown first and the incorrect older one, now fixed, in parentheses ():
Q1 = 17X (16V) Throttle and Throttle1
Q2 = 17Y (17R) Throttle2
Q3 = 17Z (16U) PropPitch and PropPitch1
Q4 = 17R (17Z) PropPitch2
Q5 = 17U (16R) Mixture and Mixture1
Q6 = 17V (17Y) Mixture2
Default assignments are always overridden by user assignments, so this error was recoverable, but confusing.

Version 3.98 (March 2010)


• The FSUIPC Installer now places the FSUIPC and Lua plug-in documentation into a subfolder called "FSUIPC
Documents", within the FS modules folder. It will automatically delete old copies from the Modules folder.
• The joystick identification (in the [JoyNames] part of the INI file) now includes the joystick's unique "GUID"—
a long unfathomable string of hexadecimal digits enclosed in curly braces {}. If joystick lettering is being used
these can also be recorded for the lettered devices in order to clearly distinguish between devices bearing the
exact same name string.
• Fixed an error whereby joystick lettering can go wrong when FS is run under Vista or Windows 7 but the
compatibility mode is set for XP or before. This is because the two use different registry paths for the joystick
ID registration and names.
• The default JoystickTimeout value set in version 3.60 has been changed to 20 mSecs, after feedback showing
that some joystick drivers can sometimes fail to respond in 15 mSecs. FSUIPC will automatically update a
JoystickTimeout value of 15, set by version 3.60, to 20. Furthermore, this timeout is only applied to joysticks
returning an error to the timed-out poll. Joysticks not returning any error are subjected to a time out of 4 times
the JoystickTimeout value, or a minimum of 60 mSecs.
It also only applies to the Axes and Buttons & Switches tabs in FSUIPC’s options, not to the joysticks tab, and
not to flight modes.
The "black mark" placed on joysticks which are timed out is erased on each new entry to the Axes or Buttons
tabs, giving them another chance. This also applies when the "Reload" button is used to reload assignments.
• FSUIPC no longer blanks the GoFlight displays automatically on initialisation. If you need it to do this, change
the new INI file parameter "BlankDisplays=No" to "BlankDisplays=Yes".
• FSUIPC will now recognise most attached VRInsight devices provided it is provided with parameters telling it
which serial port(s) to use. This enables buttons and switches on those devices to be programmed in FSUIPC's
Buttons & Switches tab, and also allows Lua programs to access switches and some displays.
• FSUIPC now records, in the INI file, the positions and sizes of the titled FS windows that it displays on behalf
of other programs—for instance the Lua Display and Radar Contact windows. It saves the docked and undocked
details, but only for whichever one is showing when it is closed or FS is terminated.
Unfortunately I cannot find a way to automatically restore "undocked" status on the next FS start-up, but both
undocked and docked positions and sizes should now be re-established. You should note that docked windows
are subject to stretching and compressing just like FS's gauges, so the coordinates and sizes recorded for those
are relative to the FS main window with that considered to be 16384 x 16384. This will enable it to return in the
correct proportion even if the FS window has changed shape or size.
• Fixed a minor bug which caused the default maximum Aileron calibration value (set when the calibration has
been reset) to be set to 10000, instead of the correct default of 16380.
• Fixed a long-standing bug which left the previously selected "slope" still attached to a calibrated control after it
had been reset. This may not have been noticed by the user, with consequent unwanted behaviour when the same
control is calibrated later.
• A confusing cosmetic problem in the Joystick calibration options dialogue is fixed. The "REV" and "Filter"
check boxes were not being cleared when the calibration of a control was Rest, so next time you tried to "Set"
the same control, they could appear to indicate the Reverse or Filter action was enabled even though it wasn't,
having been reset.
• A long-standing error in the Options has been fixed. Amending only the Flaps detente calibrations, and nothing
else in the Joysticks tab of the options, was not taken note of on exit and so the INI file was not correctly
updated.
• Fixed an error introduced in version 3.953 which had the odd (and so far unexplained) effect of making the
COM and ADF frequencies slow and progressively slower in PMDG aircraft, or even possibly in other aircraft
if PMDG aircraft are also installed. The actual change which caused it was found, eventually, by a process of
elimination, but how it managed to have such a strange and selective effect still hasn't been determined. The
NAV radios and Transponder were not affected at all!
• Fixed an error in assigning Offset controls to axes or axis ranges.
• Added a new INI parameter to stop FSUIPC polling the GoFlight TQ6 module. It seems that all axes and
buttons on this device are already handled through Windows as a joystick device, so having FSUIPC also scan it
gives dual indications in the Buttons tab in FSUIPC options (seen as Joystick 169).
To stop FSUIPC seeing the TQ6 without messing up your FSUIPC access to any other GoFlight module, change
"PollGFTQ6=Yes" to "PollGFTQ6=No". This parameter will be found in the [General] section after running
the updated FSUIPC, but any change won't take effect until you next start FS.
• An error in the Lua "gfd" library function gfd.SetDisplay is fixed. This error could have caused FS to crash if
the string sent for the display was shorter than the display capacity.
• The Lua event.button() function now works correctly on all buttons on all supported devices: Windows
joysticks, GoFlight modules, EPIC. It works for both locally-connected devices and those connected to WideFS
client PCs. It now even works with the "virtual button" offsets as well.
An example of the use of this button trapping event is also provided. "TripleUse.lua" can be started initially by
an ipc.macro call in ipcReady.lua. It will allow any selected button(s) to have three distinct uses: one each for a
single short press, double short press and a longer press.
• Fixed a serious bug in the Lua event.cancel function which could cause FS to hang when there is more than one
Lua plug-in running and using it.
• Added two new Lua ipc library commands, to handle the display window. These are:
state, x, y, cx, cy = ipc.getdisplay()
which returns the 5 values indicated (state = 0 for no display, 1 for docked display, -1 for undocked display, x, y
are the screen coordinates for the top left, cx, cy are the display sizes, horizontal and vertical, respectively), and
ipc.setdisplay(x, y, cx, cy)
which sets the current display to a new position and size.
You should normally get the details, modify the values, and set the values, but if you know exactly what
coordinates and size you want, then you can simply use setdisplay. Note that there is only ever one Lua display
window, and any Lua plug-in can use these commands— so you could have a separate plug-in to set specific
sizes and placements. It doesn't have to be done inside the one currently using the display.
• The Lua plug-in functions ipc.testbutton and event.button can now take a joystick letter (as a string, for
example: "A") where these are being used in place of the numerical IDs.
• The Lua plug-ins facility has been augmented by a new library of functions: "com". This provides serial port
opening, reading, writing and closing facilities, for interacting with serial port connected devices. Full
documentation will be found in new editions of the Lua package.
• The Lua event library now has two additional functions:
event.flag(flag, "pfunction-name") which is triggered by Lua flag changes, and
event.vriread(handle, "function-name") which is triggered by VRI command reception on an opened
VRI device
• A new facility is included to make the manipulation of the FSUIPC "virtual buttons" (the 288 bits at offset 3340)
a lot easier and foolproof—avoiding the need to read bytes first in order to preserve other button settings. With
this facility you can set, clear or toggle any of the virtual buttons without needing to read anything first. To do
this, write to offset 29F0 a 32-bit value (4 bytes) made up as follows:
Byte 0: Button Number on Joystick (0 - 31)
Byte 1: Virtual Joystick Number (64 - 72)
Byte 2: Action: 0 = Toggle, 1 = Set (Press/On), 2 = Clear (Release/Off).
Byte 3: 0 (Reserved)

Version 3.96 (January 2010)


• Added a position synchronisation option to the 4 throttles, 4 prop pitch, and 4 mixtures calibration pages so that
multiple levers can be calibrated to line up when applying the same inputs to FS.
• A new option has been added to control a "brake release threshold", for when your braking is controlled by toe
pedals rather than by using the keyboard or joystick buttons assigned to non-axis brake controls. In the latter
cases, operating the brakes automatically releases the parking brake (and possibly may also cancel autobraking
action). This doesn't normally happen with brake axes being used for braking, as they are separate controls. That
could be viewed as a drawback of having proper toe brake action, so there's now a new parameter in the
[General] section of the FSUIPC INI file:
BrakeReleaseThreshold=75

This sets the amount of braking needed to release the parking brake. The number is a percentage of total braking
-- so the default here is 75%. If you set 0% it turns the facility off. Pressure on both brakes to at least the set
level is required, and the release action is not "re-armed" until both brakes have returned to "off". The toe brakes
must both be calibrated in FSUIPC.
• Facilities have been added to automatically execute a list of Lua plugins or FSUIPC Macros when an aircraft is
loaded (i.e. changed). This allows switches, offsets, and other things to be set specifically for an aircraft when it
is first loaded. It is done by adding new sections to the INI file with the title [Auto] or [Auto.xxxx...]. Full
documentation on this will be found in the Advanced User's guide.
• Added an extra facility for joystick calibration, in order to try to cope with some different add-on practices
(notably, in this case, the Wilco A320). Normally, the 4-Throttles, 4-mixtures and 4-Prop pitch calibrations
result in an output with either a range which includes the reverse zone, or, if the "no reverse zone" option is
checked, a range from 0 (idle) to 16383 (max). These are sent to FS using the older "????n_SET" controls
(THROTTLE1_SET, etc), since these are the ones providing the reverse zone below zero.
If you set the [JoystickCalibration] INI file parameter UseAxisControlsForNRZ to "Yes", then the NRZ (no
reverse zone) option for all three axis types will use the AXIS_????n_SET controls (e.g.
AXIS_THROTTLE1_SET) instead, with a range of -16363 (idle) to +16383 (Max). This, of ocurse, can be
Aircraft or Profile-specific by editing it in the appropriate calibration section of the INI file.
• Added full support for network and internet access via Lua plugins, using the LuaSocket package available from
the Internet, with the main modules pre-loaded (i.e. built into FSUIPC). Examples and details are provided in the
Lua Plug-ins package.
• Added a Lua library for reading Go-Flight switches and knobs directly, and writing to their displays and
indicators. Full details are included in the Lua PlugIns package.
• Added a new Lua event library function "intercept", which is similar to the offset one except it intercepts writes
to a specified offset by FSUIPC or WideFS client applications, providing the intended value to the Lua plug-in
instead. The plug-in can then either manipulate the value and write it to its original destination, or divert it to
some other place or use, or simply discard it so no action results. Full details will be found in the Lua library
documentation.
• Added another new Lua facility, "ipc.keypressplus" which is able to switch focus to and from FS and deliver
keystrokes to FS's menu dialogues. Documentation and two example plug-ins are provided in the Lua package.
• The way Lua plug-ins are started and terminated has been changed a little, to avoid problems with repeating
controls (buttons and keypresses set to repeat whilst held). Whereas previously each repeated call to execute a
plug-in would actively try to "kill" the previous incarnation then load and run a new one, the current repeat of
the control is now discarded if the plug-in is still running. A repeated control only manages to load and run the
plug-in if the previous incarnation has by then terminated.
This effectively makes such plug-ins run at their own speed, and not even attempt to repeat at the set repeat
speed. Short fast Lua programs will repeat quickly, while longer more complex ones will repeat only slowly --
and non-terminating ones cannot be killed or restarted by a repeated control, only by a fresh one or an explicit
"Kill" control.
This makes assignment of Lua plug-ins to repeating buttons or keypresses more reliable. it was quite easy to
crash FS before, due to a continuous build-up of pending thread terminations and creations.
Note that, if a Lua plug-in is really intended to be used repetitively, it may be much more efficient to actually
program it with a loop in the Lua code and have it checking the state of the relevant button or key itself.
• Minor adjustments to the way the clock (seconds) sync option works makes it operate more promptly when the
FS seconds are seen to drift off the systems seconds value.
• Panel L:Var access (reading and writing) facilities, like those in FSUIPC4, are now available in FSUIPC3. These
include the logging (via the new List control), and the L:Var macro facilities, with Lua plug-in support as
demonstrated by the Log Lvars plug-in.
• Registration with 2010 purchased keys works in this update (in fact since version 3.957).
• Fixed a bug in the automatic button flag toggling which affected button flags for joysticks 0-15.
• The FSUIPC options dialogue and other windows have been enlarged by 20% in order to cope with some of the
variations now seen in the Windows "Shell" fonts. (FSUIPC was switched over to using Shell fonts rather than
its own selected fonts because of an occasional clash which made the inside tabbed dialogues too large for the
holding tabbing window).
• Some minor timing changes have been made to the wind smoothing option which might improve its chances or
removing more of the nasty wind shifts which FSX is prone to.
• The Registration mechanism now allows for a different email address for WideFS and FSUIPC.
• An extra check has been incorporated into the Button scanning routines (used when in the FSUIPC options to
assign buttons and switches). If any joystick device takes more than 15 mSecs to respond, FSUIPC stops polling
it on the assumption that it is either faulty, or has a bad driver. The ban on that device stays operative for the rest
of the FS session.
This is intended to prevent the odd hangs some folks get in the Buttons options which are thought to be due to
rogue joystick drivers without connected joysticks. The timeout used (15 mSecs by default) can be changed via
the parameter in the FSUIPC4.INI file called "JoystickTimeout". This has a minimum of 5 and a maximum of
5000 milliseconds.

Version 3.93 (August 2009)


• When more than one axis is assigned to the same control, direct to FSUIPC calibration, the automatic arbitration
is suspended whilst in the calibration screen. This is to prevent apparent freezes of one axis due to bigger
deflections seen on the other.
• Axis values assigned in FSUIPC can be arithmetically adjusted before being passed onto FSUIPC calibration (or
to FS via FS controls). To do this you have to assign the axis as normal, then edit the FSUIPC.INI file. Find the
axis assignment there, in the relevant [Axes] section, and add one or both of these parameters to the end:
,*<number> to multiply the axis value by <number>. This can be a fraction, such as 0.5 (to divide by 2),
and it can be negative, to reverse the axis direction.
,+<number> or -<number>
to add or subtract a number (an integer, no fractions) to or from the value.
If both parameters are given, the multiplication must come first, and is performed first. The resulting value is
constrained to be in the range -16384 to +16383.
As an example, if the normal input range of an axis is -16384 to + 16383 and you only want the positive half,
but need to still use the whole of the lever movement:
,*0.5,+8192
would be added to the assignment. The *0.5 changes the range to -8192 to +8191, and then adding 8192 gives 0
to +16383.
After editing, just tell FSUIPC to reload the axis assignments (a button on the Axes page). You won't see the
results there, but you will in the calibrations.
• Fixed a problem in the new Profiles facilities which occurs when aircraft titles contain [ or ] characters. These
are converted to ( and ) characters for use in Aircraft-Specific titles, as [ ] are disallowed in [Section] names. The
same conversion is now done before adding the aircraft name to the relevant [Profiles] section so that the match
will be found okay.
• Additional facilities have been added to the Lua "ipc" library for easier control over some FSUIPC facilities
without needing to work with offsets:
ipc.macro("macroname") or
ipc.macro("macroname", parameter)
executes the named Macro, named in the same format as you see in the FSUIPC assignment drop-downs. For
example:
ipc.macro("PMDGquad: cutoff1")
executes the macro named "cutoff1" in the Macro file "PMDGquad.mcro".
The optional parameter should be an integer between -32768 and 32767 (or 0 and 65535 for unsigned values).
Note that the facility can be used to execute other Lua plug-ins too, for example:
ipc.macro("Lua display vals")
or, indeed, any of the Lua controls.
Further procedures provide direct control over the virtual buttons supported by FSUIPC (those normally only
controllable via offsets at 3340=3363):
ipc.btnPress(btn-number)
ipc.btnRelease(btn-number)
ipc.btnToggle(btn-number)
where the button number is 0-287, and Press, Release, Toggle do as they suggest.
Note that because Lua plug-ins are running in a separate thread (one per plug-in), any running Lua plug-in
which is operating the virtual buttons can be detected doing so in FSUIPC's "Buttons" tab, and therefore such
buttons can be programmed therein -- provided the plug-in IS actually looping and toggling a fixed button, of
course.

• The "mouse macro" creation facilities have been extended to enable multiple-entry gauge routines to be detected
and the correct entry selected. When creating macros, if a mouse click brings up the usual Window for the
macro name entry and this contains the annotation (for example) "(1 of 4)", this means that the mouse click may
use one of 4 different ways into the same routine, and FSUIPC is unable to tell which is correct.
When this occurs, use TAB to test as usual. If it works the correct switch in the correct way, okay, name it as
you require. If not, click that same switch again—it will change to "2 of 4" (say). Then re-test using TAB. And
so on. Only when the correct action occurs when pressing TAB do you want to name the macro and move on.
The main example of this found so far is on the throttle quadrant in the PMDG 747 (both FS9 and FSX
versions). The four fuel cutoff/idle switches are 1, 2, 3 and 4 (of 4), with otherwise the same details. With this
new facility programming these switches becomes easy to deal with!

• Fixed a bug which caused attempts to run a Lua plug-in from a Macro failed, usually with an error logged saying
that the file ".lua" could not be found. The construction "CLn:R,<param>" where 'n' is a valid LuaFiles
reference number, and <param> is an optional parameter value, now runs the specified Lua file even when used
in a macro.

• The G-force value provided at offset 11BA is now also updated at offset 11B8 except when the user aircraft is
on the ground. This can be used to read the touchdown G-force after landing.

• A bug is fixed which caused Macro files numbered greater than 16 (in the [MacroFiles] section of the INI file) to
fail -- an earlier numbered file is loaded instead!

• An overall limit on the size of the INI file, of 128000 bytes, is removed. Until version 3.912 the file would be
truncated, possibly resulting in loss of settings.

• Fixed an FS crash which would occur if a Lua plug-in was loaded containing an Event library call specifying a
Procedure Name in anything but a string form ("name"). This error is now reported correctly in the Log.
• Offset conditions in the [Keys] and [Buttons] sections of the INI file had their masks corrupted each time the INI
file section was reloaded.

• The axis delay facility (obtained by following the Delta value by /n) resulted in a truncated and inoperative
parameter line in the INI file.

• The Axis assignment facilities have been augmented with the ability to send axis values direct to FSUIPC
offsets, by assignment to one of five Offset controls -- Byte (8-bit), Word (16-bit), Dword (32-bit) Float32 (32-
bit floating point) or Float64 ("double" floating point, 64-bit). Up to two offsets can be selected, with different
Offset controls. Note that with the Byte assignment, any value exceeding the 8 bit capacity will be simply
truncated, only the lower 8 bits surviving.
Care must be taken using this facility not to overwrite critical offsets. Normally the offsets chosen will be one of
the user-assigned batch (66C0 - 66FF) or some specifically assigned to an FSUIPC application program.

• Four additional FSUIPC controls have been added for "It's Your Plane" (IYP), to toggle the mike monitoring on
and off.
1115 IYP Listen On
1116 IYP Listen Off
1117 IYP ComeFly Active
1118 IYP ComeFly Inactive
These work with the latest version of IYP. For WideFS use you also need the latest WideClient (6.786 or later).
• Fixed a bug which could cause FS98, FS2000 or FS2002 to crash when FSUIPC options are selected.
• Fixed an error in the automatic axis assignment for the PFChid add-on driver module.

Version 3.90 (February 2009)


• A system of control setting "profiles" is now provided, which can be used in place of "aircraft-specific" settings
for joystick calibrations, axis assignments, button & switches and keystroke assignments. With Profiles you
assign aircraft to one of any number of specific sets of settings to suit your equipment and mode of operation.
For example, you may have profiles for "Props", "Jets" and "Helicopters", or even splitting Jets into "Yoke" and
"Stick" types. Whatever it takes to suit your specific set of controls and the aircraft you fly.
There’s a complete new section in the User Guide explaining this facility and how to use it.
• The problems arising with button and axis assignments when re-connecting multiple USB devices are now
handled by facilities for the assignment of letters to named devices. Full details are provided in a new Chapter in
the User Guide.
• The Joystick Calibration sections for the 4 throttles, 4 prop pitches and 4 mixture controls, all now include
options for simple minimum-maximum calibration, with no “centre” values and thus no reverse zone.
• A revised Button repetition system is now implemented. The "ButtonRepeat" parameter is now automatically
included in the default [Buttons] section of the INI file, and provides two values. The repeat rate and an initial
delay. Details are provided in the Advanced User’s guide.
• Support for the buttons and switches on the GoFlight SECM unit has been added (also in Wideclient 6.782).
Note that for this to operate correctly you may need to update your GFDev.dll module.
• Users of PFC throttles, handled via my PFC drivers for FS, are now warned, in the Joystick calibration sections
of the options dialogue, when the PFC driver setting (related to “Game Port” throttles, though meaning USB
ones too) is suppressing the use of non-PFC throttle controls, so that they will know to turn that feature off in the
PFC driver options. Alternatively, if this is needed only for selected aircraft, that suppression can be explicitly
overridden by adding
AllowSuppressForPFCQuad=No
To the relevant JoystickCalibration section(s) in the INI file. Note that to avoid interference from the PFC
throttles, they would still need to be ‘parked’ in a place where they supply no ‘jitter’ values, or switched off
altogether in the PFC driver by assigning an blank User Configuration to the Quad for those specific aircraft.
• Flap axis calibration in FSUIPC3 has been changed to match that on FSUIPC4, and now manages to correctly
operate the PMDG aircraft flaps levers as well as the default aircraft.
• Fixed the appearance of excessive axis "IN" values when axes are assigned in "RAW" mode and calibrated in
FSUIPC.
• An error in the indexing of the negatively numbered calibration slopes (i.e. those numbered -1 to -15) is fixed in
these latest releases. There has been a very long-standing bug which causes the smaller numbers (-2, -3 ...) to
present the most extreme slopes, whilst the slightly flatter ones are at the -15, -14 end -- in other words, the
reverse of the intention and the reverse of what is shown in the graphic when selecting them. The slope of -1 was
incorrect too, but differently, emulating the +15, flattest, slope.
This is now all fixed. But it does mean that any user currently using one of the -ve slopes and who is quite happy
with it will need to re-select it when updating their copy of FSUIPC. You can either do this in the Options,
choosing again the one you want, by sight, or by editing the Slope parameters in the [JoystickCalibration ...]
sections of the INI file. For the latter, the correction would be:
-1 change to 15
-2 to -15 change to -14 to -1 (i.e. -16 - (current slope))
The "new" -15 is steeper than the steepest one previously attainable.
• Some inconsistencies in how Aircraft- or Profile-Specific button and key assignments were being applied on a
change of aircraft have been corrected. Previously, with some settings, only using the reload facilities in the
FSUIPC options tabs made it operate them correctly. The main symptom of the bug was that both the generic
and the specific assignments for the same buttons or keys would be activated, whereas of course the specific
settings should always override the generic ones.
• The client program IPC interface has been made more resilient to bad data being supplied, to avoid crashing FS
when incorrect data lengths and values are seen. Bad IPC requests are logged, but without the actual data unless
IPC logging or "Extras" logging is enabled -- the latter is recommended generally, as otherwise the logs can get
very large. [Note that where the data is being corrupted by the caller using multiple threads to communicate to
FSUIPC, the data logged may not actually be the same as the data found to be in error. This is because the
caller's threads can still change the shared memory whist FSUIPC is trying to deal with it].
• The ipc library facilities for Lua plug-ins has been extended in two ways:
(a) The addition of a new library facility, “ipc.ask”, which prompts the user and receives a typed string
response. This uses a similar display and input method to that used for entering mouse macro names.
(b) The extension of the “ipc.readStruct” and “ipc.writeStruct” for multiple sequences of structures addressing
different base offsets. The difference between this and using multiple calls is that they are all done in the
same frame or access loop in FSUIPC, thus assuring that their relationships match precisely.
The Lua documentation package will be updated with these changes in due course.
• Facilities have been added which will allow me to add new features via optional extra DLLs in future, much like
the PFC, WideServer, GPSout and EpicInfo additions, but without necessitating further changes to FSUIPC
itself.

Version 3.85 (November 2008)


• Two new offset values are added, providing the calibrated values for Rudder and Steering axes (when they are
calibrated via FSUIPC). These may be useful for adding deflection indicators when the steering tiller option is in
action, effectively stealing the real FS rudder input for steering. The offsets are:
0C08 2 bytes Steering tiller calibrated value (if assigned and calibrated), -16384 to +16383
0C0A 2 bytes Rudder calibrated value (if assigned and calibrated), -16384 to +16383
• Macro and Lua controls can be executed via the FSUIPC offsets programming interface. There are two new
offsets involved, as follows:
0D6C 4 bytes This provides the 32-bit parameter associated with any Macro or Lua call sent to the following offset
(0D70).
0D70 40 bytes Write here the complete identity string of a Macro control or Lua program control in order to have
FSUIPC execute it.
For a Macro, the identity string should begin with up to 16 characters giving the .MCRO file name (just the
name part, not the type), and then, separated by a ‘:’ character, the macro name within that file—again, up to 16
characters. Spaces either side of the ‘:’ are optional. The case of the characters is irrelevant, but the spelling and
spacing, if any, must be exact.
For a Lua program operation, the actual Lua control should be provided, followed (with one space or ‘:’
separator) by the Lua program name (without the .Lua suffix). The valid Lua controls are:
Lua, LuaDebug, LuaKill, LuaSet, LuaClear, LuaToggle
For these, a colon (:) separator is only necessary when there is ambiguity—i.e. when the first word in the Lua
program name is also part of the control name (like ‘debug’ or ‘kill’ etc).
Note that any required parameter should always be written first for the LuaSet, LuaClear and LuaToggle
controls as this specifies the flag to be changed (0–31). A parameter is never used with LuaKill.
Whenever a parameter is to be supplied, for a Macro or Lua, it should first be written to offset 0D6C, above.
Otherwise whatever was last written there will be supplied. It is best to write both parts in one Process call in
case someone else changes the parameter in between.
• The TCAS options (selected in the Technical options tab and configurable automatically by FSUIPC client
applications) can now be held fixed, completely unchangeable whilst FS is running, by adding the line
FixedTCASoptions=Yes to the [General] section of the INI file.
• The flight/situation file pathname provided at offset 3F04 is now made to UNC standard (i.e. usable over a
network) when it isn't a partial path, within FS's main path. You only need to check whether it begins with "\\"
or contains an ':' character to determine if it is a full path. Else it will be a path within the FS path itself (as
given, in UNC form, at offset 3E00).
• A serious problem is fixed in the range-control setting facilities for axis assignments. The bug caused Offset
type controls to fail to show, along with their offsets, and any editing there would then lose the relevant lines in
the INI file, once confirmed using OK.
• An error in the way offset 3414 was being set is fixed. This is a copy of the flaps setting destined for 0BDC.
• Added facilities for plug-in programs written in the free language "Lua". For full details please see the
documents and examples in the separate ZIP inside the full FSUIPC.ZIP file you downloaded.
• The traffic zapper facilities now repeat faster, deleting successively further AI aircraft within the deletion zone.
Before, you had to wait a second or so for the traffic tables to be updated.
• A new FSUIPC control "Traffic Zapall" is added (internal number 1085) which deletes AI aircraft within a
vertical cylinder which has the range as the diameter (the range for user on-ground, or airborne, as applicable),
and extending 500 feet above and below the user aircraft.
• For an airborne user, the normal Traffic Zapper control can be made to operate on the nearest aircraft in a
vertical cylinder, instead of the default cone in front of the aircraft, by adding this parameter to the [General]
section of the FSUIPC.INI file:
ZapCylinderAltDiff=n
where n is the maximum altitude difference (i.e. half the overall height of the cylindrical zone).
• Fixed the reverser axis facilities so that they operate over the actual range of the reverser on the current aircraft,
not the fixed 0 to -25% (-4096) range assumed before. The calibration screens will normally still show -4096 but
this is adjusted to suit the individual aircraft when in use.
• Fixed an error which caused FS to crash if the Mouse Macro creation session was started, but immediately
cancelled before exiting the dialogue.
• Offsets 3412–3418 now provide the post-calibration axis values even when they are not disconnected using the
flags in offset 341A.
• Fixed an error which prevented Key “release” assignments being recognised when multiple programmed keys
are pressed and released in certain orders.
• Fixed an error which caused the new “No Repeats” option in the Key assignments dialogue to be cleared
occasionally when re-entering the options.
• Corrected an error which caused Macros programmed for the release of keypresses to fail to reload from the INI
file, even though they were being saved okay.
• Fixed a design flaw where any FSUIPC Directly assigned axis that should use an axis which is also specified to
be "stolen" for use in some other way is still stolen. This happened even if that other axis was also assigned
Directly, which makes even less sense.
The most likely example of this which crops up is when the Reverser is calibrated in FSUIPC, and the Mixture
axis is assigned Directly. The reverser steals the use of the Mixture axis, including the one assigned Directly,
which is evidently wrong.
Now no axis assigned Directly uses a “stolen” FS axis control, and no axis assigned Directly is allowed to be
"stolen".
• ShowText, running on a WideClient PC, now correctly sees and displays the most recent types of Radar Contact
menus.

Version 3.82 (July 2008)


• The Key assignment facility in FSUIPC now sports a “No repeats” option, to tell FSUIPC to ignore repetitions of the
keypress caused by holding it down. This repetition is actually an automatic feature of Windows keyboard handling. With
the “no repeats” checkbox selected FSUIPC only takes note of the first “KEYDOWN” message, not those marked as repeats.
Windows sends a KEYUP message when ending the press repeats because the key is released.
• Wherever parameters for FS or FSUIPC controls are accepted (i.e. in the “parameter” edit windows in the Keys,
Buttons or Axis assignments tabs, and in the relevant parameter fields of their INI file sections, the format:
JnBm
can be used, where n and m are both numbers between 0 and 255, inclusive. This form is converted into the
decimal value
(256 x n) + m
For example, J3B6 would be taken as 774.
The application for this is in specifying Button Flag numbers, which are composed of the Joystick number (Jn)
and the Button number (Bm) is this fashion.
• The New Weather Interface (NWI) is changed in two small ways to make it a little more compatible to the
version provided now for FSX (in FSUIPC4):
First, the timestamp at offset C824 is changed when any valid NW_command is written to C800, not only when
weather has actually been passed to FS as a result of an NW_SET type command. The only exception to this
new action is when an immediate-action NW_command is send after an NW_SET but before the weather has
actually been sent. This is to avoid such action being misconstrued as confirmation of the NW_SET.
Second, the FSX facility “NW_GLOBAL” (command number 5) , which sets Global Weather mode in FSX, is
now interpreted as the same as NW_CLEAR (clear all weather) in FSUIPC3. Hopefully this will give any
Global weather actually set in FS2004 more chance of being instigated.
• Multiple joystick axes assigned, in FSUIPC's Axis Assignments tab, to the same FS axis via the “direct to
FSUIPC calibration” option are now arbitrated so that the last one giving the largest value (furthest from zero) is
the one applied. This may now be a more useful way of assigning multiple controls than the rather fiddly
method of using otherwise unused FS axes as described in the Advanced Users guide.
• Messages sent to FSUIPC for display on the FS screen can now be filtered and routed according to their first
few characters. This is done by adding a new section ot the FSUIPC.INI file, as follows:
[MessageFilters]
Suppress=...
SingleLine=...
MultiLine= ...
The “...” part is replaced by a list of up to 8 strings (in "quotes"), each of less than 16 characters. Messages sent
to FSUIPC are compared with these. If they start with the same charracters (case ignored) then the action taken
is as follows:
Suppress: the message is discarded
SingleLine: the message is treated as a single line message even if it isn't
Multiline: the message is treated as a multiline message even if it isn't.
For example: SingleLine="FDC","PM MCP" will route messages beginning "FDC" or "PM MCP" to the single
line window, unless such messages are suppressed by FSUIPC option.
• The FSUIPC feedback control facilities, intended for programmers needing closer control for an external
autopilot, are now generally accessible to users as added FSUIPC controls. You can assign key presses or
buttons to the following extra controls:
Fsuipc bank hold off
Fsuipc bank hold on
Fsuipc bank hold set
Fsuipc bank hold toggle
Fsuipc mach hold off
Fsuipc mach hold on
Fsuipc mach hold set
Fsuipc mach hold toggle
Fsuipc pitch hold off
Fsuipc pitch hold on
Fsuipc pitch hold set
Fsuipc pitch hold toggle
Fsuipc speed hold off
Fsuipc speed hold on
Fsuipc speed hold set
Fsuipc speed hold toggle

These should be self-explanatory. For the “Set” ones, put the value to be set as the parameter—only whole
numbers, but okay for testing (degrees, knots, or 100 x mach). For the “on” and “toggle” controls the current
pitch, bank, speed or mach becomes the target to maintain.
Note that these are not perfect. In particular the Mach control facilities are inclined to hunt too much and really
need tuning for each aircraft (which can be done by programmers, via information in the FSUIPC SDK). The
bank and pitch hold facilities work quite well, however.
One consequence of the changes to make these controls generally available is that they programmers version of
the facilities no longer “time out”—previously the program operating the facilities would need to refresh the
enabling values every few seconds, otherwise they would relinquish back to user control. This no longer
happens, so programmers supplying such autopiloting programs to users should advise them how to cancel the
modes explicitly (e.g. via one or more of the “off” controls listed above) in the event of their program
terminating prematurely.
• The “RemoveATC=Yes” facility now works in the German version of FS2004. It seems that the place where
FSUIPC was obtaining the ATC window name, in Language.DLL, was only used for the Options menu, and in
the German version of FS Microsoft appear to be abbreviating “Flugsicherung” to "FS" in that menu. It seems
the ATC messages are included in the ATC.DLL, including the Window name (and despite the version numbers
matching), so FSUIPC now gets the Window name from there.

Version 3.81 (April 2008)


• Added new "Mouse Macro" facilities, for adding button and keypress assignable controls for functions in add-on
panels which are otherwise only controllable by mouse. These do not cover every such facility, but will help
with many add-ons. When programmed, they do not actually use the mouse at all, but call the panel functions
directly.
Full advanced documentation is provided in the Zip, as two PDF files (one for users, one technical), and
examples for the PMDG 737NG overhead and the APchart applications are provided, ready to use.
• Promoted the altimeter value (offset 3324) for faster updates. This should be up to date on each FS frame now.
• A new offset, 3410, is provided which includes flags for assorted control indications. At present the only bits
used as as follows (bit numbers, 0 = 2^0):
4 Engine 1 reverser inhibit (offset 32F8) is active with the reverser is engaged
5 Engine 2 reverser inhibit (offset 32F8) is active with the reverser is engaged
6 Engine 3 reverser inhibit (offset 32F8) is active with the reverser is engaged
7 Engine 4 reverser inhibit (offset 32F8) is active with the reverser is engaged
The reverser inhibit active flags are cleared when the inhibit is disabled or forward thrust is engaged. Setting the
throttles to idle will not normally clear these indications.
• The ADF bearing and NAV radial offset values are now updated on every frame rather than only every fourth
frame. Hopefully this will have negligible impact on performance—feedback on this point would be useful.
• An omission in the weather checking for FS2002 is fixed. In certain apparently very unusual circumstances user-
defined weather can be set with unlimited visibility with the FS2002 weather structure having a Null pointer for
visibility instead of the expected pointer to a standard visibility structure. When encountered this would crash
FS2002, with FSUIPC.DLL being pointed to as the culprit module. I don’t think this can happen on FS2004.
• If any aircraft names used with the aircraft-specific assignment facilities contain [ or ] characters, the
manipulation of the saved INI file parameters goes completely haywire and nothing is saved correctly or
reloaded correctly. This is because Windows uses [] to parenthesise the INI file section names, and extra such
characters confuse it.
To fix this, FSUIPC replaces such characters in the section names with ( and ). The original aircraft names are
not affected, and nor is the visual representation in the dialogues. Only the saved parameters are affected.
This change operates on all four parts which can have aircraft-specific settings–Axes, Buttons, Keys and
JoystickCalibration.
• The Mouse Wheel elevator trim facility is extended by the addition of four keypress or button assignable
controls:
1080 Wheel trim toggle
1081 Wheel trim faster
1082 Wheel trim slower
1083 Wheel trim speed toggle
The toggle control turns the trim action on or off, the other three change the speed of its action when it is on.
“Faster” means twice as fast (up to 16x), “Slower” half as fast (down to 1x), whilst the speed toggle switches
between 4x and 1x speed.
All four can be assigned in the drop-downs in Key and Buttons assignment tabs of the FSUIPC options. The
Miscellaneous checkmark is effectively the same as the wheel trim toggle control.
Version 3.80 (March 2008)
• A facility is provided on the Miscellaneous options page to enable the Mouse Wheel as an elevator trim wheel.
• FSUIPC now discards the first 10 readings from an axis assigned in its Axis Assignments facilities, in case any
of those a spurious values resulting from a dormant or uninitialised state of the hardware or its driver. This only
loses the first half-a-second or so, and only occurs when the axis is first scanned, usually during FS initialisation.
• A ‘macro control’ facility has been added. This is primarily intended for add-on developers, allowing them to
define additional controls to interact with their product which are then assignable in FSUIPC’s Buttons, Keys,
and Axis Assignments dialogues. Full documentation will be added to the Advanced User's guide in due course,
but meanwhile a technical summary is provided in a text document within the ZIP.
• The ‘PollInterval’ parameter in the INI file [Buttons] section can now be set to 0 to prevent any button polling at
all. If this is set even the ‘Buttons and Switches’ option page is removed. This may be useful when trying to
track down an problem caused by rogue joystick drivers.
• The following additional values in the Offsets shown are now available from FS2004 (and, in two cases only, in
FS2002, though untested):
Offset Size Description
04A8 8 Elapsed seconds, as a double (64-bit floating point).
0538 8 Design speed VS0 (stall speed full flaps), ft/sec, as a double (64-bit floating point).
0540 8 Design speed VS1 (stall speed clean), ft/sec, as a double (64-bit floating point).
0548 8 Design speed VC (cruise speed), ft/sec, as a double (64-bit floating point).
0550 8 Minimum drag velocity, ft/sec, as a double (64-bit floating point).
0920 4 Engine 1 torque, in ft-lbs (I think), as a 32-bit float. Not for jets.
09B8 4 Engine 2 torque, in ft-lbs (I think), as a 32-bit float. Not for jets.
0A50 4 Engine 3 torque, in ft-lbs (I think), as a 32-bit float. Not for jets.
0AE8 4 Engine 4 torque, in ft-lbs (I think), as a 32-bit float. Not for jets.
1334 4 Aircraft maximum gross weight, as a 32-bit integer, in lbs x 256.
34B0 8 Pressure Altitude (metres), double float. (FS2002 also)
34B8 8 Standard ATM Temperature, degrees Rankine, double float. (FS2002 also)
34C8 8 Total world velocity, ft/sec, double float.
These offsets correspond to those assigned for the same values in FSUIPC4 (for FSX)
• Since version 3.773 FSUIPC3 by default no longer intercepts FS axis controls which have been assigned in its
Axis Assignments to be sent ‘direct’ to calibration.
This should not really matter, as axes assigned directly should have been disabled in FS so no such controls
should arrive. However, it seems that some add-on aircraft panels (most notably that for the LevelD 767) use
some standard axis controls to operate the autopilot. If the FSUIPC calibration and slope changes are applied to
them, it seems this can upset the A/P control.
In case there are installations which do need both direct and indirect calibration to work on the same axis
controls, this new action can be reverted by changing the AxisInterceptIfDirect parameter in the INI file from
‘No’ to ‘Yes’.
• Faulty button signals which are repeating without control can now be explicitly ignored when trying to program
the other buttons. Add a line in the form:
IgnoreThese= j.b, j.b, ...
in the main [Buttons] section of the FSUIPC4.INI. This lists the joystick number (j) and button number (b) of
each button to be ignored. You can edit the INI file whilst in the Button assignments dialogue and simply press
“reload all buttons” to activate any changes.
Note that the action of ignoring buttons only applies to those numbered 0–31 on each possible joystick, and they
are only ignored in the dialogue—if they are already assigned the assignment will still be effective.
• The option to “exclude THROTTLEn_SET” control calibration in the 4-throttles Joystick Calibrations page is
removed in favour of a set of three similar options, one for THROTTLE, one for MIXTURE and one for PROP
PITCH set controls. These are on their respective pages, and are now defaulted ON rather than OFF.
These excluded controls are old ones, no longer assignable directly in FS, dating back to FS98 and before. They
are now excluded from calibration (by default) because the only common use they have is by add-on panels
looking to control FS axes accurately, and by users assigning special values to the controls via Key, Button or
Axis Assignments to them.
• An error in the processing of INI file [Buttons] sections is corrected which would have previously caused
comment-only lines to be deleted on some types of dialogue button changes.
• A small change has been made to the button options processing, to fix an error whereby deleted assignments
might still be shown. Additional logging facilities, for guided diagnosis, have also been added.
• The FS message window interception is retried regularly until it succeeds. This may get over rare problems
where the WINDOW.DLL module is not loaded initially.
• A special facility is added to eliminate short (transient) button press indications. This is intended to help deal
with some devices which create occasional spurious button press signals.
Add EliminateTransients=Yes to the main [Buttons] section in the FSUIPC.INI file to enable this. It operates
only with locally-connected joysticks (but not EPIC or GoFlight devices). Note that enabling this option may
mean you have to consciously press buttons for slightly longer. It depends on the PollInterval, another
[Buttons] parameter, which defaults to 25 (milliseconds). A “transient” button indication is one which only
exists for one poll, so a real press would have to last up to 50 mSecs to be sure of being seen (more, allowing for
variations in the polling due to processor/FS activity). You may find you need to adjust the PollInterval too.
• A new FSUIPC control (number 1079) called “Traffic Zapper” is provided. This can be assigned to any keypress
or joystick button. When used it deletes the nearest AI aircraft which is within the following constraints:
(a) if the user is airborne, within a default 1.5 nm range, and also within just 2.5 degrees relative bearing ahead
of the user aircraft and 5 degrees elevation (above or below), or
(b) if the user is on the ground, within a default 0.25 nm range, and also within 15 degrees relative bearing
ahead of the user aircraft, and 5 degrees elevation (above or below).
If no aircraft qualifies, the control does nothing. If an aircraft is deleted, a sound is heard. By default this is the
“firework” wave file in the FS sound folder. You can change it in the FSUIPC.INI file by providing a different
sound name for the ZapSound parameter -- it must be the name of a WAV file in the FS sound folder. Or, if you
do not want a sound just set it to ZapSound=None. However, the reason for the sound is so that you know
something has been Zapped. FSUIPC cannot tell what you can see, and the aircraft which is zapped may not be
in your display so you may not see it disappear.
The range of operation of the zapping facility can be adjusted by using two optional parameters in the [General]
section of the INI file. These are, with the current defaults:
ZapAirRange=1.5
ZapGroundRange=0.25
The “Air/Ground” refers to the user aircraft, not the target, and the units are nautical miles. Note that you cannot
change the acceptance angle explicitly. It is adjusted automatically, in linear inverse proportion to the change in
the range -- so with a larger range you would need to point the aircraft nose more accurately.
For most users and most purposes the defaults are recommended.
• A facility to operate bank trim on helicopters is provided. This “helo trim” uses FS aileron trim INC/DEC
controls, accessible by assignment in FSUIPC, or the special aileron trim axis assigned and calibrated via
FSUIPC, to modify the end value on the “X” (aileron) axis of the cyclic. To use this you need to ensure that the
axis is calibrated through FSUIPC (as the aileron axis), and add “ApplyHeloTrim=Both” to the appropriate
[JoystickCalibration …] section(s) in FSUIPC.INI. Note that this enables the pitch trim option as well. As a
precaution, the trim value will never be added to the aileron axis if the normal aileron trim is non-zero. The new
“helo trim” value is maintained in IPC offset 0C06 (range –16383 to +16383) which can also be written to for
external program control.
• The facilities to intercept axes so that they can be applied through external algorithms (such as fly-by-wire) are
extended to include the toe brake axes (AXIS_LEFT_BRAKE_SET and AXIS_RIGHT_BRAKE_SET), the
Flaps (AXIS_FLAPS_SET) and the Spoilers axis (AXIS_SPOILERS_SET). For these there are new offsets as
follows:
341A 1 byte Axis inhibit flags:
2^0 = Left brake
2^1 = Right brake
2^2 = Flaps
2^3 = Spoilers
This byte is cleared after about 10 seconds to safeguard axis operation against a crashed
application. To sustain the interception, therefore, the value needs to be refreshed every
few seconds.
3412 2 bytes Spoiler axis input value. Copy this to 0BD0 for normal brake action
3414 2 bytes Flaps axis input value. Copy this to 0BDC for normal flaps action
3416 2 bytes Left brake axis input value. Copy this to 0BC4 for normal brake action
3418 2 bytes Right brake axis input value. Copy this to 0BC6 for normal brake action
Note that offset 341A is “write only” in the sense that reading it will only supply zero, not the value just
This change is specifically designed to allow Project Magenta’s pmSystems to be programmed to control
subsystems dealing with the brakes. Apparently the need to re-write the intercept flags regularly is not easily
possibly in pmSystems programming unless the value read is different from the one written. I think this is an
efficiency matter.
• Many of the data values extracted from FS by FSUIPC are now extracted at faster rates, for more smoothness in
applications. This relaxes restrictions originally put in place several years ago to avoid affecting FS
performance. These days, with such powerful PCs (in FS2004 terms, not FSX) I suspect that FSUIPC operating
more often inside FS will not be noticeable -- but if it is, please let me know!
• A bug is fixed which affected the calibration of the four separate Mixture axes. The bug caused the output values
to jump from 8192 to around 12288. This was due to the attempted provision of asymmetric slopes for off-
centred “centres”. The Slope option is no longer offered for these axes.
Version 3.75 (June 2007)
• The elevator trim facilities on the GoFlight LGT module are again recognised as a set of 4 buttons (two in each
direction.
• The FS2000-compatible Advanced Weather Interface (AWI), as used by WeatherSet and some other programs
(including WidevieW) is now capable of setting above-ground lower altitudes for the single visibility layer.
• A possible recursive loop, causing FS to crash, resulting from trying to use a virtual button to repeatedly change
a virtual button, is fixed. Virtual buttons are those represented by bits in the 36 bytes from offset 3340.
• A long-standing error in offset 3300 flag operation has been fixed. Before now the NAV2 ILS flag would not be
set, even if NAV2 were tuned to an ILS, if NAV1 was not tuned to a VOR or ILS.
Version 3.74 (April 2007)
• Fixed an error in the saving of Aircraft-specific KEY settings. The section in the INI file was incorrectly headed
[Keys.], without the actual aircraft name part being filled in.
• The Gyro Compass value is now available (on FS2004 and FS2002), in degrees as a double floating point value
(64-bit) at offset 2B00.
• Facilities are added for four of the "Miscellaneous" options to be controlled in an aircraft-specific way, provided
that a separate Joystick Calibration has been set for such aircraft. This involves INI file editing and is explained
in a text READ ME file in the Zip. the options so supported are:
DisconnTrimForAP Disconnect elevator trim axis for A/P
ZeroElevForAPAlt Centre elevator on A/P Alt mode changes
PatchSimApAlt * Enable V/S sign correction (& A/P patching on FS2002)
CorrectVSsign * Enable V/S sign correction (FS2004)
ReverseElevatorTrim Reverse the elevator trim sense
* Note that for FS2004 the ‘PatchSimApAlt’ parameter is re-named ‘CorrectVSsign’ (automatically)
• The weather logging facilities have been tidied a little to show altitudes converted from metres to the nearest
10’s of feet when less than 1 metre from such a value.
Version 3.73 (March 2007)
• Fixed a problem with offsets 077C, 078C and 079C, which stopped working in 3.72 or before.
• Added four new direct axis controls for assignment in the Axis assignments tab. These are
Aileron/SlewSide, Elev/SlewAhead, Rudder/SlewHdg, Throttle/SlewAlt
These send the normal controls in flight mode, but the Slew controls in slew mode. They have to be
independently selected and calibrated in the FSUIPC Calibrations tab, whilst in the correct relevant FS mode.
• If FSUIPC detects that FS is running on Windows Vista, it moves, and subsequently maintains the LOG, INI
and KEY files, to/in the Documents “Flight Simulator Files” folder—the same place that FS saves the user’s
Flights and Plans.
However, tests so far have shown that Vista runs FS2004 (and presumably earlier versions) in a compatibility
mode, pretending to be WinXP SP2. FSUIPC therefore does not detect Vista, and so uses what it thinks is the
Modules folder in the main FS folder. If you installed FS in the default place (Program Files …) this should give
problems with write protection, but it seems Vista places these files into a “compatibility” place, aliassed to the
Modules folder, so it all seems to work … somehow!
• If the FSUIPC.DLL signature is not valid for any reason, FSUIPC will not function correctly at all, and will also
act as if unregistered. Now, as well as Logging this problem, FSUIPC will warn the user via a Message each
time any access is attempted to the Options menu.
Version 3.72 (February 2007)
• FSUIPC is now digitally signed, and this signing is used to check the validity of the install.
• Fixed several problems which were possible causes of CTDs (Crashes To Desktop) in versions 3.705 to 3.719.
Certainly one specific cause has been fixed, and extensive testing has shown the base release on which 3.72 is
built (3.719c) to be very stable.
• Full support is added for the GoFlight EFIS module (up to two of them). Although this was supported before, it
was completely untested, and the Mode and Range selectors were difficult to deal with. Now each of the
positions of these selectors give a different FSUIPC button number. The other difference is that the Minimums
and Baro dials only have two button numbers, one for each direction. There is no distinction between "fast" and
"slow" operation as there is for other GoFlight rotary encoders.
• The joystick Calibration "REV" facility, to reverse the direction of the lever or knob used to input the axis
values, is made to reverse the INPUT values instead of the OUTPUT ones. This should make it much easier to
calibrate things like Spoiler ARM and Flap detente positions on levers operating in reverse.
Note, however, that there is a possibility that this change may upset some existing calibration settings where
REV has been used. Please, when you install this update, do go through each of your FSUIPC-calibrated axes
and recheck all those with the "REV" option checked.
Version 3.71 (November 2006)
• Program access checking via application keys is removed in this version. Commercial users are still expected to
make appropriate agreements regarding licensing, and stick to those already made, but freeware access is now
unencumbered.
• The aircraft name is now displayed in the Options title bar when the Joystick Calibrations are aircraft-specific.
• Fixes a problem with [Keys] programming which occurred if there are comments added to the end of a line with
a ‘+’ or ‘/’ character included.
• Fixes an error in the Joystick Calibrations when aircraft-specific calibrations are being made and the
“ShortAircraftNameOk” parameter is left to its default ‘No’. This problem would have caused FSUIPC to load
the wrong calibrations from the INI file, or, worse, none at all.
• The following additional offsets are now mapped to provide access to values connected with the HSI. These
should work in both FS2002 and FS2004, but have only been checked (with mixed results as noted) in FS2004
so far:
Offset Size Description
2F88 8 HSI CDI needle position, –127.0 to +127.0 double floating point. The full range
represents –10 to +10 degrees for a VOR, –2.5 to +2.5 degrees for a LOC
2F90 8 HSI GSI needle position, –119.0 to +119.0 double floating point. The full range
represents –0.7 to +0.7 degrees
2F98 8 HSI speed, as a double floating point in metres/sec.
2FA0 8 HSI distance, as a double floating point. In metres.
2FA8 2 HSI bearing in degrees.
2FAA 1 HSI CDI valid flag
2FAB 1 HSI GSI valid flag
2FAC 1 HSI bearing valid flag. (Not seen this set yet—see 2FA8)
2FAD 1 HSI To/From flag: 0=off, 1=To, 2=From
2FAE 1 HSI ‘has localiser’ flag
2FB0 6 HSI ident string

Version 3.70 (July 2006)


• The ShortAircraftNameOk parameter can now be set to ‘Substring’ to make FSUIPC accept aircraft names
with the INI file aircraft name included as a sub-string anywhere within the full name. This gives more
flexibility in applying aircraft-specific assignments, and applies to all sections using the facility (i.e. Axes,
Calibrations, Buttons, and Keys).
• Additional offsets are provided for water rudder data from FS:
2A78 water left rudder position (double)
2A80 water right rudder position (double)
2A88 water rudder handle position (32-bit BOOL)
• An error is fixed in the Buttons and Keys assignment facilities. This could have disabled the final button or key
assignment left when the penultimate one is deleted.
• Bit 2^4 (value 16) in offset 330C is set when the FSUIPC Hot Key for throttle synchronisation is used and the
sync engages.
Version 3.65 (June 2006):
• Most importantly, this fixes an error in 3.60 which makes it crash towards the end of June with a Beta-version
expiry message!
• A new axis control is added, for direct assignment in the Axis assignments tab, for a Steering Tiller. This uses
the FS Rudder control, but can be calibrated separately (eg to be more responsive -- use the inverse S-shaped
slope options).
If the steering tiller axis is assigned, you must then calibrate it in FSUIPC's Joysticks section (this is on the same
page as the PAN controls, sorry). It is then used as follows:
When on the ground and at any ground speed less than 60 knots (default -- adjustable by MaxSteerSpeed
parameter in the INI), the actual FS rudder action is controlled by a blend of the tiller and rudder axis inputs. At
low speed it is predominantly tiller, and as speed increases the tiller becomes gradually less effective and the
rudder input more so. Above the MaxSteerSpeed, or in the air, the tiller has no effect.
As with all of the axis and joystick facilities, the calibrations, assigmnents and parameters such as
MaxSteerSpeed, can be different for different aircraft.
• The axis assignments facility has been thoroughly overhauled internally to make the “aircraft specific” aspects
work more reliably and usefully. In the original release it was easy to get things tangled up between axes
generally applied and those which should have been specific to the current aircraft, and the saved parameters
were often in error.
Now FSUIPC only retains one set of assignments in memory and therefore in action. This will be the general
[Axes] set if the currently loaded aircraft has no specific assignments, otherwise it will be the latter. The short
aircraft name option (needing INI file editing) applies just as for Buttons, Keys and Calibrations.
When the aircraft specific option is selected for an aircraft you are now presented with an option to retain (copy)
all the general ones, to work from as a basis, or to start from a clean sheet. For minor variations you will
probably opt for the former, but if you have completely separate controls for, say, a Boeing and an Airbus, or a
prop and a helicopter, then you might find it easier to start again for each one.
If you try to uncheck the ‘aircraft specific’ option, you will be offered the choice to delete all the specific
assignments for the current aircraft. If you decline, then the aircraft specific setting remains. This is a cleaner
way of removing aircraft settings than deleting the section in the INI file.
At various stages you may be given the option to save any changes made so far. If you don’t do this then axis
assignment changes since entering the Options system may be lost.
• A bug is fixed that corrupted the Payload Count value being read from offset 13FC. The value supplied by
version 3.60 was very large, and any program not imposing the limit of 61 documented in the Programmer's
Guide may appear to hang whilst attempting to read the millions of entries. Etienne Martin's pushback gauge
(ATN) is one such application, there may be more.
• An error on FS2004 that could, on some systems, cause the AI traffic information to omit the runways in use, is
fixed. This would have affected Radar Contact 4 users.
• Buttons and dials on recent GoFlight devices, such as the MCP Pro, should now be detected correctly by
FSUIPC’s Button programming facilities. This needs an up-to-date copy of GF’s “GFDev.dll” (version 1.61.02
or later, dated May 2006), available from my Support Forum.
• Messages to FS’s message display are now not suppressed when FS is busy with a dialogue or progress bar
showing. Apparently this could have caused time zone messages to be missed with FSRealTime.
• The INI option “RemoveATC=Yes” should now work on non-English versions of FS. It appears that the
Window name is language dependent.
• Additional FSUIPC offset controls are provided to deal with floating point values:
Offset float32 set/1000 (encoded 7000zzzz)
Offset float64 set/1000 (encoded 7400zzzz)
Offset float32 inc/1000 (encoded 7800zzzz)
Offset float64 inc/1000 (encoded 7C00zzzz)
In each case the parameter is a signed 32-bit integer, but this is divided by 1000 (decimal) in the appropriate
floating point format before it is written to the offset specified (zzzz in the above encodings, but entered as
xZZZZ in the on-line dialogue). For “decrements” use a negative parameter in the increment controls.
• FSUIPC supports the new facilities in WideFS (version 6.599a or later) to copy files from anywhere on the FS
system to any WideFS client PC. Please see WideFS for more details.
Version 3.60 (29th April 2006): This version of FSUIPC embodies some major new facilities which have been on my
list for a long time and which have finally made it. One of the results is the renaming of most of the Tabs in the
Options screen, which has now been extended to two tiers through additional features.
• For FS2004 (only), FSUIPC now provides support for a message window in the style of the in-built FS ATC
window. This will display only multi-line messages sent to FSUIPC which previously would only look right in
AdvDisplay, such as (and particularly) the Radar Contact menu window.
You do not need AdvDisplay installed to use this facility. You also now do not need AdvDisplay installed to
support ShowText windows on a networked PC—ShowText will now work with FSUIPC alone, for multi-line
messages (like Radar Contact’s) only.
Not only is this part of FSUIPC, but it is a free part of FSUIPC, just as AdvDisplay was. Options concerning the
FSUIPC message window appear on the About/Register screen, which is available to all FSUIPC users.
If AdvDisplay is not installed, then the feature will already automatically be enabled when FS is first loaded
with this new version of FSUIPC installed. It can be turned off (to use only ShowText for example) in the front
option screen—the other option there, to stop the multi-line messages going to FS’s default message window,
would then need enabling.
If AdvDisplay is installed, then it is disabled initially, and everything is like it was before. However, the new
window can be enabled in the front option screen. AdvDisplay is still useful for gauge-like installation in
panels, and to divert and contain single-line messages like FS’s ATIS and messages from many programs, but it
will not be maintained or supported from now on.
The new window itself is part of FS: it can be moved and sized (unless locked in the Miscellaneous options),
and undocked. Its position, size and docked state details are saved by FS in its FLT files, when the latter are
saved. The details go into a section with the window name.
There are no scrolling facilities for messages in this Window, but the delays operate. The window only
disappears when it is empty, but FSUIPC recognises the AdvDisplay hot key and will toggle the window on and
off just as it does for AdvDisplay.
• The new message window has a title (default “FSUIPC Window”), which can be set by the program using it, but
as only one such Window is supported only one title is available. The first program writing it then a multiline
message wins! Programs write their 32-character (max) zero terminated title to IPC offset 6D60. This only needs
doing once, immediately before any multiline messages are sent to 3380.
• The AdvDisplay toggle facility is now also available as an FSUIPC control, assignable in the Button options.
• The AdvDisplay hotkey and WhiteMessages options are available to unregistered users, but only by editing
these in the FSUIPC.INI file. The Advanced User’s document gives details.
• An option is also provided to suppress single-line messages altogether. This is to replace another lesser-used
application of AdvDisplay to handle unwanted screen messages, including those from FS such as ATIS and
multiplayer logins/outs.
• A facility to operate pitch trim on helicopters is provided. This “helo trim” uses the normal FS elevator trim
controls (and axis) to modify the end value on the “Y” (elevator) axis of the cyclic. To use this you need to
ensure that the axis is calibrated through FSUIPC (as the elevator axis), and add “ApplyHeloTrim=Yes” to the
appropriate [JoystickCalibration …] section(s) in FSUIPC.INI. As a precaution, the trim value will never be
added to the elevator axis if the normal elevator trim is non-zero. The new “helo trim” value is maintained in
IPC offset 0BBE (range –16383 to +16383) which can also be written to for external program control.
• If you are using a weather setting program which tries to set cloud types not supported in FS2004 (resulting
often in an eventual crash in Weather.DLL), you can now add the parameter “CloudTypesFixed=Yes” to the
[General] section of the FSUIPC.INI file. This tells FSUIPC to map all supplied cloud types to one of those
known, i.e: 1 (Cirrus), 8 (Stratus), 9 (Cumulus), 10 (Cumulonimbus).
• An INI-file only option, “StopAutoFuel=Yes” is provided on FS2002/4 to stop automatic re-fuelling at scenery
fuel boxes. With this selected you can only increase fuel via the FS menu or by using a program or gauge which
does it via FSUIPC’s offsets.
• Thanks to discoveries by Matthias Neusinger, additional offsets for view modes and settings are now available
in FS2004 (and most in FS2002 too), as follows:
8320 1 Byte value, the view mode in currently selected window (read/write):
FS2004: 1=cockpit, 2=virtual cockpit, 3=tower, 4=spot plane, 5=top down
FS2002: 0=cockpit, 1=virtual cockpit, 2=tower, 4=spot plane, 7=top down
832C 2 Word, zoom value for cockpit mode in currently selected window
(read/write): 64=1x
832E 2 Word, zoom value for virtual cockpit mode in currently selected window
(read/write): 64=1x
8330 2 Word, zoom value for tower mode in currently selected window
(read/write): 64=1x
8334 2 Word, zoom value for spot plane mode in currently selected window
(read/write): 64=1x
8336 2 Word, zoom value for top down mode in currently selected window
(read/write): 64=1x
833C 2 Word, spot plane direction from user aircraft (read/write),
degrees in usual 65536/360 format
8340 4 Dword, spot plane distance from user aircraft (read/write)
meters * 256
8345 1 Byte, spot plane gradual transition (read/write)
1=off, 0=on
8348 4 Dword, spot plane altitude difference from user aircraft (read/write)
meters * 256
83BC 24 View point lat, lon, alt, same as at 05B0 (read only, FS2004 only)
83D4 12 View direction: pitch, bank, heading, (read only, FS2004 only)
in same format as for user aircraft P,B,H at 0578
• The “in menu” indication at offset 3365 is now reliable when using WideFS as well as when reading it locally
on the FS PC.
• Relative bearings to VOR1 and VOR2 are now provided in degrees (0–359) in offsets 0C56 and 0C5C,
respectively. These are both 16-bit integers.
• Facilities are provided for programs to manipulate aileron and rudder trim values, even when the latter are
assigned to axes. The details are:
Byte 04A0 is written to activate the interception:
2^0 = 1 to disconnect aileron trim (2EB0) from FS
2^1 = 1 to disconnect rudder trim (2EC0) from FS
This byte will be cleared and the connection restored (together with the most recent axis values) within
about 10 seconds of it being written non-zero, so you need to write this every few seconds.
Double 0480: Read-only, the aileron trim axis input is available here.
Double 0488: Read-only, the rudder trim axis input is available here.
Double 0490: Write the required aileron trim value here: it will be sent to the FS if and only if the axis is disconnected
above.
Double 0498: Write the required rudder trim value here: it will be sent to the FS if and only if the axis is disconnected
above.
Note that the values are in radians, and the range seems to be –0.2 to +0.2.
• A bug in the FSUIPC-added controls for ADF in-use frequency decrements is fixed. Decrementing from x00 to
(x-1)99 actually resulted in some completely incorrect value.
• When the International options in FS are set for altitudes in metres, the Miscellaneous option for the autopilot
altitude fix went wrong—it computed things in the wrong units! The error resulted in levelling off at the wrong
altitude, and the V/S sign reversal resulted in differences in the target V/S too.
• AI aircraft are now not discarded from the TCAS tables when they appear to be below ground, unless they are
computed to be more than 3 metres below. This is to try to allow for those small scenery ground level
discrepancies that sometimes occur, resulting in AI aircraft sinking into the tarmac but still operating normally.
• In FS2004 only, the TCAS table value for AI traffic’s COM1 radio frequency now gives 0x9999 (reading a
frequency of 199.99) when the specific aircraft are placed into ‘slew’ mode. (Slew mode is used for some
control of AI traffic by programs like AIsmooth, AIseparation and Radar Contact 4). TrafficLook will therefore
now show those aircraft being so controlled.
• The spoiler (speed brake) calibration facility allows a specific zone to be calibrated for the Arm détente. An
improved method of driving the Spoiler (speed brake) is activated when it is calibrated with such a zone. The
range below this Arm zone is always all ‘spoilers down’ (zero), but the range above the Arm zone now exactly
matches the range actually supported by FS—which is 7% to 100% deployment. The difference will be seen by
the smoother operation of the spoiler handle on the airliner panel quadrants.
• Extensive axis assignment facilities have been added, allowing a range of things to be done with joystick axes.
These facilities also work for PFC axes as long as the PFC.DLL is version 1.994 or later.
• The flaps calibration facilities now allow specific individual calibration for each détente on a proper flaps axis
implementation.
• Additional FSUIPC-implemented controls are added to send Key Presses to FS, for use in some of the facilities
above but also to make it easier than programming the Windows keydown and keyup sequences needed by the
IPC facilities at offset 3200. These new controls are available in the Buttons and Axis control options drop
downs, but, more importantly, they can be easily sent via offset 3110 from external programs, including across
WideFS links. The controls are:
1070 Key Press and Release
1071 Key Press/Hold
1072 Key Release
The parameter for this gives both the keycode and the shift codes—both as listed in the Advanced User’s guide.
The parameter must hold the shift code in bits 8–15 and the keycode in bits 0–7. In other words, the value is:
Keycode + (256 x Shift code)
A shift code of zero is the same as 8 (i.e. no shifts).
To make it easier in the dialogue drop-downs these values can be entered as ‘Keycode+Shiftcode’, that is
literally with the ‘+’ as a separator. Examples of this occur in the Axis Calibration section of the User guide.
• FSUIPC now delays the initial setting of the “touchdown V/S” value at offset 030C until it sees the simulator as
“ready to fly”. Hopefully this will remove invalid spurious values appearing at that offset initially.
• A delay of five seconds is now imposed on the checking of access accreditation for aircraft Gauges when a new
aircraft is loaded. This will hopefully remove any problems whereby the same correctly accredited gauge,
installed in two aircraft, is spuriously rejected by FSUIPC when changing from one to the other of those aircraft.
• A special facility is provided to apply patches to FS2004’s “ATC.DLL” module, to forcibly prevent the FS ATC
windows from appearing at all, and to prevent any of three different crashes which can occur in ATC.DLL when
running FS with third party ATC programs and FS’s ATC turned off.
This facility is activated by adding the line “RemoveATC=Yes” to the [General] section of the FSUIPC.INI file.
Note that this should only be used when you absolutely do not want FS’s ATC to apply to your flights, for
instance, when you use only Radar Contact, or possibly VoxATC.
This facility does not prevent the ATC voices, the AI traffic vocal interactions and ATIS read-outs. You may
want those as additional chatter in any case, but if not just turn off the ATC sound, or turn it down, in FS’s
sound options.
• FSUIPC can apply delays to any axis assigned through its Axis Assignment facilities. The delay is limited to a
minimum of 2 x the axis polling interval (PollInterval, which defaults to 10 mSecs) and a maximum of 200 x
this interval (i.e. 2 seconds with the default polling interval). Delays for axes have to be edited in the INI file, as
described in the Advanced User’s guide. There is no facility to change them or even see them in the option
screens.
• An error in the FS2000 mapping, making the value at 2F78 (AI bank) the same as the value at 2F70 (AI pitch) is
fixed. This has always been an error, only just discovered over six years later! ;-)
Version 3.53 (1st January 2006)
• Now validates FSUIPC and WideFS registrations issued during 2006. (Version 3 of FSUIPC wasn’t originally
expected to have to last this long, as normally one sees a new version of Flight Sim every two years!)
• Fixes a problem where flights being saved could not be set as 'default' at the time of saving.
Oddly, this problem has been present, on and off, in FSUIPC for at least five years, across three versions of FS,
but was not actually reported until the day 3.52 was released. It is due to the intercepted Save Flight routine in
FS being a function, returning a value, whereas it was defined as a procedure without a value in the header files
used in FSUIPC.
• Fixes an error in the facility to write the "tug speed" at offset 31FC. Also notes about these two tug controls are
added in the next Programmers Guide edition—they appear to be related to glider aircraft towing, not to the
pushback option as I originally thought when I placed the offsets so carefully! Wink
• Provides the following new offsets, all read-only:
0300 2 VOR1 DME distance, 16-bit integer, nm * 10 [FS2002+]
0302 2 VOR1 DME speed, 16-bit integer, kts * 10 [FS2002+]
0304 2 VOR1 DME time to station, 16-bit integer, secs * 10 [FS2002+]
0306 2 VOR2 DME distance, 16-bit integer, nm * 10 [FS2002+]
0308 2 VOR2 DME speed, 16-bit integer, kts * 10 [FS2002+]
030A 2 VOR2 DME time to station, 16-bit integer, secs * 10 [FS2002+]
030C 4 Vertical speed, copy of offset 02C8 whilst airborne, not updated whilst the “on ground”
flag (0366) is set. Can be used to check hardness of touchdown (but watch out for
bounces which may change this). [FS2002+]
The first six are provided just so that simple display systems, for instance those using my own GFdisplay
program, can display the DME values with ease. They will normally be the same as those in offsets 0C29 ff, but
possibly with greater range.
Version 3.52 (December 2005)
• The 3.51 fix in the wind smoothing algorithm was in error, making matters worse rather than better. In 3.52 the
correct fix has been found and applied. In this version the winds, when smoothed, still have the correct cross and
head components, and the results when the direct wind control option is exercised (as by ASV) are also good
without the sudden swings in direction. Even better, the problem with direct wind control on the ground has
been fixed, so everything is now fully compatible.
• In FS2004 the FSUIPC Wind options page now sports a new option, on the right-hand side, to limit the amount
of wind variance which can be applied by external weather programs. Wind variance is fluctuation in wind
direction. It is suppressed completely in any case if you suppress all gusts, but otherwise it isn't subject to
smoothing.
The new Wind control option allows the user to enforce a limit on the wind variance being set by external
weather programs. The limit placed on variance is progressively lower as wind speed increases. Winds of 0–5
knots will be allowed to vary fully, but 100 knot winds will have the variance limited to 10 degrees either way.
This option is off by default, and is saved in the INI as LimitWindVariance.
• The facility to disconnect the joystick axis controls (offsets 310A and 310B in the FSUIPC interface) is
extended to allow this disconnection not to be applied to the older FS98-compatible axis controls, These are:
AILERON_SET
ELEVATOR_SET
ELEVATOR_TRIM_SET
RUDDER_SET
THROTTLE_SET
and the four THROTTLEn_SET controls.
This is intended to allow those add-on aircraft that implement their own Autopilot to use these controls to set the
relevant values, instead of writing them directly to the specific offsets.
To activate this facility the program/gauge/module must set the 2^1 bit in the byte at offset 3109, at the same
time as setting the axis connection override bits in 310A/310B. The setting expires in the same interval.
Note that if the users of such aircraft calibrate the four separate throttles in Page 3 of the FSUIPC options they
will also need to check the option at the bottom of that page, to prevent FSUIPC changing the
THROTTLEn_SET values sent by the separate autopilot.
Version 3.51 (December 2005)
• This version implements a much more efficient method for controlling AI aircraft in FS2004 (only). The
relevant control facility is being used by the latest version of Radar Contact, and also by programs such as AI
Smooth and AI Separation. It looks like the new methods used in FSUIPC have quite a beneficial effect on these
programs.
For FS2002 some improvement has been achieved by increasing the command queue size for AI traffic control
so that it doesn’t overflow and possibly lose commands, and also by increasing the percentage of traffic
processed per FS frame in proportion to the numbers of traffic commands pending.
In the unlikely event that the new FS2004 AI traffic control method proves unstable (it has been fine in testing),
it can be turned off by changing the INI file parameter TrafficControlDirect from ‘Yes’ to ‘No’. Then FSUIPC
will operate on FS2004 in the same way as it does on FS2002—i.e. with a larger queue and dynamic processing.
• The minimum visibility option now applies to all weather, including FS’s own local and global weather, on
FS2002 and FS2004. However, if it is being imposed on FS’s own weather the current visibility will not be
reported correctly in weather reports such as those read by external programs and ATIS in FS. This is because
the only way of imposing the visibility minimum is by changing the effect at the end stage, the rendering at the
aircraft, and not in the weather system as such.
• A facility to specify a minimum icing level in clouds set by external weather programs is provided, but this is
only applicable by editing the INI file. The parameter is MinIce and takes the same value range as MaxIce with
zero and negative values turning it off.
• Engine 1 Torque and Fuel Pressure offsets (08F4 and 08F8) are now working properly again for relevant aircraft
as well as helicopters.
• Ground based aircraft showing as below sea level did not appear in the TCAS tables, even though they were
legitimately at that altitude (for instance at Amsterdam and Rotterdam). This is because FSUIPC filtered out
aircraft below ground to remove some poorly behaved AI which descend through the surface and continue to fly
underground.
This didn't come to light until experimentation with putting individual AI aircraft into Slew mode sometimes led
to them disappearing from FSUIPC's list even though they were still clearly present in FS. Apparently the
altitude for aircraft in Slew mode is measured from the wheel touch points, whereas in normal mode it is from
the central datum.
• A long-standing bug is fixed in the wind smoothing algorithm which could occasionally make the actual wind
effect at the aircraft 180 degrees opposite to that shown as the ambient wind (e.g. by Shift+Z). Additionally this
fix makes the wind direction written to offset 2DE0 have the correct effect at the aircraft.
• The slopes associated with axis calibration are now correctly saved to the FSUIPC.INI file even if nothing else
in the Joysticks pages has been changed.
• If a slope is applied to a reverser axis in FSUIPC’s Joysticks facilities, the reverser would behave very weirdly.
The slope facilities are only intended to work for symmetrical axes, or only on the positive parts of asymmetric
ones. Reversers have no positive parts, so the application of slopes went wrong. In this version FSUIPC ignores
slope application to reversers and, in fact, hides the slope buttons for them.
• A bug in the facilities for additional co-pilot controls (AileronB, ElevatorB, RudderB, and so on) is fixed. In
recent versions merely adding these would have prevented any joystick calibration inside FSUIPC, and thus
failing to correctly apply the co-pilot values.
• Wind gusts set through the New Weather Interface (NWI) are now limited to prevent outrageous variations. Any
gust value specified above 30 knots is limited to 8 times the layer’s wind speed.
• The mapping tables are improved to prevent several previously possible accesses into parts of FS2004 which are
not always present, thus causing program crashes with ‘Access Violation”.
• The Engine 1 Rotor RPM value at offset 0908 is now working for helicopters which are made without using the
actual helicopter model type, such as the default Robinson R22.
• For FS2004 only, the dew point at the aircraft is now provided at offset 0E8E, as a 16 bit value giving degrees C
times 256. This is calculated by FSUIPC, not provided by FS, by linear interpolation between the two nearest
temperature levels defined for the location—or the next two above when below the lowest, or two below when
above the highest. Note that if FS does not use linear scaling for temperature between the layers then this value
will only be an approximation.
• “Adventure” texts displayed in the FS screen using FSUIPC offsets 3380 and 32FA can now be forced to use the
white text, even if the user has not selected that option. This is done by adding 16384 to any zero or positive
value written to 32FA, or subtracting 16384 from a negative value. The effect only applies to the message
written in this instance.
Note that this facility is only compatible with version 2.14 of AdvDisplay or later.
• More precise values for the VOR glideslope and localiser needle offsets are now available, though they do not
seem to be updated much more often than the older FS98-compatible single byte approximations. They are all in
32-bit ‘float’ format as follows:
2AAC VOR1 LOC needle, 4-byte FLOAT32
2AB0 VOR1 GS needle, 4-byte FLOAT32
2AB4 VOR2 LOC needle, 4-byte FLOAT32
2AB8 VOR2 GS needle, 4-byte FLOAT32
Version 3.50 (August 2005—there was no 3.49) includes these fixes and enhancements:
• Joystick calibrations and mappings can be made specific to different aircraft, so that you can calibrate precisely
for different characteristics in vastly different aircraft types. All of the entries in the [JoystickCalibration] section
of the INI file can be made specific to one particular aircraft (by name) or a number of aircraft (by shortening the
name), much like the already-published facilities for aircraft-specific Keys and Buttons. Unlike Keys and
Buttons, however, the calibrations cannot be mixed. The whole section is applied when the name matches—if no
name matches then the defaults, in the original section, apply.
• Response curves (“slopes”) can now be applied to any of the calibrated axes, not only the main flight controls.
There are inverse slopes provided too (i.e. ones with steeper responses near centre, smoothing out at the
extremes). For those axes that utilise off-centred centres (reverse zones) the curve below centre is kept linear,
only the main section is made variable.
• The calibration curve reference number (–15 to +15) is displayed on the slope selection dialogue so that the
same slopes can be more easily applied to a group of like axes (such as the four separate throttles).
• The “Roger Wilco” (also AVC and SB) PTT control, assignable in the Keys and Buttons drop-downs, operates
both locally and via WideFS without necessitating any use of the “KeySend” facilities nor, if the latest WideFS
is used (6.50 or later), any parameter changes in the WideClient INI files. The PTT requests are broadcast to all
Clients.
• Support for Squawkbox 3’s private (PVT) message PTT is added for assignment in both the Keys and Buttons
controls drop-downs. This also is automatically applied to all WideFS clients. [NOTE: this needs SB version
3.0.4 or later].
• An error which caused CFS2 to crash when the FSUIPC options were opened is fixed.
• Problems registering FSUIPC with long user names or email addresses are fixed by enabling the entry fields to
scroll if necessary. The limit is 127 characters for each.
• An error preventing the co-pilot axis assignments from taking effect is fixed.
• Errors in the helicopter-specific engine data at offsets 08F0 to 08F8 are fixed.
• Additional data now provided through the IPC interface includes:
32F8 bits 4-7 can be used to prevent reversers activating (e.g. simulating a hydraulics failure).
32F9 (one byte) is set non-zero when the brakes are used. This could be accessed to determine when to
automatically disengage auto-brakes, for instance.
0C4D VOR1 type code
0C70 VOR2 type code
The bits in these two single byte values are used as follows (bit 0 = 2^0):
0 DME available
1 TACAN
2 Voice available
3 No signal available
4 DME transmitter at GS transmitter
5 No back course
6 GS available
7 This is a localiser (else it’s a VOR)
0C52 VOR1 signal strength
0C62 VOR2 signal strength
These are both 32-bit integers, units unknown.
089A Secondary throttle 1 control
0932 Secondary throttle 2 control
09CA Secondary throttle 3 control
0A62 Secondary throttle 4 control
These are the same as the main throttle controls (at 088C, 0924, 09BC and 0A54) except that they
are switchable via offset 310A/310B just like joystick inputs, and have their values readable (even
when disconnected) at 3330–3336, like the separate axis controls do.
• The NWI (New Weather Interface) reading system is changed so that the CCxx offsets are always populated
with weather. Before any reads are performed, or after an illegal request (e.g. ICAO is not a Wx station), the
weather here will be that at the aircraft position, and the Lat/Lon values will reflect this. After a legal request,
the resulting weather continues to be updated every second even after the signature times out—previously this
update would cease after a few seconds.
Note that this change means that the timestamp in CC24 is always being updated at one second intervals. If
programs want to check that the weather provided genuinely is for the location they requested, they should read
the ICAO and/or Lat/Lon back within the same Process call as reading the weather data itself, and check that
they are as requested.
Version 3.48 (April 2005) includes these fixes and enhancements:
• Fixed a serious bug in the Buttons processing, which could make buttons programmed for aircraft specific
actions as well as general actions both activate when pressed.
• Fixed another bug in Buttons, where changing programming between Key and Control actions, or vice versa, in
the FSUIPC options could create duplicate actions in the INI file.
• FSUIPC now retains comments at the end of Button program lines, provided they begin with a semicolon (;).
There's a limit of 63 characters on the comment itself.
• Comment lines can be included in the [Buttons] sections, provided they are numbered just like true parameter
lines. This determines their position, which is then retained. The comment begins with a semicolon (;), so the
format is n=;...
• The “Extend METAR Max” option for visibility is changed in FS2004 to set a minimum of 10.1 miles for both
metric (9999) and imperial (10SM) visibility specifications. This is in order to get the visibility past the FS2004
threshold for “grey skies” which appears to be 10sm. In FS2002 and before it was around 4sm, so it wasn’t a
problem in this respect.
• An option to exclude calibration of the old THROTTLEn_SET controls is now provided on the 4 throttles
calibration page. This ensures that FSUIPC leaves those controls alone and only operates on the newer
AXIS_THROTTLEn_SET controls. Users of the add-on ERJ-145 aircraft will find that this allows the full FSUIPC
calibration on separate throttles to be used with no problems.
• A new joysticks options page has been added for up to 4 separate reverser axes. by default these are all assigned
to the equivalent separate Mixture axes, which can be assigned in FS's own dialogues. An option is provided to
activate these reverser actions for Jets only.
• The TCAS_DATA2 structure now contains additional data. The "spare1" field is now "short sPitch", containing
the aircraft pitch in degrees * 65536 / 360, and the "spare2" field is now "short sBank;", containing the aircraft
bank in degrees * 65536 / 360. Unlike the rest of TCAS_DATA2, these fields are valid in FS2002 as well as
FS2004.
• Comprehensive facilities are provided to allow applications control over the AI aircraft TCAS data options.
Details are provided in the latest revised Programmer's Guide. (New SDK 25th release is available).
Version 3.47 is a major release (maybe it should have been 3.50), and includes:
• For FS2004 only, this version includes a new facility on the Winds page to select a different way for the "taxi
wind" option to operate. Instead of simply reducing the speed to 1 knot, it eliminates or reduces the cross-wind
only, and does this proportionally to the ground speed (over 20 knots) and aircraft gross weight.
This is selected by a new checkbox. It can be switched on and off in the same way as the 1 knot taxi wind, and
in automatic mode it operates within 500 feet of the ground, not just on the ground.
This facility is recommended as a better alternative to the rather crude 1 knot taxi wind method for those looking
for more realism.
• FS time setting via the FSUIPC interface has been made safer in FS2004. In FS versions up till FS2004 the
simulator was reacting correctly to direct changes to the Global values for Zulu hours, minutes, day and year. It
looked to be working correctly in FS2004 as well, but apparently there were insidious side effects for AI traffic,
and these could sometimes cause FS to hang when traffic was reloaded or changed any time later in the session.
In this version, for FS2004 only, FSUIPC intercepts writes to the time locations and uses them to issue the
appropriate commands to FS to change the time. This makes the new time correctly propagate through the AI
system (and may trigger a traffic reload), and avoids subsequent otherwise inexplicable hangs.
Designing this in a way which avoids the problems with AI traffic reloading causing hangs, yet doesn’t create
too many unwanted pauses for reloading traffic whilst flying, has proved quite a thorny problem. So, I am
providing a compromise as the default solution, and also allowing you to select between two other modes should
you desire.
The default is this: any time change of more than one minute, or any change at all to the hour, day or year,
results in propagation through FS and will therefore trigger at least an AI traffic reload, maybe more. This mode
is “TimeSetMode=Partial”.
The options, selectable only by editing the FSUIPC.INI file, are:
TimeSetmode=On: all changes to minutes, hours, day and year are propagated throughout FS. This
is how the interim test release FSUIPC 3.465 behaved.
TimeSetMode=Off: no changes to any of the date/time values are propagated at all. This is how all
versions of FSUIPC before 3.465 behaved.
Also, in order to try to prevent AI Traffic loading hangs when instigated by using the FSUIPC traffic density
controls, FSUIPC now propagates the complete Zulu time and date immediately before reloading the traffic if
the new density value is higher than the old value.
• The filename (without the path) of the last saved FLT file is now available at offset 0400. This is an ASCII
string, terminated by a zero byte, of maximum length 128 bytes inclusive. The count in offset 3BD2 should be
used to determine when this has changed.
Note that this is an alternative to using Command 3 of the path reading facility in offset 0FF0. It may be
preferable now that more programs are using that facility, as it avoids queuing whilst waiting to place a
command when some other program is there first.
• The elevation, in metres, of the two DMEs are now available for FS2002 and FS2004 in the following offsets:
DME1 (i.e. the DME tuned by NAV1): 16-bit integer at 088A
DME2 (i.e. the DME tuned by NAV2): 32-bit integer at 083C
• The engine RPM for the Robinson piston model in FS2004 is now available in two forms, in the N1 offset
(0898) as a value which when scaled gives the RPM, and in the N2 offset (0896) as a percentage of the
maximum multiplied by 16384. Note that the maximum can be exceeded -- the Robinson model seems to allow
up to 110%, which would be represented here by 18022.
• The FS2004 rotor clutch switch (as in the Robinson R22) can now be read and controlled via a single byte
offset, 0889. This is 0 for “off” and 1 for “on”.
• The “Key press not to be held” checkbox on the Buttons programming page is now correctly checked by default.
The option has always been defaulted on, but the checkbox was not correctly initialised.
• A very long-standing error in the application hot key facilities is fixed. This error allowed extended key presses
(i.e. those detected following the main hotkey) to be passed through to FS despite the ‘pass through’ option not
being selected by the program
• The button and key programming facilities are improved in the following ways:
1. FSUIPC now does not re-save the button and key sections of the INI every time they are loaded. This saves
time. Furthermore, it now retains the user’s own line numbering, making a system of numbering possible to
help with complex programming.
2. The Buttons and Keys option pages now both feature a “Reload” button to force FSUIPC to load the
settings from the INI file again. This may be more convenient than changing aircraft when developing and
testing. Using this button, the sections are then also re-written to the File, so that anything understood
differently by FSUIPC can be spotted directly. If the Reload button is used after making changes in the
dialogue, those changes will be lost—changes are not saved until the dialogue is closed by the Ok button.
3. The syntax of Buttons and Keys lines is now checked more thoroughly, and those in error have an “<<
ERROR ...” message attached to them, rather than being deleted. Such error messages are automatically
removed on reload after correction. The message contains an error number that will help pin-point the
problem. The list of such numbers is provided in the Advanced User's documentation.
4. Keys and Buttons offset conditionals can now optionally be specified with hexadecimal comparison values
(preceded by ‘x’). When FSUIPC re-writes the INI file it uses hexadecimal when a mask has been used
(masks are always hexadecimal), and decimal when not.
• The Logging page now features an extra logging option, for detailed Button logging. This allows sophisticated
button programming to be more easily debugged.
• The “Minimum Weather Defaults” button has been removed and replaced by Weather Settings Off. The
original button set defaults for all options except for weather, where it set less that the defaults. This change
allows users to retain their non-weather related options and simply set minimum weather ones. To get the same
effect as before you’d need to first set the normal defaults with the left-hand button, then set weather options off
with the right-hand button.
• A bug is fixed that prevented the FS single “Brakes” control being used if Throttle 1 was calibrated in FSUIPC’s
separate throttles page.
• The “REV” (reverse) setting for individual FSUIPC joystick calibrations is now correctly saved in the INI file
and re-established in subsequent sessions.
• An error is fixed in the programmable “flight freeze” facility, controlled by offset 3541. In error, if this was
enabled but then stopped early by writing zero, the next time it was enabled it placed the aircraft at the
previously frozen position.
• The feedback control for aircraft speed (offset 0730) now optionally operates with Ground Speed as the target
instead of Air Speed. This may be useful for controlling taxi speeds. To indicate GS in place of IAS set the 2^3
bit in the flags.
• The feedback control for aircraft banking (offset 0718) now automatically enables FS’s auto-coordination (auto-
rudder) when operating. The previous setting of this is restored when the banking control is stopped.
• The axis disconnection facilities in offsets 310A and 310B are augmented by the addition of bits for the four
separate throttles:
310A bit 6 Throttle 1
310A bit 7 Throttle 2
310B bit 6 Throttle 3
310B bit 7 Throttle 4
• The facility to disconnect throttle axes is now available for programming on buttons or keys via three additional
FSUIPC controls:
1065 Throttles off
1066 Throttles on
1067 Throttles toggle
These may be useful for disconnecting joystick axis throttles which, through jitter, cause sensitive auto-throttle
controls to disconnect.
Note that the setting of the throttle axis disconnects may be overridden by currently running programs using the
same facilities. For example, the Project Magenta MCP will re-connect throttles when its auto-throttle is not
operating, and vice versa.
• Additional FSUIPC controls are provided in FS2004 (only) for separate engine auto-starts:
1061 Engine 1 Autostart
1062 Engine 2 Autostart
1063 Engine 3 Autostart
1064 Engine 4 Autostart
These operate in almost exactly the same way as the built-in FS engine autostart, but only on the specific engine.
• The access key checking for gauges now allows a few seconds leeway for accesses from a gauge after it
theoretically should have been unloaded during an aircraft change. It seems that the odd one or two gauges take
longer to close and disappear from memory. If they do happen to access FSUIPC after a new aircraft has started
loading they occasionally triggered the “unaccredited” error.
• User keys issued with built-in expiry dates did not work correctly in FSUIPC versions 3.411–3.452, even if their
expiry date had not been reached.
• The automatic access registration for programs is made more flexible by checking for valid keys in both the
Version Information (Comments) field and in the FSUIPC.KEY file. The first valid one is now accepted.
• The optional fix for control acceleration now operates in both the old way (intercepting FS controls) and in the
way introduced in 3.45 (hooking the control via the official Panels facilities). Hopefully this ‘belt and braces’
approach will cover all cases.
• A serious bug in the FSUIPC.INI Button and Keys facilities for offset conditionals (introduced in version 3.41)
is fixed. This affected any conditional with a mask specified.
• When the same button is programmed in the general [Buttons] section of the INI file and in an aircraft-specific
section, the latter programming should supplant all of the former when that aircraft is loaded. Unfortunately,
through a bug, this did not apply to the repeats of a program line specifying repetition (R). This is fixed.
• The classification of AI traffic into the airborne or ground TCAS tables was partly in error for AI aircraft in
“Landing” state. These were classified as airborne even after touch-down. This is fixed in this release.
• In FS2004 the visibility layer set by programs using the FS98 method of weather control had an upper level of 0
feet instead of the default (prior to version 3.41) of 6000 feet. This has only just been reported and fixed.
• The “Rev” option in the Joystick calibration facilities, to reverse the direction of the axis, was unusable on axes
with non-central centres, such as throttles—it creates an incorrect centre and wrong ranges. This error is now
fixed.
• A long-standing error causing problems with some of FSUIPC’s facilities when it is used in FS98 and FS2000
are fixed. These are quite numerous -- ranging from the Monitoring not working, to the “in menu” freeze flag
not being cleared.
Version 3.45 provides these additions and improvements:
• Additional joystick calibration pages have been added to allow the three Pan axes (used in virtual cockpit mode)
to be calibrated (on page 9), and the main four Slew axes (on page 10). Note that to calibrate slew axes you need
to enter slew mode before calling up the FSUIPC options.
• The control acceleration fix option (on the Technical page) now operates differently in FS2004 and should now
also cope with XML gauges that send too many controls to FS. Additionally, on FS2004 with this option
enabled, the Select controls (normally assigned to main keyboard keys 1–4) now remain usable despite
intervening controls. This makes Engine selection and aircraft Exit toggling to work with any over enthusiastic
gauges installed. This latter action takes place over a period set by the new INI parameter, TimeForSelect,
which defaults to 4 seconds.
• Operating independently of the acceleration fix option, but still on FS2004 only, special action for pushback
direction selection is now incorporated which allows this (SELECT 1 for tail to left, 2 for tail to right) to occur
at any time when FS pushback is still in action, despite intervening controls. At last, this allows you to do things
like look out of the side windows, or start the engines, during pushback, without losing the selection of left or
right turning as part of the same pushback operation.
• For FS2004 only, the logging facilities now include Event logging (events here being defined as all FS controls
which are not axis types), and, separately, Axis logging. Both can be very useful to those seeking to understand
the actions of their buttons and keys, or to view the sorts of things some of the more complex panels do,
repeatedly, every second.
• Function Keys F13–F23 are now recognised in all parts of FSUIPC which accept key presses, whether for input
programming or for output results.
• Whether aircraft shadows are visible or not can be checked and controlled via the 16-bit (2-byte) value at
FSUIPC offset 11A4. Setting this to 1 enables shadows, 0 disables them. This applies to FS2002 and FS2004.
Thanks are due to Douglas Dawson for this discovery.
• Additional FSUIPC offsets now mapped:
2A48 8 bytes Double floating point value giving left wind fold (0.0–1.0)
2A50 8 bytes Double floating point value giving right wind fold (0.0–1.0)
2A70 8 bytes Double floating point Canopy Open indication.
• A bug which can prevent correct auto-accreditation of external (EXE) programs on Win98 or WinMe is fixed. In
previous versions the work-around would be to register the same program manually, via the “Register an
application program” button.
Version 3.44 includes these changes:
• Fixed a bug in the recently-added axis Filter option. When filtering is enabled, some of the axis mapping
facilities did not work correctly.
• FSUIPC now provides a “freeze flight position” facility. This keeps the aircraft at the same latitude and
longitude for as long as it is engaged. The altitude and attitude of the aircraft is free to change, and, in fact, the
aircraft flies as normal except for not changing it’s position over the ground. This is appearently a very useful
facility for training environments.
The facility can be accessed in several ways:
(a) For program control, write a non-zero values to the one byte offset 3541. This acts as a timer – the freeze
will last for as long as this byte is non-zero. It is used as a time, counting down 1 every timer tick of 55
mSecs or so. To retain the freeze for a good time, write 255 here and do so every 5–10 seconds. Allow for
WideFS delays.
(b) Users can program an FSUIPC or two on a Key or Button, using the Keys or Buttons options. There are
three new FSUIPC controls provided:
Freeze pos on (1058)
Freeze pos off (1059)
Freeze pos toggle (1060)
This facility works with all supported versions of FS, but it only works well in FS2004. In FS2002 and before
odd things happen – the aircraft sounds move away, following the original path the aircraft would have taken.
Additionally, when the freeze is released, the aircraft jumps to where it would have got to by then. Neither of
these things happen in FS2004.
The operation is smooth, and it applies to slew mode as well, though fast slewing will tend to cause some jerks
in the slew direction.
• A new option is provided on the Technical page in FS2004 to require FSUIPC to centre (zero) the elevator input
when the Autopilot ALT hold mode is enabled or disabled. This is mainly of use for keyboard flyers, where the
original keyboard-set value for the elevator is retained, ineffectively, whilst the A/P controls the vertical modes,
but which then undesirably re-asserts itself when the A/P control is relinquished.
This option is also available on previous versions of FS, but in those cases it cannot be enabled or disabled in the
Option screens, but only by changing the “ZeroElevForAPAlt” parameter in the FSUIPC.INI file.
• FS panel GAUge file accesses to FSUIPC are now correctly recognised and registered even when they occur a
lot later than the original panel loading. This fixes some occasional problems with complex panels featuring
multiple FSUIPC client gauges.
• On FS2004, AI traffic is now generally classified as “on ground” or “airborne” according to its state and not
only its “on ground” flag.
• New offsets for VOR2 values are provided. There are now VOR2 equivalents for all of the VOR1/NAV1 values
already supplied. Here is the list and equivalents (FS2002 and FS2004 only):
VOR1 085C Latitude VOR2 0858
0864 Longitude 0860
086C Elevation 0868
0870 ILS heading 0844
0872 ILS glideslope 0846
0874 LOC latitude 084C
0878 LOC longitude 0850
087C LOC elevation 0854
0880 DME Latitude 0834
0884 DME longitude 0838
0C49 GS needle 0C6E
0C4C GS flag 0C6F
• Modules such as ActiveX .ocx which run inside another process (for instance Internet Explorer or an equivalent)
can now gain FSUIPC access accreditation like an EXE file by submitting both the given access Key and the
full module name to the 8001 offset.
• The IPC read/write logging for local and internal FSUIPC client applications now identifies which of several
such programs or modules each read and write is received from. This does not apply to privileged direct access,
such as that from WideServer.
• The standby altimeter reading at offset 3544 is now less “jerky”. Previously it was derived by differences from
the main altimeter reading, but this caused some temporary changes as the latter is adjusted. Now it is computed
completely independently.
• Offset 3518 provides the FS-set “Ambient Wind Y” value within about one second of offset 3478 being written
by an application, to control up and down drafts. This allows such a program to monitor FS/scenery arranged
updrafts and adjust its actions accordingly.
• General improvements have been made in the FSUIPC option screens. Specifically, the “REV” option which
was partially visible on the Flaps information section, and the incorrect (FS2002) Flaps increment value shown
there—on FS2004 the increment is doubled because the range is from –16383 to +16383, not from 0 to +16383
as it used to be.
• The timeouts for timestamp updating have been eliminated or reduced substantially when the command they
relate to originated from an internal DLL or GAUge. This is partly because in these cases there is no need for the
delay, but primarily because it appears that there are some such modules already released that assume that there
will be an instantaneous implementation of their requests.
• An error in the timing of the timestamp update for runway usage (offset D008) has been fixed.
• The timestamp for Weather setting (at offset C824) is now safeguarded from writing by client applications,
which could have led to them fooling themselves into believing the timestamp had changed because the request
had been actioned.
Version 3.411 was released very quickly after 3.41 to fix a newly revealed problem. Unfortunately it was
discovered, just after release, that the calibration fix was actually incomplete, and unmasks another error which was
hidden beforehand. The result is that five axis types are calibrated with a range of -16384 to +32768 (instead of -
16384 to +16384).
This means that those axes, when calibrated in FSUIPC, only utilise 2/3rds of their travel! The axes affected are:
On page 1: Throttle (only)
On Page 2: Prop Pitch, Mixture, Left and Right Brakes.
The fix was relatively easy to apply, but it has meant a re-issue.
Version 3.41 (November 2004) contains the following improvements:
• A serious bug in the Joystick Calibrations for non-centering axes is now fixed. This bug would have badly
affected FSUIPC’s calibration capabilities for axes such as brakes, single throttles, flaps and spoilers. As far as I
can tell the bug was introduced with the digital filter option in 3.40.
• Sometimes buttons programmed in FSUIPC for connections on other PCs being read through WideFS were
being actioned twice when pressed once. This is fixed.
• The default lower altitude for the graduated visibility option is now set to zero in FS2004. This is, in fact, the
most desirable value in FS2004 as it makes FSUIPC start the graduation from the top of the FS visibility layer,
no matter where it is set.
• The number of key press combinations that can be programmed is extended by the addition of two more “shift”
type keys:
Win: the ‘Windows’ key on the nearest key row, one each side (but treated the same), and
Menu: also known as the “Applications Key”, the key with a small menu symbol on it, between
the right-hand Windows key and the right-hand Ctrl key.
These can be used in combination with the other shifts (Ctrl, Shift, Tab) already available plus, of course, one of
the main keys. In the case of the Win key, one of the others must be used, and held down first, otherwise the key
will bring up the Windows start menu instead. However, the Menu can be used, in FS at least, as a free-standing
shift key, making combinations like Menu+A and so on very usable.
These new “shifts” can be used wherever FSUIPC supports key programming, whether as hot keys for FSUIPC,
hot keys for applications (using new bits in the IPC interface), or as part of the Key or Button programming
(both input and output).
• New FSUIPC controls for in-use radio frequencies are added to the list available in the Buttons and Keys
programming drop downs for the following functions:
1030 Com1 use whole inc 1044 Nav2 use frac inc
1031 Com1 use whole dec 1045 Nav2 use frac dec
1032 Com1 use frac inc 1046 Adf1 use whole inc
1033 Com1 use frac dec 1047 Adf1 use whole dec
1034 Com2 use whole inc 1048 Adf1 use frac inc
1035 Com2 use whole dec 1049 Adf1 use frac dec
1036 Com2 use frac inc 1050 Adf2 use whole inc
1037 Com2 use frac dec 1051 Adf2 use whole dec
1038 Nav1 use whole inc 1052 Adf2 use frac inc
1039 Nav1 use whole dec 1053 Adf2 use frac dec
1040 Nav1 use frac inc 1054 Xpndr low NN dec
1041 Nav1 use frac dec 1055 Xpndr low NN inc
1042 Nav2 use whole inc 1056 Xpndr high NN dec
1043 Nav2 use whole dec 1057 Xpndr high NN inc
• The IPC offset increment/decrement controls are augmented by four new ones, operating cyclically (i.e.
increment at the maximum cycles to zero, decrement at zero cycles to the maximum). These are useful when
only one button is available to select between a small number of choices. Full details are included in the
Advanced User’s Guide.
• Button and Key programming can now be taken to a new level of sophistication by having actions conditional
upon FSUIPC offset values. This can only be done by editing the FSUIPC.INI file, and the FSUIPC
Programmer’s Guide (from the SDK) is needed as reference for the offset usage, but the flexibility of the
approach makes many things possible. Full details, along with some simple examples, are provided in the
revised Advanced User’s Guide.
• To allow good use of the conditional facilities in Key programming, the maximum number of Key parameters
that can be processed at any one time is increased from 256 to 1024.
• Bad wind values that are overridden by limits from the Winds option page are now only logged when Weather
logging is enabled.
• The Flight loading and saving operations activated through IPC offset 3F00 are now not actually actioned in-line
during the IPC call from the application, but are dealt with via the standard FS messaging system. This avoids
timeouts over the IPC interface which, by default in the library code provided, may result in fatal retries.
• Time-stamped data read operations (those for FS paths or filenames, runways in use, and weather at a location)
are now made more reliable, especially when used over WideFS links, by delaying the timestamp update for a
short time (100–300 mSecs depending on which operation). For best use of this the latest WideFS should also be
installed (6.41).
• Write requests to the IPC interface are now discarded if the offset specified is less than 0x0010 or the size of the
request is greater than decimal 8192. This is to avoid crashing FS through slightly misbehaving applications.
• Occasionally the second running instance of the same program was not correctly accredited with an unregistered
FSUIPC even though the access key was correct. This only happens with programs providing this key via the
“Comments” field in the Version information, and is now fixed.
• Carb temperature values are now accessible, in degrees Rankine (double floating point format) in offsets 3828
(engine 1), 3768 (engine 2), 36A8 (engine 3) and 35E8 (engine 4).
• The user aircraft’s “ATC Model” name is available, as a string of up to 24 characters including a terminating
zero, at offset 3500.
Version 3.40 (October 2004) has many little improvements and new facilities, and it should work fine with the
forthcoming FS2004 update announced by Microsoft—if not, a revision will soon follow. The new facilities,
improvements and corrections incorporated are:
• A simple digital filter option is now provided for all Joystick axes calibrated through FSUIPC. This attenuates
changes faster than around 2Hz and should help reduce or even (hopefully) eliminate unwanted jitter. The filter
is either on or off (via a checkbox), no adjustment currently being provided.
• The Joysticks section now includes the option to map a single Mixture control to the 4 separate mixture controls,
thus providing the ability to calibrate for a ‘central’ idle position with a minimum or cut-off range below.
• All axes in the Joysticks section now include a checkbox to reverse the direction in which the control operates.
This reversal is done after the calibration is applied, so the numbers shown still increase left-to-right, but you
will see the effect on the OUTPUT value.
• The default assignment of the FSUIPC Reverser axis to the FS Mixture control is extended to cover both old and
new FS mixture controls—apparently the GoFlight throttle quadrant, for instance, uses the older control
(MIXTURE_SET) not the more recent AXIS_MIXTURE_SET.
• The TCAS data selection option in the FSUIPC Technical options page now also allows the aircraft
identification string to be its ‘Model’ name.
• A facility to make FSUIPC perform one-off actions when FS is first loaded and running (ready to fly) has been
provided. This is by programming a real or imaginary Button. Adding the line “InitialButton=j,b” to the
[Buttons] section on FSUIPC.INI does the trick. The values of j (0–255) and b (0–31) can specify a real joystick
and button, or a non-existent one, it doesn’t matter. Real ones can have an action assigned on-line, in the Buttons
option page, but multiple actions for any button, real or not, can be accomplished in the INI file as usual.
• The [Buttons] and [Keys] sections of the FSUIPC.INI file are now re-processed completely whenever the user
loads a new aircraft. This allows those programming such things in the INI file (rather than in the FSUIPC
option screens) to make changes and then try them out without having to re-load FS. With most text editors it is
even possible to keep the INI file open whilst testing.
• FSUIPC-added controls as well as FS controls can now be used by application programs, via offset 3110, with
the exception of the Offset ones (for which, of course, there is no need). The relevant control numbers are as
listed in the FSUIPC Advanced Users’ document.
• New FSUIPC offsets are provided to support a standby altimeter, where the barometric pressure setting can be
different from the built-in FS setting. These offsets are 3542 for the pressure setting (the input) and 3544 for the
resulting altimeter reading (the resulting output, maintained). These offsets are directly equivalent to the offsets
0330 and 3324 for the primary altimeter.
• For FS2004 only, the full frequency range 100.0 to 1799.9 can be applied to ADF1 via FSUIPC offsets. Prior to
this the more restricted range applicable to FS2002 and before was applied (200.0 to 1699.9).
• Module and gauge access registrations via offset 8001 now always result in an “ok” or “invalid” Log message,
identifying the Module or Gauge concerned. This is only done when the data at 8001 is changed, so repeated
attempts don’t fill the disk too fast! The messages occur even with a fully user-registered installation of
FSUIPC, making testing a bit easier for Module and gauge programmers.
• A new method of interfacing Modules and gauges to FSUIPC has been implemented which is faster for FSUIPC
when checking permissions, and also works from any thread in a multi-threaded gauge or Module. The
programmer is still responsible for protecting the data areas used, via suitable interlocks. The new system is used
automatically when gauges and Modules are compiled with a new version of the ModuleUser library (or its
source code), available in an imminent SDK update, but be warned—once so compiled, the module or gauge
will not work with versions of FSUIPC earlier than 3.328.
• The button ‘repeat’ option didn’t work for buttons connected via WideFS. This is fixed.
• The button ‘PollInterval’, defaulting to 25 mSecs, seems to create assorted problems at that rate in operating
systems other than Windows XP. To counter these problems, the default rate is now 50 mSecs on any operating
system other than XP.
• The option to allow a joystick elevator trim axis to be automatically disconnected when the FS autopilot is
enabled in a vertical control mode is now working properly.
• The weather options control mechanism (via offset 3127) is now working correctly.
• An error giving rise to spurious NW_SET override messages in the FSUIPC Log is fixed.
• The .FLT (flight) path reading facility at offsets 0FF0/1000 now works correctly with non-English versions of
FS2004.
• Users of my PFC.DLL driver lost elevator trim axis control when the PFC option for suppressing throttle
interference from regular joysticks was enabled. This mostly did no harm at all, except when using aircraft such
as some of the PSS Airbus series where the autopilot controls vertical pitch solely using the trim axis. This is
fixed in this version of FSUIPC.
• Assorted problems when running FSUIPC 3.xxx in CFS2 are fixed. These were introduced some time back.
FSUIPC now seems to work fine with CFS2.
• The FS2004-only facility to set and refresh the Ambient Wind Y (i.e. vertical) value at offset 3478 has been
made to work reliably and without odd intermittent lapses when the prevailing value took over.
• The FS2004-only facility to directly set the ambient wind via offsets 2DE0 and 2DE8 now works much more
reliably and smoothly.
• The FSUIPC offset controlling the Engine 1 Anti-Ice (offset 08B2) in error switched all 4 engine anti-ice
controls in FS2004 (only). This is fixed.
• In FS2002 and before, data areas were available for all 4 engines even for single or even no-engined aircraft. All
that happened was that the values were left ‘frozen’. Reading and writing values for a non-existent engine did no
harm. In FS2004 this has changed. It appears that the data structures are allocated with a specific size to support
the correct number of engines. Reading beyond the available structure may or may not cause a crash, writing
beyond may cause a crash, but worse, it may cause other unpredictable things to happen depending upon what
data happens to follow. To fix this, FSUIPC now ignores reads and writes to specific engine-related areas if the
relevant engine doesn’t exist.
• The timestamping system used to validate some requests made to FSUIPC through the IPC interface has been
improved in several ways, including guaranteeing that the timestamp does change once and once only when the
associated data changes.
• A facility to read complete identifying names for AI aircraft has been added in the IPC interface. This is another
use of the area at offset D000 previously only used for detecting runways in use. Five commands are available,
to read the tail number, the airline + flight number, the ATC type and (as a separated string) the model, the full
aircraft title, and the ATC type with the 3 last digits of the tail number. Full details are published in a revised
SDK, which is imminent.
• The drop-down lists of FS controls in the Keys and Buttons pages of the FSUIPC options could display the
wrong control when the FS ‘CONTROLS.DLL’ includes duplicate entries in its tables. This appears to be the case
in FS2004 with the control “Add Fuel Qty”, making all following controls (numerically, not by name) go one
out. In the fixed version, FSUIPC deals with the duplicates properly.
• FSUIPC offset 32F8 (one byte at present) provides options to inhibit certain aircraft operations, for use in
breakdown or precise control implementations. Currently the following are available:
2^0 Set to inhibit flap operation
2^1 Set to inhibit spoiler operation
2^2 Set to inhibit gear operation
These stop operation from axis and button controls very well, and also from key presses and mouse clicks—but
in these latter two cases it is done by detecting a change in the system and changing it back. This works, but the
device will sometimes try to move, and this can be noticeable, especially for some reason with the flaps—the
indicator gives a little jump and the noise briefly starts.
Version 3.30 (July 2004) is a major release with many changes, both large and small. Here’s a summary:
• The Wind facilities are now extended on FS2004 to allow proper wind smoothing, taxi winds and surface wind
limiting to be applied in the weather actually simulated at the aircraft, no matter where the weather originates.
Facilities are included to delay the smoothing for a specified number of seconds after all weather is cleared, and
to stop the smoothing altogether when the aircraft is not airborne.
• The joystick calibration facilities have been extended in the cases of aileron, elevator and rudder to allow one of
a selection of response curves to be applied. These allow the response to be slower (less sensitive) near the
centre and faster (more sensitive) near the extremes.
• The facilities for setting bits and values in FSUIPC offsets, via special FSUIPC controls, is extended to provide
incrementing and decrementing by any values with defined limits. “Offset” controls for both unsigned (U) and
Signed (S) Byte and Word increment and decrement are now included in the available Offset controls for both
Key and Button programming. This is fully documented in the Advanced User’s guide.
• A problem with the Traffic controls added for Button and Key programming, which in particular could cause FS
to crash when used to re-instate a higher level of AI traffic, is now fixed.
• The button repeat timing is now more properly regulated. It was sometimes far too fast in recent releases, due
mainly to the increased button polling rates being used by default. The repeat rate used can be set by a
“ButtonRepeat” parameter in the main [Buttons] section of the INI file, with a range of 1–100, with 0 meaning
no restriction. The default of 20.
• A new parameter, “PollEpicButtons=No”, can be added to the main [Buttons] section of the INI file if FSUIPC’s
polling of EPIC buttons is causing problems. This really only applied to ISA EPIC users still using my old VXD
under Windows 95/98/Me.
• Rudimentary aircraft autopilot feedback control facilities are included in FSUIPC. Pitch and bank control are
both working reasonably well, but the speed and mach control really needs more work. This facility is operated
through new offsets and will be documented in the FSUIPC SDK in due course.
• Some serious omissions are fixed for FS2000 users, Anti-Ice switch control via the IPC interface being the main
one.
• An error in the FSUIPC-added “Offset” controls (for writing directly to FSUIPC offsets) is fixed. Previously the
length of the data could often be in error, with, for instance, 4 bytes being written instead of 1 or 2 for the “Byte”
and “word” variants.
• A bug in the AutoTuneADF facility (an Advanced User option in the INI file) is fixed.
• The processing of PFC buttons and switches is made more reliable, in conjunction with parallel improvements in
PFC.DLL (PFC driver 1.859 or later is required for this improvement to be noticed).
• The New Weather Interface is more protective of the data it receives for NW_SET and NW_SET_PENDNG
commands. If a program ignores or defies the timestamp-change protocol and writes the next weather too soon,
the previous setting is completely discarded now and the new one properly obeyed.
• For FS2004 only, the Ambient Wind Y (i.e. vertical) value at offset 3478 can now be written to and FSUIPC
will sustain the value written for up to 14 seconds or the next written value. This facility may be useful to
generate up and down drafts, e.g. for gliders or for turbulence. The value is not subject to any FSUIPC
limitations or smoothing.
• For FS2004 only, the following new offsets can be written to directly affect the wind and visibility at the
aircraft. These values are set before FSUIPC performs any smoothing or limiting actions, and effectively
become the new target values. FSUIPC sustains these as targets for a maximum of 14 seconds, with the next
write to the same location restarting this timeout. After the timeout has been allowed to expire the intended FS
value will take over, with smoothing and so on if enabled.

2DE0 8 Wind direction in degrees, 64-bit double floating point


2DE8 8 Wind speed in knots, 64-bit double floating point
2DF0 8 Visibility in metres, 64-bit double floating point
Note that weather set in this fashion is not reflected in any weather data supplied by the weather system in FS
nor FSUIPC. It is acting locally to the aircraft and can be monitored by Shift+Z or the ambient weather read-outs
in FSUIPC.
• For FS2004 only, “Aircraft Wind” values can be read at offsets 2DC8 (X, lateral), 2DD0 (Y, vertical) and 2DD8
(Z, longitudinal). These are all relative to the aircraft orientation, and give the wind speeds actually operating on
the aircraft in feet per second, all 64-bit doubles. [Note that these will not necessarily be correct if the facility in
the previous item is used to ‘fiddle’ the wind speed].
• A new option in the Technical page is provided to allow a joystick elevator trim axis to be automatically
disconnected when the FS autopilot is enabled in a vertical control mode (ALT or GS).
• The facilities at offset 310A for disconnecting aircraft control axes (for use by external or add-in autopilots or
fly-by-wire) are extended to allow the Elevator Trim axis to be disconnected as well. If the user option described
in the previous entry is enabled, this is done automatically when the elevator axis is disconnected.
The original, post-calibrated, value for the trim axis input is supplied for reading at offset 3338.
• A 16-bit count of FLT files saved is now provided at offset 3BD2. The path reading facilities at offsets 0FF0 and
following are extended with a command of 3 to read the last saved Flight filename (without any path or
filetype). This works on FS2000, FS2002 and FS2004. The details are also logged.
• Where timestamps are used in the IPC interface in order to indicate when requests have been fulfilled, the
timestamp is now automatically changed again after about 100 mSecs. This is to make sure that programs
running on WideFS clients see these, even if this is the first time they are reading the offset. The possibility
previously existed of the first such update being missed because of the default WideClient action of waiting for
data the first time it is requested.
• The FS2004 horizon bar position on the AI can now be read via offset 3548. This is a 64-bit floating point value,
as a percentage of the maximum (usually 10%), with positive being up and negative down.
• Bit 2^2 in offset 330C is now set when the FSUIPC installation is fully user registered.
• A bug in the Menu limiting facilities is fixed. Previously, when an application program attempted to prevent
access to the aircraft menu, for instance, the World menu was also disabled. The same applied to some other
individual selections.
• The “in menu/dialogue” flags in offset 3365 were not always maintained correctly when FS has re-entered the
initial flight selection menu (i.e. ESCape then Exit Flight). This was because, oddly, FS continues to send the
frame calls that FSUIPC uses to detect activity, albeit less frequently. The 2^2 flag in 3365 would toggle on and
off for the duration, as FSUIPC kept changing its mind as to whether FS was flyable or not. This problem has
been dealt with by delaying the clearing of either of the flags in 3365 for one second after they are set.

Version 3.22 (May 2004) is a consolidation and fixes release, with a few technical additions that may be useful to
engineers. Here’s the list:
• Problems getting the Project Magenta controls “by parameter” working correctly are resolved. Additional
logging for button actions is also incorporated to assist in any future additions in this area.
• Now that Project Magenta components process controls themselves where applicable, without the need always
for the MCP to be running, the list of PM controls is not restricted when there’s no MCP running.
• A problem in button processing could sometimes cause FS to crash. This was due to certain things being done in
another thread, and was very timing dependent. The most affected controls were the traffic density ones added
by FSUIPC. The work-around was to add the line “PollInterval=66” to the main [Buttons] section of
FSUIPC.INI to prevent FSUIPC using the thread. This is no longer needed and should be removed for most
effective button control.
• A bug in the Cloud options page for FS2004 caused the checkbox for random cloud icing to appear unchecked
even when the option was enabled. This is fixed.
• The manual registration of Gauges and DLL modules did not work when the filename contained multiple points
(full stops, i.e. ‘.’). The entry in the options page would be truncated to the first such character. This is fixed.
• A general tidy-up of the logging of registration problems with gauges and modules has been included in this
version. It should be a lot clearer to see exactly what is wrong when using an unregistered copy of FSUIPC.
• On FS2004, FSUIPC now detects changes made, through the IPC interface, to the Zulu hour at offset 023B, and
submits the appropriate broadcast through the FS chain system so that all parts of FS are aware of this.
Previously such a change could get FS into an odd state which would reduce the frame rate considerably
thereafter.
• Additional offsets are supported for a variety of technical things, as follows (all applicable at least to FS2004,
some will also be correct in FS2002. Full details will appear in an SDK update):

08F4 4 Torque percent value is now correctly mapped for helos in FS2004
08F8 4 Fuel pressure is now correctly mapped for helos in FS2004
08FC 2? Electrical load on helos (FS2004). Possibly.
28C0 8 Ambient density (double)
28C8 8 Ambient pressure lbs/sqft (double)
28D0 8 Static air temperature F (double)
28D8 8 Static air temperature R (double)
28E0 8 Standard temperature ratio (double)
28E8 8 Standard pressure ratio (double)
28F0 8 Standard density ratio (double)
337C 1 Prop anti-ice switch (BYTE boolean)*
337D 1 Structural anti-ice switch (BYTE boolean)*
3470 8 Ambient wind X (double)
3478 8 Ambient wind Y (double)
3480 8 Ambient wind Z (double)
3488 8 Ambient wind velocity (double)
3490 8 Ambient wind direction (double)
3498 8 Ambient pressure (double)
34A0 8 Sea level pressure: QNH (double)
34A8 8 Ambient temperature (double)
3590 4 Engine 1 fuel valve (BOOL)
3594 4 Engine 2 fuel valve (BOOL)
3598 4 Engine 3 fuel valve (BOOL)
359C 4 Engine 4 fuel valve (BOOL)
35A0 8 Airspeed mach (double)

* The two anti-ice switches operate the FS controls for these, and reflect the values of them as read
from the gauge token variables. However, they do not appear to operate correctly in any default
aircraft. Possibly they are not fully implemented in FS yet.
Version 3.212 (April 2004) was released a few days after 3.21 to correct a problem with the joystick calibration
facilities, where maximum and centre calibrations could get mixed up between axes and each other in some
circumstances. Additional improvements were made to the timings of joystick button scans, to make them rather
more consistently responsive.
Other, minor, changes are:
• The byte at offset 3366 reflects the FS2004 “Engine on Fire” flags. I’m not sure if FS actually simulates such
events, but it appears to have allocated Gauge-accessible variables to indicate them. This byte uses bits 2^0–2^3
as flags for fires in Engines 1 to 4, respectively.
• The byte at offset 3367 shows doors that are open (FS2004 only). At present this only provides bit 2^0 for the
main doors. If I ever find other flags I’ll add them too.
Version 3.21 (April 2004) includes a mixture of fixes and small additions and improvements. Not a major release,
but important nonetheless:
• Fixed a problem with GoFlight rotary dual-speed operation if the GoFlight configuration includes a GF-TQ6
throttle quadrant module.
• Fixed a problem with aircraft-specific Buttons and Keys programming, where a change of aircraft was not being
recognised in FS2002 at all, or in FS2004 if there was no change of AIR file.
• Fixed a long-standing error where pulsed (“P”) and held (“H”) keystrokes, programmed in Buttons, were mixed
up and sometimes operating incorrectly.
• The programming of some Project Magenta controls (especially the GC controls defined by parameter) is made
more reliable by different timeouts and more ruthless error correction, catering for PM components which may
not always clear the indications as per protocol.
• Added joystick facilities for analogue cowl flap adjustment. This is via a new Joysticks page, allowing up to four
separate control axes to be calibrated, and one or two axes mapped to control 2–4 flaps. Since FS doesn’t supply
axis controls for the cowl flaps, the user needs to assign otherwise unused FS axis controls and tell FSUIPC
which these are by editing parameters in the INI file.
• The aircraft-specific Keys and Buttons programming can now be applied to groups of aircraft (for instance,
multiple paints of the same model). This is done by allowing an aircraft name to match a shorter version of the
name. This involves editing the FSUIPC.INI file to shorten the name in the section titles created there, and, to
prevent confusion for existing users, the whole option is disabled until a parameter in the [General] section
(“ShortAircraftNameOk”) is changed to “Yes”. Further, the name of the active aircraft section is displayed in
the options title bar when the Keys or Buttons pages are open with the aircraft-specific option selected.
• Additional FSUIPC controls are added for programming in the Keys and Buttons pages, for default FS autopilot
values. These are:
Ap Alt Var Dec Fast (–1000)
Ap Alt Var Inc Fast (+1000)
Ap Mach Var Dec Fast (–.10)
Ap Mach Var Inc Fast (+.10)
Ap Spd Var Dec Fast (–10)
Ap Spd Var Inc Fast (+10)
Ap Vs Var Dec Fast (–1000)
Ap Vs Var Inc Fast (+1000)
Heading Bug Dec Fast (–10)
Heading Bug Inc Fast (+10)
Vor1 Obi Dec Fast (–10)
Vor1 Obi Inc Fast (+10)
Vor2 Obi Dec Fast (–10)
Vor2 Obi Inc Fast (+10)
• Additional Project Magenta controls are provided, each taking a parameter which is forwared to PM:
PM Whazzup keys (by Param), see Pm offsets list, 542E
PM Quickmap keys (by Param), see Pm offsets list, 542C
PM GC keys (by Param), see Pm offsets list, 542A
PM CDU keys (by Param), see Pm offsets list, 5428
PM MCP Kcodes (by Param), see Pm offsets list, 04F2
• The PM MCP Flight Director controls are now changed (in PM) to operate the left FD (i.e. the Captain’s). This
is denoted by naming the FD “FD1” in the controls list. Two new controls, for FD2 on and FD2 off control the
First Officer’s FD.
• A small change is made to the way FSUIPC sets gustless wind layers on behalf of external programs. Before it
set the gust value equal to the wind speed, as appeared normal FS practice. In this version the gust speed is set to
zero instead. Whether this actually helps at all is uncertain, but it certainly doesn’t appear to do any harm and
matches FS’s own downloads better.
• Flags are provided via IPC to indicate whether FSUIPC is handling toe brake operation or not (i.e. whether the
user has “Set” toe brake operation in the Joystick options). This is via two one byte values at offsets 336E (left)
and 336F (right). These will be non-zero if the relevant toe brake axis is “set”, zero if “reset”.
• A counter of FSUIPC-detected frame rate calls is maintained as a 16-bit value (wrapping at 65535 back to 0) at
offset 336C (2 bytes). This might be used, for instance, to try to synchronise an external program more precisely
to FS’s actual operating speed. [Note that this is not guaranteed to be accurately synchronised with every FS
frame on every version of FS, but it seems pretty good with FS2004].
Version 3.202 (March 2004) is another minor release with only two changes:
• A bug in the Button programming for PFC devices is fixed. PFC buttons programmed without being “aircraft
specific” failed to override the pre-programmed action for the same buttons in the PFC driver.
• A flag is provided in the byte at offset 3365 which indicates when FS is effectively frozen because of menu
access or modal dialogue action. Full details can be provided to those who need to use this before the next SDK
update.
Version 3.201 (February 2004) fixes a problem with the Keys page in the options—it was previously possible to
hang FS by deleting the last Key assignment left in a section (global or aircraft specific). It also makes it impossible
to program an action for releasing a key without first selecting an action for pressing it.
Finally, the FSUIPC proportional toe brakes are now proportionally effective on pressure release, as well as
application. It seems that, ever since the braking facilities were added several years ago, FSUIPC has always held the
highest pressure attained during application until the brakes are fully released, and then it lets them off over a second
or two.
Version 3.20 (February 2004) is a relatively major release, hence the jump in version numbers. These are the
changes:
• Buttons and dials on GoFlight equipment can be programmed in the FSUIPC Buttons page. Rotary dials have
four effective buttons (fast and slow in either direction), toggles and buttons are a single button each. This
facility requires a library module (GFDev.dll, not an FS module!), which is automatically installed by the latest
GoFlight driver package.
• Support is added for programming buttons connected to a separate PC on a Network and supplied by the latest
version of WideFS (6.22 or later). This includes normal Windows joystick buttons, EPIC buttons and GoFlight
buttons (with the GFDev.dll module installed on the Client too).
• Buttons and Keys can now be programmed differently for each aircraft, with default global actions for aircraft
not so selected.
• Up to 2048 button actions are now handled (up from 512), this including the total of the global programmed
buttons and the largest aircraft-specific list.
• Conditional button programming (in the FSUIPC.INI file only) now allows up to 16 conditions per entry, up
from 2 in previous versions.
• New controls in the Keys and Buttons pages can be assigned to control FS2004 AI Traffic labels—turn them on
or off or change the data being displayed.
• Those Project Magenta controls not usable without the PM MCP or FCU program running are now not listed in
the Keys and Buttons drop-downs if the MCP or FCU program is not running at the time.
• Offset 3324 (altimeter reading) is now updated at the FS frame rate. Previously it was only updated twice per
second.
• A more sophisticated method for identifying calling modules has been incorporated, one which is hopefully
foolproof, so there should be no more module or gauge registration problems.
• The BGL user variables 2–5 (offsets 0DD8–0DDE) are now working correctly in FS2004.
• A serious bug in the Keys programming facility in version 3.14 (only) is fixed. This inserted an extra unwanted
comma (,) into the INI file entries for every defined Key, and this in turn wrecked the programming next time
FS was loaded. Worse, the errors compounded themselves if you then edited the Keys again … and so on.
Version 3.14 (January 2004) includes these new facilities:
• A maximum icing value can be applied to clouds set by third party weather programs. This defaults to 3 to
prevent severe icing, even in unregistered FSUIPC installations. This option is only applicable to FS2004 and is
introduced to help deal with the more extreme effects of icing in that FS version.
• There are additional FSUIPC controls in the Keys and Buttons pages, allowing any FSUIPC offset to be written
or changed by key or button press (these controls all begin "Offset ..."). Byte (8 bit), word (16 bit) and double
word (32 bit) values can be written, and specific bits can be set, cleared or toggled.
• A program option is provided for a number of the user options on the Technical page to be inhibited by program
(see offset 32F6).
• Facilities are added for programs to obtain the default path for FS FLT+WX files, and the pathnames for the
traffic BGLs containing the routings for specific AI aircraft. See offset 0FF0 onwards and the new section in the
text preceding the table in the revised Programmers’ Guide (part of the latest FSUIPC SDK concurrently
released).
Version 3.135 (December 2003) was another relatively minor update, to clear a few things up by the end of the
Year. There were the changes:
• In FS2004, the A.I. traffic files being used are logged on first access, along with their file number. This is to help
resolve any traffic conflicts with the increasing traffic add-ons.
• The radio navaid status at offset 3300 now includes a bit to indicate whether NAV2 is an ILS or not.
• The wind transition option control bit (2^3) in offset 04DE/F now operates the wind smoothing option in
FS2004 (where wind transitions aren’t implemented). If enabled this way on an unregistered copy of FSUIPC
the default smoothing rate of 5 knots/degrees per second will be applied to global wind changes.
• An FS2004 facility is added to allow applications to request departure and arrival runway information for a
specific airport, this being derived from in-range AI traffic allocations.
• The graduated visibility and visibility maxima are now applied on FS2000 and FS2002 even if the FS-specified
visibility exceeds the upper altitude visibility by a good margin. Apparently recent FS “real weather” downloads
for FS2002 have included many visibility specifications in the hundreds of miles (many at 150 miles, but some
as high as 500–600 miles!). These values previously made a bit of a mess of the way the FSUIPC visibility
limits and graduation values are applied.
Version 3.129 (December 2003) was released quickly after 3.128 to fix a problem caused by an extra safety
precaution built into that version. It delays connecting to most parts of FS until the latter is fully ready to fly.
However, unfortunately this check was placed incorrectly, and this in turn made FSUIPC return zeroes to some
legitimate requests made by DLLs or Gauges which managed to connect to FSUIPC before FS is fully ready. This
caused problems with complex aircraft and add-ins that initialised when FS is started rather than which are loaded
later.
Version 3.128 (December 2003) is a relatively minor release, with one important correction and a few small
additions, mainly requested by programmers:
• Potential programs with accredited DLL access to an unregistered installation are fixed. The recent re-
compilation with a newer Microsoft compiler introduced some additional optimisations that defeated some of
the identification checks being made. The problem would most likely have been noticed by a spate of illegal
accesses being logged after any aircraft or flight change.
• On FS2004, if FSUIPC sees the spoilers change from any non-parked position to parked, it now automatically
clears the “armed” flag. Apparently this little FS2004 bug can otherwise cause problems.
• Again on FS2004 only, some BGL scenery variables (those addressed in BGLs by 312 to 31A) are relocated
from G3D.DLL to the GLOBALS.DLL, to the offsets in which they resided in at least FS2002 and probably
long before (0DD6 onwards). In case this causes any problems, which seems unlikely, it can be prevented by
changing the INI parameter “MoveBGLvariables” to ‘No’.
• A single byte at offset 330E counts the number of (apparently) new attempts to connect to FSUIPC by an
external application (on the same PC). Once this count reaches 255 it stays there.
• The autofeather arming switch at offset 2E88 now operates correctly on FS2002 and FS2004.
• The erstwhile Roger Wilco “push to talk” controls added by FSUIPC have been re-named just as PTT controls,
as they are now also applicable to recent releases of Advanced Voice Client (AVC).
Version 3.125 (November 2003) was issued a few days after 3.12 to fix a timing issue that affected accredited third
party Gauges which use FSUIPC in unregistered mode.
Version 3.12 (November 2003) adds the following to FSUIPC:
• Four new controls have been added to the FSUIPC Keys and Buttons drop-down lists:
Traffic density set: which sets the AI traffic density to the value provided in the parameter field, from 0 to 100
percent.
Traffic density toggle: which alternately sets zero AI traffic and the percentage set in the parameter field,
except if that is omitted or set zero then 100% is assumed. When first used, if the AI traffic is currently off this
control sets it on with the density specified (or 100%). If the AI traffic is enabled when it is used, it toggles it
off.
Spoiler inc: raises the spoilers (or speed brakes) by one increment – by default 1/32nd of the full extent, or 512
FS units in the range 0–16283. The actual unit can be changed by editing the SpoilerIncrement parameter in the
INI file.
Spoiler dec: similarly lowers the spolers by one increment. See above.
• An option is provided (on the Technical page) to make the Throttle Sync hot key apply also to Propeller Pitch
and Mixture values, when these are applicable (i.e. not for jets or helicopters). This is best used when you have
multiple axis inputs for these, calibrated through FSUIPC. It operates by copying the engine 1 values to the
others.
• The TCAS table data provided for FS2004 AI aircraft is extended by additional tables in the offset range D000–
DFFF. The additional information includes departure and arrival airport ICAO codes, runways assigned, and
traffic file and file entry ID numbers. This only applies to FS2004 AI traffic. Full information will be included in
the next SDK update, but programmers needing this earlier should apply to Pete Dowson.
• TrafficLook version 1.52, supplied with this FSUIPC release, is enhanced in several ways:
Additional columns have been added to show the departure and arrival airport ICAO codes and the assigned
runways (when applicable), on FS2004 only.
All columns are sizeable, and moveable, and the list can be sorted on any of them. The settings are retained,
separately for Airborne and Ground aircraft, in an INI file. It is easy to configure it to display the most important
information in a thinner window and have the two side-by-side on one screen. An example INI is provided for
such a layout, suiting a screen of at least 1280 x 1024 resolution.
The print-out now follows the arrangement (but not sizing) of the screen columns.
• Facilities are provided in the FSUIPC interface to send FS controls to selected AI aircraft. Many of them appear
to do nothing, or at least nothing useful, but certainly some may be useful. Experimentation is the key. I’ve
already verified, for instance, that the brakes can be applied on the ground, and the engines can be shut down
and started up again.
Additionally, a special FSUIPC control is added which will actually delete a specific AI aircraft.
These facilities operate through offsets 2900–200B inclusive, and will be documented in the next SDK update.
Advanced information for programmers who need this can be obtained now from Pete Dowson.
• A “ready-to-fly” indication is now provided at offset 3364, for FS2004 only. This single byte is set to FF
initially, and during aircraft or flight loadings, and cleared to zero when the simulation is ready.
• The ready-to-fly flag just described is now used by the FS Run-Program “READY” option, which didn’t really
work too well in FS2004 before now. It may solve some window focus-changing problems for automatically
loaded programs.
• The menu control facility at offset 32F1 is extended to provide separate control over three of the FS menus, thus:
2^10 World menu
2^11 Aircraft menu
2^12 Flight menu
These are in addition to the already allocated bits.
• The menu control for the FS2004 ‘world’ menu now works. There was a bug in earlier versions (actually due,
surprisingly, to the removal of the Scenery Library entry from that menu).
Version 3.11 (October 2003) includes:
• An error in the TCAS tables for FS2004 resulted in the longer airline+flight name strings using 15 characters
instead of the (newly restricted) 14, thereby losing their zero string terminator. The 16th character has been re-
assigned to provide the ATC status of the aircraft on FS2004, and so is not zero. The error resulted in some
program displays showing spurious characters at the end of the 15 valid characters—my own TrafficLook was
one of the programs affected!
• The Technical page option for axis “spike removal”, designed to fix some rather special programming errors in
certain complex panels, did not work in all such panels on FS2004 because of a small change in the way the FS
Command is formulated. The facility has been changed to deal with this and any future such similar differences.
• Compound button programming is now extended to allow them to use repeat actions too. For this the prefix
“CP” (for Compound Press) is changed to “CR” (Compound Repeat).
• Separate left, right, inboard, outboard, leading edge and trailing edge flap read-outs (both actual angle and
percentage of max) are now available under FS2002 and FS2004 at offsets 30E0–30FF. Full details will be in
the next update to the SDK.
• A table containing a lot of the data being currently used in the FS2004 GPS has been mapped to offsets 6000–
61FF. Not all of this has yet been decoded, and I am not sure if writing to any of it will do anything useful, but
as much information about this as is known will be included in the SDK update.
• A 16-bit count at offset 333E is incremented each time the FS “clear weather” routine is called, no matter
whether this is by something inside FS itself or explicitly by FSUIPC on behalf of an application program or
User Hotkey. This works on FS2000, 2002 and 2004. It may be useful as a signal to weather control programs to
re-initialise the weather, particularly after a Flight reload (such as one to an AutoSaved flight, after a crash).
Version 3.10 (September 2003) superseded version 3.09 before the latter was truly available, but both included all
these changes except the first, which was only in 3.10:
• DLLs which are accredited and which register themselves directly through the IPC interface are now
automatically also listed in the user’s KEY file. This allowed the registration system for GAUges to be
streamlined without any adverse effects on DLLs.
• A bug is fixed which prevented gauges or DLLs being manually registered by the user if their names contained
any non-alphanumeric characters (i.e. not one of A–Z, a–z, or 0–9). This did not affect the correct registration
automatically, by the gauge or DLL writing to offset 8001.
• The registration checks for DLLs and Gauges in an unregistered FSUIPC installation is made much more
efficient, so that if it is repeated often because the DLL or gauge is unaccredited and keeps retrying the access to
FSUIPC, it now has no noticeable affect on frame rates. Of course, the DLL or gauge will probably not be
working correctly because of this lack of access. The FSUIPC Log now records instances of access by DLLs and
Gauges so that this can be checked more easily.
• The Button programming repeat action is now fixed. It has not worked correctly in recent releases except for
PFC buttons and switches.
• A number of changes have been made to the IPC interface, as follows:
Offset Size Use
02FB 1 Provides ADF2 ident sound switching and indication (FS2004 only)
05E4–05EE varies Slew controls now work reasonably accurately with FS2004
31D8–31E2 2 (x 6) Provide the slew axis input values (all versions of FS)
32FC 2 The AIR file change counter is incremented when the FS2004 control to reload
the user aircraft is used—provided that control is assigned to a button, or
assigned to a Key in FSUIPC, or executed through FSUIPC’s interface. Controls
assigned to keys in FS’s dialogues aren’t detected.
3300 2 Bit 11 now indicates a good signal on ADF2 (FS2004 only)
3370 4 Provides “active” counts for assorted PFC.DLL threads—see PFC release 1.63
3374 4 Provides the millisecond counter used to label Log file entries
3378 4 Provides the millisecond count of the last Log entry
• If you are running the PFC driver too (PFC.DLL), the FSUIPC Hot Key page provides a setting to reset the PFC
serial port access. This is mainly to help restart the PFC driver after any power outage or mishap on the serial
port. It only works with PFC DLL version 1.63 or later.
Version 3.08 (September 2003) includes an important bug fix for FS2002 users, and several small improvements:
• The button and key allocation option pages are now working correctly again on FS2002. In version 3.07 (only)
the access to FS2002’s CONTROLS.dll was messed up and this caused FS to crash when any attempt was made
to access the drop-down lists of controls. This also had the same effect with PFC.DLL because that uses
FSUIPC for this function.
• The Tail Hook position, mapped at offset 3BA0, now works correctly on FS2002 as well as FS2004.
• The initialisation changes that come about because of the default setting of InitDelay being set to 0 may have
been too drastic on some systems. In this version several operations in FSUIPC are now again delayed for a
number of seconds. Only the Window subclassing is affected by the InitDelay setting.
• In an attempt to try to reduce the stutters that have been reported by some users, the frequency of the weather
data updates (for read access by other programs) in reduced on FS2004. It used to be once per 4 FS frames, and
this is now reduced to one every 16 frames, by default. It can be changed with a new FSUIPC.INI parameter in
the [General] section—WeatherReadInterval. This is the exponent of 2 for the number of frames per read. The
default is 4 (2^4 = 16). A value of 0 makes the updates occur on every frame, a value of 32 will effectively stop
them altogether.
Note that this also controls the rate at which any weather is updated using the old FS98 or AWI interfaces.
However, it does not alter weather setting capabilities using the New Weather Interface (NWI).
• The New Weather Interface facility for reading weather at a location or at a specific ICAO station is changed a
little. If the signature is not refreshed within the timeout, as well as freeing up the facility for other programs to
use, the continuous updating of the last-read station or location is stopped. The ICAO, Latitude, Longitude and
Altitude are all zeroes to indicate this. This is part of an overall attempt to make the weather operations more
efficient.
WeatherSet2 is enhanced to refresh the ICAO or location requested in its “Station” entry at regular intervals, so
that it can reflect changes in real time. However, it uses a signature of zero, which means any other application
can take over at any time and read whatever it likes instead. Of course, when that happens the display in
WeatherSet2 changes to match.
• Additional values are now accessible through the IPC interface, for FS2004 (and FS2002 in one case). These
are:
02D4–02FB Assorted values related to reading and setting ADF2
13FC The number of payload stations for this aircraft
1400 and ff. Data for each of up to 61 payload stations, including weight, position and name.
2DC6 The Heli “Beep” value, whatever that is (sorry). [FS2002 also]
As well as this, the offsets for access to some BGL-accessible variables are now known and are published in the
revised Programmers Guide (available in the SDK update being released simultaneously with FSUIPC 3.08).
Version 3.07 (September 2003) contains several new minor features and some fixes and improvements:
• The sub-classing of FS’s main window is now done immediately FSUIPC is initialised, though it can be delayed
by using a previously undocumented parameter (InitDelay=<milliseconds>) in the [General] section of the
FSUIPC.INI file. This change is part of an attempt to reduce the probability of FS suffering black screen
problems when switching between windowed and full screen modes. Full details of this will be found in the
back of the User Guide. In previous versions the delay was 3 seconds, so if anyone finds FSUIPC worse with the
delay omitted they can restore it by using “InitDelay=3000”.
• A problem in some systems, where the Joysticks tab in FSUIPC’s options doesn’t appear, has been fixed. This
seems to arise when the FS Controls.DLL is loaded into a different location than usual, but why this occurs
sometimes on a few systems hasn’t been determined.
• A small memory leak in FSUIPC’s weather routines for FS2004 has been plugged. This has been reported as
causing insufficient memory reports after 12–14 hours flying.
• The flight loading facility in the IPC interface now operates correctly on non-English versions of FS2004.
Previously the correct folder may not have been used—it varies according to the Language. FSUIPC now gets
the folder name from FS’s own Language.DLL.
• An “Autobrake Set” control is added to the Keys and Buttons programming facility.
• A hotkey facility for selecting all engines is added. Apparently there are times when FS’s own key sequence for
this (E 1 2 3 4) doesn’t work—notably on 3-engined aircraft it seems. This facility selects all engines by writing
the correct bit pattern to the location that matters.
• Facilities are added for external programs to utilise FSUIPC’s Buttons programming capabilities by altering
“virtual button” indications via the IPC interface. Virtual joysticks 64–72 have 32 buttons each, mapped to
offsets 3340 to 3363 inclusive. Setting a bit in one of the nine DWORDs is seen a pressing the corresponding
button, and clearing a bit as releasing it. The 9 x 32 button capacity is chosen to suit the available button
connections possible on the Aerosoft 747 MCP (4 x 72), but it should be easily adequate for any
implementation.
• The Tailhook Position (a 64-bit floating point value, or ‘double’) in FS2002 and FS2004 is now mapped for
reading and writing at offset 3BA0. This has not been tested prior to release though. Whether writing to it
actually positions the tail hook is not known.
• The logging is improved for developers by logging the details of illegal access attempts—that is, attempts to
access parts of FSUIPC’s offsets which are not allowed for unaccredited programs in an unregistered installation
of FSUIPC.
Version 3.06 (August 2003) includes two important fixes, and an extra facility:
• It turns out that the rain/snow rate value in FS2004 runs from 0 (light) to 4 (heavy), whereas in FS2002 and
before it varied from 0 (none) to 5 (heavy). This wouldn’t be too bad, if it wasn’t for the fact that FS2004 hangs
quite nastily, with a black scenery window, if any program tries to set rate 5! I think it may be trying to load and
set rain or snow graphics that don’t actually exist, and doesn’t handle the failure very well. In this version,
FSUIPC converts the FS2000/FS2002 precipitation rate values used by weather programs into FS2004 terms,
and vice versa.
• The fix in version 3.05, to stop the FS2004 weather ‘themes’ reverting to ‘user defined’ didn’t cover all cases—
if the wind smoothing option was selected this change could still occur. This is fixed correctly in this version.
• A facility is provided to make the graduated visibility operate from the top of the current visibility layer rather
than from a fixed user-specified altitude. This is done by setting the lower graduation altitude to zero.
Version 3.05 has some important improvements for FS2004 users:
• The visibility maximum values and smoothing actions are now applied to all weathers in FS2004, independently
of the weather source.
• Graduated visibility is introduced for FS2004, and also applies to all weathers, independently of source. Unlike
the FS2000/FS2002 equivalent, this does not make use of the visibility layer, which is left as set by the weather
data.
• The New Weather Interface (NWI) now has additional weather setting commands to set local weather “pending”
first, and “activated” later. When these facilities are implemented in a weather program, they will help eliminate
most of the small hesitations that may sometimes occur when the setting of each station needs activating
separately.
• Facilities are included in the NWI for programs to read the complete weather data for any place in the FS world,
by providing the Latitude and Longitude. WeatherSet2 is revised (version 1.31) so that it can use this facility
too.
• By default FSUIPC now no longer applies any of the weather filter actions to FS2004’s own global weather
settings. This action had the unfortunate side effect of always switching FS’s Weather settings to “User
Defined”, even if a Theme was selected. If you use FS global weather and want the FSUIPC filters to act upon
it, you now have to alter an option in the Technical page.
• Weather data and other values are now still updated when FS is minimised. The update rate will be reduced,
however (2–4 fps).
• Additional IPC offsets now working in FS2004 include:
0AF0, prop type: 0=fixed pitch, 1=constant speed
0C20, the current FS time in string form
30D8, dynamic pressure
3BD6, a new set of “partial panel” failure control/flags, including separate NAV/COM 1 & 2 radios
Version 3.04 changes include the following:
• A problem in recognising accredited program names longer than 15 characters, on Windows 2000 (only), is
fixed. This particularly affected Flight Deck Companion users on Win2000.
• An odd problem, possibly related specifically to non-English language versions of Windows XP, whereby
accredited programs were still rejected even on a Registered FSUIPC installation has been fixed.
• The flaps calibration, changed to suit the new FS2004 flaps control, is now working properly (again?)!
• The wind gusts reported via the old FS98 interface are now set to zero correctly when there are no gusts.
• FSUIPC now supplies valid addresses to WideServer for all data, even data that is not present for the specific
aircraft which is loaded. This overcomes a problem noticeable in WideClient, with such data never being
received from the Server and thereby causing “wait for data” timeouts (defaulting to 500 milliseconds) and
hence jerky operation. These wouldn’t have been noticeable on clients not trying to read the specific non-
existent data, nor if the data wait timeout had been turned off. (This is more likely to have happened on FS2004
as the aircraft data structures are now simply not created by FS when they aren’t needed).
• The following values, accessed through the IPC interface, are now valid, or at least better, in FS2004:
1. EGT for props. It seems that the units used for this value for props are not the same as those
used for Jets. Only the latter appears compatible with FS2002 and before. Until we know more
about this, I have derived an approximate conversion formula empirically so that the Prop
values, too, are more like their FS2002 values.
2. The ADF dial setting at 0C6C is now working, both read and write.
3. The Nav/GPS switch at 132C is now working, both read and write.
4. More of the “available function” flags in the 077C ff. Range are now working. In fact I think
there’s now the same coverage as in FS2002.
• The standard “SIM RATE SET” control seems to have been broken in FS2004. I’ve added some code to
intercept this and work it within FSUIPC instead. This also makes the SIM X1 hot key facility work.
• The IAS smoothing option in the Technical page is now enabled by default, so will work even for unregistered
FSUIPC installations.
Version 3.03 contains a variety of minor improvements and some important error fixes:
• The weather interface for FS2002 is fixed. Previously it didn’t become operable until some external application
actually wrote to the IPC interface.
• The weather defaults for an unregistered copy are now the same as the “minimum weather defaults”. Since they
cannot be altered in an unregistered copy it seems wrong to impose any filtering actions, such as the minimum
and graduated visibility, which normally defaults on in FS2002. The only exception made to this is to enable the
“extend METAR max vis” action, as otherwise there’d be too many 10sm and 9999m visibilities set!
• Checks are now in place for Registration on a Win2000 or XP system being used without “administrative
rights”. Registration is like an install and needs the user to be the administrator.
• Facilities are now included for DLLs and GAUges to be accredited manually. This is done by entering the name
of the gauge or DLL (with the .gau or .dll part) into the dialogue box, and providing the access key.
• The new AXIS_FLAPS_SET control, assignable in FS2004’s joystick assignments dialogue, is now recognised
by the FSUIPC joystick Flaps calibration facility. It also corrects the action of the FS2004 default operation,
which seems to need –16384 to set zero flaps, but calibrated values from 0–16384 for the other settings.
• A flag is provided which tells external programs whether thy have full access to the IPC or not. This can be read
without triggering the message box to users telling them of an un-accredited access attempt. The location is the
byte at 330C (hex) and the flag is the 2^1 bit—it will be set if access is okay. (On WideFS it will always be set,
assuming WideServer is registered on the FS PC).
Version 3.02 includes a further fix to the Registration system, interlocking the attempted access by applications so
they do not interfere with the Registration dialogue at all. Previously some registrations may have been difficult or
even impossible if application programs were running at the time.
Also, an error in 3.01 is fixed which can, in some circumstances, cause the Message Box warning of un-accredited
program access to appear when it isn’t true.
Finally, the FSUIPC INI file parameters to operate the TCAS options for AI aircraft are now usable even in un-
registered copies of FSUIPC, though you have to edit the FSUIPC.INI file to change them. Details of INI file
parameters are given in the Advanced User Guide.
Version 3.01 was released quickly after 3.00 to fix some little problems introduced with the Registration system:
• It is made to properly deal with registration details with accented or non-standard ASCII characters
• It now does not repetitively log the details of a single application failing to provide the correct access key.
However, large logs may still occur if more than one program keeps attempting access, as it only remembers the
last one each time.
• The first time any program is run without the correct access key, on an unregistered installation, a Message Box
is now produced to warn the user, and asking him to look at the log file.
Version 3.00 (July 2003) is the first official version which supports FS2004 as well as the previous versions. It is
also the first to need user registration for full access to all facilities, or access keys from accredited programs for the
IPC interface.
As well as these changes the main addition, specifically for FS2004, is the “New Weather Interface”, which allows
external programs to read and write weather by METAR station ICAO reference. This is the first time local weather
control has been offered to external programs. Full details will be included in the updated SDK, which will follow
the release of 3.00 as soon as possible.
Version 2.975 includes these changes:
• Fixes the time-out for externally injected AI Traffic data, such as that provided by AI Bridge for TCAS display
of MP traffic. The change in 2.96 to the way FSUIPC timings are related to frame rates caused less than the
specified 6—12 seconds to be allowed before a refresh by the injecting program is needed.
• Non-centred axis calibrations now work correctly even with maximum input values of less than 512. Note that
such small input values are only likely if the original axis was either completely uncalibrated (in Windows), or
had its FS “sensitivity” slider set far too low.
• In FS2002 the reverse throttle limit is now automatically adjusted to provide full reverse for each aircraft,
individually, rather than assuming that the maximum reverse is always around the –4096 value.
• The G-force value at offset 11BA can now be written to (though this appears to have no useful effect).
Version 2.972 corrects a few odd things that occurred as a result of changing to FS frame rate as a base, rather than
the timer. In particular, the timeouts on application hot keys, menus and other things, would have varied according to
frame rates—being only as promised if the frame rates held steady at 18 fps. Also any programs loaded automatically
with the “READY” option would load before the scenery had finished loading, not after everything was really ready.
Version 2.971 was issued a day after 2.97 to fix a problem with FS98 only. Installing 2.97 on FS98 would make the
latter crash in SIM1.SIM soon after loading.
Version 2.97 (February 2003) is a relatively minor bug fix. The following changes were included:
• The IAS smoothing option works on a timed basis instead of by frame rates—the change in FSUIPC to be frame
rate based rather than timer based shortened the smoothing period for frame rates better than 18 fps, and so the
output wasn’t as smooth as it should have been.
• The version 2.96 fix for the processing of application hotkeys was incorrect. The option to allow hot keys
through to FS became inoperative.
• The decay slope for the toe braking pressure, when the brakes are used via the FSUIPC joystick facility for
brakes, is timer-based again, as before, not based on frame rates.
• Additional Project Magenta support is provided in the FS controls drop-down for Buttons and Keys assignments.
Facilities for switching the electrics in the glass cockpit have been added.
Version 2.96 (February 2003) includes:
• Details of nearby ground AI traffic are now available for programs that can use them. The aircraft included are
subject to an in-built range limit set to 6 nm if the user aircraft is airborne, or only 3 nm if the user is on the
ground. This should be adequate for ground traffic avoidance calculations and airport movement plotting.
• The rate at which AI traffic is scanned has been increased to 10% per FS frame, with a parameter in the INI file
(TrafficScanPerFrame) to adjust it (0=off, 100=all traffic updated on every frame).
• If either of the airborne or ground AI traffic tables becomes full, those aircraft furthest away are discarded in
favour or new ones arriving if the latter are nearer. This means it is less important to limit the range, although
the default of 40 nm for airborne traffic is still retained for performance reasons.
• The cloud options for FS2002 now allow the Virtual Sky or Jet Trails facilities as alternatives.
• A hot key assignment facility is added to hide or show the AdvDisplay window. This is for use with the new
version of AdvDisplay (2.00) being released shortly after FSUIPC 2.96.
• The visibility smoothing and graduation operation updates the visibility values in FS at less frequent intervals in
order to try to reduce the horizon flickering noticeable on some video cards, notably the Matrox Parhelia.
Though it seems these phenomena might be video driver faults, it seems best not to provoke them!
• The upper altitude for the surface visibility layer is automatically adjusted to be above the METAR station
elevation (if known). The adjustment is to 1000 feet above when graduated visibility is in operation, or 2000 feet
above when it isn’t.
• FSUIPC is now conducting most of its operations once per frame, rather than at regular timer ticks (18/sec). This
will mean it is sometimes slower, sometimes faster, just like FS itself. But more importantly it should lead to
smoother operation of FS as a whole even in situations where there are many applications using FSUIPC. It may
also lead to better stability, but time will tell. [To prevent FSUIPC stopping altogether in some circumstances,
such as when FS is minimised, if the frame rate falls below 5 fps FSUIPC reverts to time-based operation until
the frame rate rises].
• The operation of changing the gyro drift value (offset 0C3E) is made more consistent, though reading this will
still only show the current FS value not the last value set, which may still be in the process of being applied.
• An error in FSUIPC’s processing of application hotkeys meant that these were passed onto FS even if the flag
had been left clear to indicate that they should not be. In fact the operation of that flag was the reverse of that
intended and documented. Since developers may have already discovered this, and reversed the setting of the
flag in their programs to compensate, the correction wasn’t straight forward. The solution was to no longer use
that original flag and use the next one up instead. This should mean that by default all current hot key users will
set the options so that their hot keys are not passed through to FS. I think this is the safest assumption.
• A bug in the HotKeys page of the FSUIPC options resulted in the “Clear” buttons working correctly but not
actually clearing the displayed key press. Additionally, in some releases the hot key changes were not being
saved to the FSUIPC INI file.
• A bug in the derivation of the full network path of FS (the “UNC” path) meant that the path at offset 3E00 was
only correct if the drive on which FS resided had been shared. If only the path had been shared the path in 3E00
was local, not network-usable.
Version 2.95 (December 2002) has these changes:
• A separate surface visibility maximum for rainy/snowy weather is provided.
• There’s a new Joystick options page which provides facilities for configuring axes as thrust reverser, aileron
trim and rudder trim.
• A bug is fixed in the visibility setting for external programs, which actually prevented the visibility being
changed if the smoothing and graduation options were both disabled.
• A minimum visibility value of 1/100th mile is now imposed even if zero is specified. This is to avoid some odd
graphics effects in FS2002 when zero visibility is attempted.
• Negative FS control parameter values can now be entered in the Buttons and Keys pages of the options.
• A bug in the hot key programming could result in application hot keys not being recognised. This occurs when
an ALT+TAB key combination is used to swap to another program. On some systems FSUIPC sees the TAB
key being pressed, but not released, so assumes it is still being held down.
• External program control over most of the FSUIPC weather filtering options switches is now provided through
the IPC (see Programming Guide, offsets 3127-312F). The user still has an option to stop this happening,
however.
• The gyro drift value at offset 0C3E is now writable in FS2002 as well as being readable.
Version 2.94 (November 2002) includes these improvements and corrections:
• Added WideFS “KeySend” facilities to the list of Controls assignable to Buttons or Keys in the relevant Option
pages. This makes it easier to configure joystick buttons to operate WideFS clients, and for the first time allows
keypresses on the FS PC to be used for this too.
• Added a complete (current) set of Project Magenta controls for programming in the Buttons and Keys option
pages. These are included in the drop-down control lists by option, as they add considerably to the length of the
list. They are all listed starting with “Pm”, with the Airbus specific ones are prefixed “Pm Ab”.
• The program running options are augmented by the addition of a “CLOSE” option as well as the existing
“KILL”. This operates by sending Close messages to the top level windows of the loaded application instead of
killing it as a process. With some programs this is better as it enables tidying up before closure. However, there
may be some programs for which KILL is the only solution.
• The IPC offset to switch FS’s “slew” mode on or off always only switched the mode, not the axis controls that
belonged with it. In other words the use of the joystick to control the slew direction and speed was never
actually possible if the slew mode had been entered by writing to the IPC offset. This was true in FS98, FS2000
and FS2002, and in fact is probably a desirable result as programs forcing FS into slew mode generally want to
control movement themselves without joystick interference. However, in case it is needed, FSUIPC now offers
an additional slew switching facility, related to the same offset, which will do a complete switch, just like using
the slew control on the keyboard (“Y””). This is also available on FS98 and FS2000 as well as FS2002.
• A possible cause of FS frame rate reduction, which seems to be applicable to only some systems, and is related
to the Button programming facilities, has been removed. At least it seems to, according to feedback received
during Beta tests. No such performance hit could be detected here so the fix is by no means certain.
Version 2.93 (November 2002) includes these improvements and corrections:
• Implemented the option to convert wind turbulence into wind variance for FS2002 use, but applicable to upper
winds only. It seems that FS2002 does exhibit the same lack of wind turbulence as in FS2000, but not actually in
the surface wind.
• Fixed a problem with the Buttons option page where an assigned FS control might not ‘stick’ unless some other
facility, such as the parameter value, was accessed after selecting the control in the drop-down list.
• Extended the joystick Buttons programming facility to allow programming of all buttons, switches and rotary
knobs on PFC controls handled by my PFC.DLL. This needs PFC.DLL version 1.46 or later. When
programming is done in FSUIPC the normal action in PFC.DLL is inhibited.
• Extended the Keys programming facility to allow a different action to be programmed on key release to key
press.
• Provided a facility in the IPC interface to disconnect the joystick axes from Slew mode actions (offset 310B).
• Added a facility for FS2002 only to automatically generate an overcast cirrus cloud layer above a specified
altitude to allow FS Sky World SE’s “virtual sky” colours to be applied. This replaces the vapour trails facility
for FS Clouds, which isn’t needed on FS2002. The vapour trails option still applies to FS2000.
Note that if this facility is enabled the real sparse cirrus layer option, if enabled, become 100% probable, not
randomly at 80%.
• Fixed an error preventing a new value entered in the options screen for the limit on visibility for overcast clouds
being applied—the cloudy limit was imposed instead.
• Fixed another bug in the visibility facilities that could cause low visibilities to occur when unlimited visibility is
set in the FS weather dialogue. The weather logging is also fixed to report FS2002’s negative visibility as
“unlimited” (for that is how it denotes this).
• Changed a direct reference to FS2002’s SIM1.DLL data to derive the address at run time. Although generally
this address is almost always known and fixed, it seems that in very specific circumstances it can be different,
and this could cause FSUIPC to crash.
Version 2.92 (October 2002) includes these few important fixes, and minor improvements:
• A bug is fixed in the initialisation of the cloud thickness values, which caused the value set for thunder clouds to
be set in the normal cloud space and the thunder cloud value to reset to its default of 10000 feet.
• A bug is fixed in the new “Keys” options, fixing a problem where the Alt key is shown as Shift and vice versa.
• The use of the Tab key as an extra shift, to provide more keypress combinations, is extended to the Hot Keys
page and also to the IPC interface Hot Keys facility (using bit 2^4 in the Shift State indicator byte).
• It seems that in FS2002 the “gradual” shear setting for wind layers actually works, or at least it smooths the
wind speed and direction more reliably than did FS2000 where gradual shear could give sudden drastic
reversals. The current ambient wind data read out at offsets 0E90 and 0E92 did not take into account these
transitional values. This is fixed so that the read outs always reflect what is believed to be the actual wind
affecting the aircraft track.
• A bug is fixed which could prevent some add-on programs adding items to the Flight Sim menu. This affected
those which operated by intercepting the “WM_INITMENU” and/or “WM_MENUSELECT” messages.
• The gyro drift value at offset 0C3E is now populated by FSUIPC for FS2002. It is a read only value.
Version 2.91 (October 2002) includes these fixes, improvements and new facilities:
• The handling of graduated visibility and the application of the visibility limits is improved when using local
weather, including downloaded “real weather”, in FS2000 and FS2002. The visibility smoothing is now
correctly not applied when using local weather—it shouldn’t be needed as FS should be interpolating weather
between METAR stations and hence “smoothing” changes out itself.
• Facilities for assigning FS controls to key press combinations have been added, used via a new page in the
Options dialogue. These facilities act in addition to those in FS’s keyboard assignments (though take precedence
when the same keypress is programmed in both—you won’t get both actions). The advantage this gives is
simply that FSUIPC offers access to the complete range of FS controls, and even allows assignment of
parameters to those that take them.
• Additional “pseudo-FS controls” are added to allow joystick Button “flags” to be set, cleared, or toggled, for
testing in conditional button operations (described next). These controls can be programmed for buttons or key
presses.
• The button programming facilities now allow multiple actions to be listed for any buttons, selected by the state
of other buttons (or, more likely, switches). This also allows two-phase rotary switches to be programmed
without needing special hardware or software. Up to two conditional buttons or button flags can be specified.
Please see the Advanced User’s Guide for details. These facilities cannot be used from the on-line Buttons page.
• The facility to restrict cloud thickness is extended to allow a different maximum thickness to be applied to
thunder clouds.
• The IPC interface now provides a “protected mode” control, to allow applications to restrict FS Menu access, set
default FSUIPC weather options, and stop FSUIPC options being changed. Details will appear on the next
edition of the FSUIPC SDK.
• The IPC offset 0E92 should contain the Ambient Wind direction based on degrees Magnetic for the surface
wind, but True for upper winds, for full FS98 compatibility. In fact on FS2000 and FS2002 it contained the
Magnetic direction in all cases, which is wrong. (With wind transitioning enabled this actually made no
difference, as the transitioning works by having only the one layer). This error is now fixed.
Version 2.90 (September 2002) includes these fixes, improvements and new facilities:
• A facility is added for FSUIPC to automatically run additional programs whilst FS is loading, or after it is ready.
This facility is controlled by parameters in an additional section of the FSUIPC.INI file, entitled [Programs].
The facility is not accessible through the on-line options in FS, but by editing the INI file, and this is described
in the Advanced Users guide. José Oliveira has kindly supplied a utility program called “Run Options” to edit
these options, and this is available in a separate Zip (“FSUIPC Run Options.zip”).
• An option has been added on FS2002 to actively smooth the IAS (indicated air speed) value supplied through
the IPC interface for external programs. This is to get over a slight (less than 1 knot) regular ‘jitter’, like a
ratcheting action, observed in climbs and descents in FS2002 only.
• Whilst fixing some of the visibility problems in version 2.89, I broke the visibility smoothing facility. When
enabled it prevented external program control over the visibility! This is fixed.
• The spike removal action is now available for aileron and elevator as well as rudder (see the Technical Options
page). This gets around another apparent 767PIC problem whereby the elevator can get stuck in a full nose-up
configuration.
• Switching off main throttle and prop pitch axis mapping now resets the calibration on the mapped throttle and
prop pitch axes too. This was previously confusing folks who had mapped the throttle in order to get a reverse
range, but then changed their minds, and didn’t realise that the calibration on the mapped throttle page was still
active. It seems that these separate throttle axes are used by 767PIC (and probably other panels) when the engine
control unit is engaged (which I think it is by default).
• A mapped throttle or prop pitch axis does not now impose calibration on any external use of that axis, only on
the values mapped from the original input. This was quite a nasty problem, as folks who did map the throttle in
order to get a reverse zone found that the 767PIC engine control unit (and maybe others) was then setting odd
thrusts.
This was because, for instance, in order to have a small reverse region at one end of the throttle lever range, that
calibration involved putting “idle” down at negative values, like –5000 or so, instead of 0. When the Engine
Control Unit set idle, it of course set 0, but FSUIPC was calibrating it to some positive thrust value as obviously
0 is well above the idle of –5000.
Unfortunately this doesn't help multiple throttle users with reverse calibrations on the same levers. FSUIPC has
no way of discriminating between controls arriving from the real throttles and those arriving from the Engine
Control Unit. Such users will either have to calibrate with zero idle, or find some other way of controlling
reverse thrust, or perhaps just switch off the ECU in the panel altogether.
• Use of the FSUIPC interface by internal modules has been made more reliable by allowing access to FS
internals earlier than before, at least on FS2002. In previous versions many of the facilities were not accessible
until all parts of FS had initialised and ‘settled down’. This was to avoid crashes caused by access to parts not
yet ready. Internal modules are liable to request access long before external programs and this was a problem
unless they took care to either keep retrying or to delay their requests by quite a substantial time.
The relaxation of checks applies only to those facilities which are not dependant on parts of FS loading, and are
more extensive on FS2002 than other versions (because in FS2002 SIM1.DLL is resident, whereas on earlier
versions SIM1.SIM was loaded and re-loaded with aircraft).
• The clock synchronising option for FS2002 is now automatically disabled whilst the simulator is run at speeds
other than the normal 1x.
• The AWI-read visibility for the surface layer now reflects the current visibility, not the target. These two can be
different if visibility smoothing is in operation.
• A.I. aircraft that are listed with negative altitudes are now not entered into the TCAS table. It seems that some
such entries can be generated by presumably faulty additional AI traffic packages—the case that affected my
system was for British Airways. The problem with these entries is that they seem to stay in FS’s list of active AI
aircraft forever, and so occupy space in FSUIPC’s tables better used for real aircraft in flight.
• A number of small additional improvements have been made, particularly in the way the exact “local” weather is
determined. This may provide more predictability in areas of many close METAR stations providing conflicting
weather data.
Version 2.891 was released quickly after 2.89 to fix a silly little bug in the new Menu facilities which could cause a
spurious entry to appear in the Modules menu, depending upon other unrelated FSUIPC settings.
Version 2.89 (August 2002) includes these fixes, improvements and new facilities:
• The code to fix the visibility base for stations below sea level did not work in version 2.88 and in fact could set a
base above the station, rendering some ATIS reported visibility values incorrectly.
• The visibility smoothing option did not work well with the graduated visibility feature. In fact it more or less
nullified the graduations altogether. This is fixed in this release.
• Changing the lower altitude for graduated visibility now has an immediate effect and can override previously set
values. External programs and use of the Weather menu can still change the value being used subsequently, as
before.
• The reversal of the default for the “fix control acceleration” facility in version 2.88 was unfortunately not
implemented completely correctly, so the selection of this as “Yes” recorded in the FSUIPC.INI file was
disregarded, making it necessary to re-enable the option on each load.
• Modified the Button dialogue so that the full name of all of the FS controls can be read, and added two special
“pseudo- FS Controls” for Roger Wilco “push to talk” on/off controls. These use RW’s own message values,
avoiding the problems some versions have with key press interception.
• Added an option to synchronise the FS2002 clock’s seconds with the PC’s system clock. Apparently FS2002
otherwise runs slow compared to real time. The correction is thanks to José Oliveira, who worked out a suitable
fix and originally published it in a separate program (clock.exe). The option is defaulted off, and appears in the
Technical page.
• Fixed the engine oil temperature value in the FS98 offset locations (08B8 etc) to correctly provide negative
temperatures as well. Apparently these can occur at low OATs when the engine is out. Whether the original
FS98 values could go negative is not known, however.
• Added a facility for external applications to add entries to the Modules menu via the FSUIPC interface. This
operates like the Hot Key facility and is, in fact, an extension of it. Consequently even applications running on a
separate PC, under WideFS, can use the FS menu. Details of how to use this facility will be published in the next
update to the SDK, but meanwhile interested developers should contact Pete Dowson for details.
Version 2.88 (August 2002) includes these new facilities, fixes and improvements:
• Added extensive joystick button programming facilities, converting button presses/releases into keypresses or
FS controls, handled through a new page in the options dialogue. Whilst this is particularly suited to EPIC users,
it is not EPIC-specific and so can be useful for any joystick system with ‘spare’ buttons, provided these are
visible through the Windows joystick interface (e.g. Game Controllers applet in the Control Panel). The range of
FS controls assignable exceeds those which can be assigned in the FS CFG file, and fixed parameter values can
also be supplied with them so they can be used to set (fixed) values as well as operate switches.
• Added a facility for smoothing visibility changes supplied by external Weather programs. This is defaulted off.
The user can control the speed of changes by setting a time when selecting the option in the Visibility page.
• Fixed a problem whereby changes made in the FS weather dialogue would not take effect with certain FSUIPC
options enabled. This affected wind settings when wind transitions are enabled, and visibility when graduated
visibility is enabled. (This problem actually dates right back to 2.83 and was due to the changes made for
NT/2K/XP systems where saving flights could not be detected in order to restore the weather first).
• Fixed the Joystick calibration section for four separate mixture levers so that the centering (“idle”) action works
correctly.
• The “fix control acceleration” facility for FS2002 is now defaulted off instead of on. It turns out that this facility
can adversely affect the keyboard control of some third party panels. Those panels affected (one notable
example is the DreamFleet 737) continuously send controls to FS, several every second, and these trigger
FSUIPC’s “fix control acceleration” action when enabled. This actually does no harm to those controls, in fact it
helps, but the fact that the acceleration timer is reset each time actively prevents keyboard controls from
accelerating at all. FSUIPC cannot “fix” those as the keyboard controls do not go through the same interception
mechanism.
• Added a facility for an external program to supply “KeySend” codes in the FSUIPC address space, for use with
Wideclient.
• Dynamically adjusts the visibility layer base for places below sea level.
Version 2.87 includes just these few fixes and improvements:
• Added the COM1 frequency to the TCAS data supplied for A.I. aircraft.
• Fixed the facility added in 2.86 to allow aircraft to be added to the TCAS list by external programming. In the
original version updates actually created additional entries.
• Adjusted the joystick calibration facilities so that by default there may be a small dead zone at either extreme.
This change enables the next change:
• Provided an optional “spike” eliminator for the rudder, removing and discarding inputs from rudders which are
actually at or beyond the extremes (–16383 or +16383). This action is mainly to overcome a problem reported
with the Wilco 767PIC on FS2002, when the Yaw Damper is disengaged. If you use this option you should
calibrate your rudder in FSUIPC, making sure you have adequate ‘dead’ zones at either extreme. If you do not
do this then attaining maximum deflection may not be possible.
• Added an IPC offset (3126) to control directly the view direction (the main out-of-cockpit view). Unfortunately
no way of detecting the currently set view has yet been found.
• Extended the facility for sending FS controls (IPC offset 3110) so that most (valid and working) controls do
actually work on FS2002—previously those which did not relate to the simulation engine may have been
ignored in FS2002 (only).
Version 2.86 (June 2002) includes a number of fixes and improvements, as follows:
• Moves the “hot key” options from the Technical page to a page of their own, allowing additional hot keys to be
configured on-line, and tidies up some of the existing FS “fixes and improvements” options.
• Provides user aircraft ATC details—flight number, airline, tail number and aircraft type—as declared in the
AIRCRAFT.CFG file, for use by programs using the IPC interface.
• Includes a facility for external programs to add aircraft to the TCAS tables in FSUIPC’s data space. Details of
how this is used to, for example, add MP aircraft, will be published in the next edition of the SDK. Meanwhile,
apply to Pete Dowson if you need details.
• For FS2002 only, the “NavFreq50KHz” option is added. This forces NAV1 and NAV2 frequencies to be set at
50KHz intervals rather than 25KHz intervals. The option is defaulted off. When enabled it operates on both
‘use’ and ‘standby’ NAV frequencies.
• Allows APR, GS and BC autopilot hold modes to be turned off (when already apparently off) without
disengaging NAV1 lock. This is done by re-engaging the NAV1 lock after turning off any of the other three
modes. This only affects FS2002, when turning off the other modes does turn off NAV lock (which is, after all,
also the LOC component of approach modes).
• Fixes some IPC offsets that needed trapping for activation in FS2002 so that they now also operate if only the
high part is written. These offsets are: 07D6 (Altitude hold value, high word, i.e. metres) and 07EA (Mach hold
value, high word, i.e. whole Mach number).
• Adds support for the four “AUTOCOORD” controls (TOGGLE, OFF, ON, SET) in FS2002. These now operate
the auto-rudder switch successfully, though not the option in the Aircraft–Realism menu. IPC offset 0278 is
confirmed as working in FS2002 though again it doesn’t affect the menu option.
• Adds support for separately switching multiple fuel pumps, via a byte at offset 3125.
Version 2.85 (April 2002) includes only two changes:
• The “magic battery” facility is completely changed. It now operates to sustain the battery voltage for longer,
instead of operating the “Electric Always Available” override. This makes it completely independent of Aircraft
settings, battery and avionics switches, and engines. For added flexibility the rate of discharge can be controlled
by parameter in the Technical options page.
• The “Spurious Wind Fix” option, which was defaulted on since 2.84, is removed altogether, as it does not work
and creates an assortment of other problems.
Version 2.842 (March 2002) was released quickly after 2.84 to correct problems brought about by the experimental
code to detect and try to release stuck or ‘spurious’ winds (the “SpuriousWindFix”). Apparently, on some systems,
the original code had an unwanted effect on the temperature, making it fluctuate quite badly at times. In 2.842 the
code has been changed to avoid this, and is also now only activated when the wind difference has been over 5 knots
for over 10 seconds or so.
Version 2.84 (March 2002) contains these changes:
• The “white-out fix” option, originally introduced to fix a problem in FS2000, may or may not be applicable to
FS2002. This has not been determined. However, it seems that the clouds in FS2002 can extend up to 100 feet
above and below the specified values even when a deviation of zero is specified. This can cause the bug fix
applied by FSUIPC to operate, apparently clearing the cloud away when it shouldn’t and so making the cloud
layer appear very thin. This is fixed in this version by allowing a deviation in cloud extents by up to 200 feet in
either direction, in addition to the declared deviation.
• Facilities are added, in the Joystick section, to map twin propeller pitch and, independently, mixture controls, to
suit four engine aircraft. This operates in the same way as the facility to map two throttles to four engines, i.e. 1
to 1+2 and 2 to 3+4, and is only effective when a four engine aircraft is being used.
• The Joystick mapping facility (two controls for four engines) is extended to also operate with three-engined
aircraft (1 to 1+2, and 2 to 3). This operates independently from but similarly to the four-engined mapping
already provided.
• An option is added, via the INI file only, to force FSUIPC to provide cumulus cloud cover exactly as requested
by the external weather control program, rather than adjusting it for visual appearance. This applies to programs
using the FS98 weather interface (e.g. Squawkbox) not the Advanced Weather Interface (e.g. FSMeteo). The
parameter is KeepFS98CloudCover.
• A facility is provided in the IPC interface to allow external programs, both local and via WideFS, to send
controls to Flight Simulator. Any of the controls listed in the FS Controls documents can be executed, with
parameters if used. Details will be added to the Programmer’s Guide in the SDK—please refer to offsets 3110
and 3114. This facility applies to FS98, FS2000, CFS1, CFS2 and FS2002.
• Read/write access to the complete radio stack in FS2002 is now available in the IPC interface. Offsets 3118–
3123 inclusive provide COM2, standby frequencies for all of COM1, COM2, NAV1 and NAV2, and also the
sound switches and frequency swap toggles.
• Fixed an obscure bug in the random cirrus and jet trail cloud layer facility which could, in very specific
circumstances, and with local weather (e.g. downloaded ‘real’ weather) only, cause FS to crash.
• Corrected the “RPM scaler” value in FS2002. This value, provided at offsets 08C8, 0960, 09F8 and 0A90, was
previously only a quarter of the correct value for FS2000/FS98 compatibility.
• Several additional values are mapped, thanks to help from Timo Frenay. These include access to the
FS2000/FS2000 NAV/GPS toggle switch at offset 132C, ADF dial heading for FS98/FS2000/FS2002 at offset
0C6C (in degrees 1–360), and the Texture Quality setting at 0C92 (now also applicable to FS2002).
• The visibility limits facility is extended to allow a separate limit for when clouds are overcast (actually 7 or 8
oktas). This was intended to help with the FS2002 blue horizon problem, but this only whitens when the
visibility is below 4 miles, and meanwhile the clouds lose texture first, so it really is not the solution I hoped it to
be. (Parameter is MaximumVisibilityOvercast).
• Fixed a bug which would sometimes cause zero visibility to be set when FS2002’s weather dialogue is used to
set “unlimited” visibility. This arose because it seems this option, in FS2002 only, actually sets the visibility
value negative (presumably as a marker to mean “maximum”). FSUIPC sees this as below the minimum (which
defaults to zero), so sets the minimum! This anomalous value is now detected and treated correctly.
• An option, defaulted on, is provided, in FS2002 only, to try to fix the occasional stuck control acceleration—i.e.
the problem with some panels where the increments/decrements to values like heading, course, and so on, get
stuck at 10 or whatever. These “accelerations” are actually legitimate when a key or mouse is held down long
enough, but it seems some things can make them ‘stick’. What happens is that inside FS there's a timing check:
if less than around 400 mSecs have passed since the last control arrived (of any description), it stores a time
difference value which is checked for certain control actions in the main simulation engine. That routine then
accelerates the effect of the control (such as by incrementing/decrementing in 10's instead of 1's) according to
that time difference.
The problem appears to be that the FS code does not care whether the closely timed controls are all the same or
all different. I think the assumption is that, if they are arriving that close then they MUST be the same—the user
couldn't move the mouse to another spot, or select another key on the keyboard, so quickly. However, some
gauges or other driver programs can be sending controls very fast indeed, hence the problem. Whether this
explains all the cases reported I don’t know, but it seems likely.
The new check in FSUIPC is optional (in the Technical page), but defaulted on. What it does is intercept all the
controls, and change the elapsed time location inside FS before forwarding every different control, so that the
time elapsed looks large enough. If it sees successive identical controls then it leaves them, so they can be
accelerated as normal.
The end effect of this is likely to be the reverse of the original problem. For normal use of mouse and keyboard
there is no difference, but if some gauge or driver starts sending controls very fast (i.e. at less than 400 mSec
intervals) then the controls may not accelerate even when you expect them to. I tend to think this is better
though. (Parameter is FixControlAccel).
• Another option for FS2002, also defaulted on, is provided to trap certain “User Interrupt” occurrences, which
cause the “End Flight?” dialogue to appear on screen whilst flying. Apparently these can occur in certain
configurations if the aircraft is over-stressed or has some minor damage inflicted by, for example, taxiing over
rough ground. If they occur whilst on-line in multiplayer mode it can prove embarrassing. (Parameter is
TrapUserInterrupt).
• Changes have been made to the “magic battery” facility, when running on FS2002, to try to address the problem
that it prevents the electrics being failed via the Aircraft–Failures menu. First, the option now only operates
when Engine 1 is not running. Second, the option is suspended when any menu dialogue is in use. This seems to
cure the problem. Note that the facility cannot ‘repair’ a battery that has been allowed to run down. The only fix
for that is to get an engine started to charge it up, or to reload the aircraft.
• Some rather complex programming has been incorporated in the FS2002 sections of FSUIPC to try to prevent
the occurrence of a “stuck” wind speed. This phenomenon has been reported by several users, but is very
difficult to reproduce. Whether the “fix” applied now to the relevant FS modules actually works or not is
unknown at this time. The fix is optional, defaulted on. (Parameter is SpuriousWindFix).
Version 2.83 contains these changes:
• A facility for “Throttle synchronisation” is added. This can be operated by a Hot Key (set only in the INI file),
or through the IPC interface using a bit at offset 310A. When throttles are ‘sync’ed then the Engine selection
(E+1…) is applied to all four engines, and any input on any throttle control is applied only to the main single
throttle control. The hot key can only be assigned by editing the INI file.
• With some excellent help from Microsoft, the FS2002 “everlasting rain” bug is now fixed in a more efficient
manner that applies to all sources of weather, not just external. This is still optional and defaulted on, but the
option is now visible in the Option Dialogue (see the Clouds page).
• The problem in FS2002 of ‘subterranean winds’ in local “Real” weather, for METAR stations at altitudes over
1000 feet, is fixed by a new option in FSUIPC, defaulted on. This extends the surface wind to within 100 feet of
the top of the next wind layer, and also copies that layer’s wind speed and direction. This is only done at
stations over 1000 feet, and thus makes no actual change to the weather experienced. It just enables several of
FSUIPC’s options to operate correctly, the most obvious one being the Taxi Wind facility.
• The option to transfer the wind turbulence action to "wind variance", used in FS2000 to overcome the problem
that wind turbulence didn't work then, is not offered in FS2002 as it is not needed
• The FSUIPC Wind Smoothing action is no longer applied to local ‘Real Weather’ winds. Apart from its use in
smoothing the change between taxi and normal wind strengths it is not needed for interpolated real weather
winds, and it makes the operation of the taxi wind facility very precarious.
• The action taken by FSUIPC in order to restore the wind layers when wind transitions are in use (and the
visibility when graduated visibility is in use) did not work under Windows NT, 2000 or XP, due to a difference
in memory protections applied to the data being changed. A method of dealing with this has now been found.
Note that this only applied to users of NT and its derivatives (Win2000 and WinXP), and then only if you use
Wind Transitions and/or Graduated Visibility. No other users were affected.
• The two sets of velocities (GS and TAS) available at IPC offsets 3090 and 3178 respectively were cross-mapped
for FS2002, This is fixed in this version.
• The dynamic pressure is now available for FS2002 at offset 30D8.
• The ambient wind data at offsets 0E90 and 0E92 was incorrectly set to 0 when local weather was in use (on both
FS2000 and FS2002. This is corrected.
• In FS2002, loading the Default Meigs flight went unnoticed by FSUIPC, so this was not recorded at IPC offsets
3F02 ff.
• A long-standing bug is fixed that caused some visibility problems, when running with the graduated visibility
option disabled, after loading older Flights (FLT+WX files) which were saved with graduated visibility enabled.
• The “Smoke Control” value at offset 05D8 is now working for FS2002, for those aircraft that support this
facility (e.g. the Extra). Unfortunately the marker at 05D4 to show whether the smoke system is avialable still
isn’t working.
Version 2.82 (February 2002) includes some important fixes and improvements which will be mostly invisible to
users:
• Setting of a number of A/P and A/T switches through the IPC interface have been made more consistent,
especially when several are changed together.
• The Advanced Weather Interface (AWI) read-outs for Wind and Temperature layers are now able to cope with
FS2002’s downloaded local weather. Previous versions of FS downloaded weather only supported one layer of
each. The results can be seen in WeatherSet’s display: the “Set” winds show all the wind layers, the “Applied””
wind shows the current interpolated wind at the aircraft position. The temperature section shows all layers, not
the interpolated value as before.
• An error is fixed which, on FS2002, meant that FLT+WX files saved when FSUIPC’s Wind Transitioning is
enabled did not contain the wind layers actually set, only the current interpolated wind.
• On FS2002 the “SendWeather” broadcast is now always sent as soon as possible after any change in rain or
snow. This is in an attempt to circumvent the “everlasting rain” bug in FS2002. See also the next item.
• Weather provided from external sources, like FSMeteo, should now not experience the FS2002 “everlasting
rain” problem. This problem is apparently due to an error in FS2002’s weather routines which creates a second
rain animation when a cloud base (or rain base) is changed even through there may be one already existing from
the previous cloud, the one being replaced. Later, when no precipitation should occur, the new animation is
deleted but the previous one remains.
FSUIPC gets around this by stopping precipitation for one second when changing a cloud or rain base altitude.
This may not be foolproof but has so far turned out very successful. Unfortunately the same sort of fix cannot be
applied to downloaded or user-set local weather. For that I fear a patch from Microsoft will be needed.
This action is defaulted on, but can be turned off in FSUIPC.INI (just set the “FixRainProblem” parameter to
“No”).
• The wind transitioning and graduated visibility facilities are now reset when a new flight is loaded. This fixes a
problem in FS2002 where changing either wind or visibility in the “create a flight” dialogue could result in no
change at all when going to fly the created flight.
• The Hot Key facility is extended to allow additional key combinations to be signalled. Combinations like
Shift+Control+Q can be accompanied by yet another key. The main combination is signalled with the additional
keycode as a parameter. Full details will be added to the Programmers’ Guide in the FSUIPC SDK in due
course.
• An additional facility is added to the AWI (Advanced Weather Interface) to allow local programs, gauges or
modules to obtain the QNH for any location or valid weather ICAO code from downloaded local weather. This
facility is not usable through WideFS. It will be documented for C users only in the next SDK update.
Version 2.81 includes these changes, mostly technical rather than user-oriented:
• The random rain generation is no longer enabled by default, but when enabled the user has more control over the
probability of it starting and, independently, stopping. Additional parameters “RainStarter” and “RainStopper”
are added for this.
• The TCAS range limit for AI aircraft did not operate correctly in the Southern Hemisphere. This bug is now
fixed. The same problem applied to the TrafficLook program, which displayed the range and heading incorrectly
in the South. The included version 1.06 of TrafficLook fixes this too.
• The taxi wind control buttons in the Wind options page are replaced by a single button that changes functions
(and labels). Hopefully this will be less confusing.
• A problem of negative upper wind speeds when extending the top wind upwards is fixed.
• Additional checks have been added on memory allocations, with a warning and curtailed FSUIPC operations
ensuing if any request for memory is turned down.
• The 16-bit word at IPC offset 337E is constantly incremented whilst FSUIPC is being called by FS. This can be
used by WideFS client programs to detect when FS crashes or is closed. Leeway for a ‘frozen’ value should be
allowed, however, as FSUIPC is not called often when FS is loading aircraft and scenery.
• The currently loaded FLT file details at IPC offset 3F04 were incorrect for FS2002—they incorrectly included
the full FS path. This is now rectified.
• IPC offset 0842 (vertical speed) is now operated by FSUIPC in FS2002—but as it is derived from the value in
02C8 it does not work in slew mode.
• IPC offset locations 0C18, 0C1A and 0C20 are now operational in FS2002.
• Writes to IPC offsets in the range 3060 to 31FF are now passed through to the FS2002 sources for these values.
Apparently this enables accelerations to be changed ‘on the fly’ (which is a surprise! <G>).
Version 2.80 changes are:
• Added FS2002 option for FSUIPC to intercept ATIS/ATC requests for weather and substitute destination
weather details for pressure (QNH), visibility and clouds, where available (e.g. when using FSMeteo). This also
adjusts the cloud bases to AGL so they are reported correctly by ATIS. The option is only applied to global
weather (not downloaded or user-set local weather).
• Options have been added to suppress all wind turbulence and all cloud turbulence (independently). These are
mainly for use in FS2002 when the user has opted for heavy A.I. traffic. Apparently the presence of turbulence
nullifies some FS2002 optimisations, and with heavy A.I. traffic being simulated the frame rates can take a dive
(e.g. 203 fps instead of 20-30 fpm over Northern France with maximum A.I selected).
• It seems that, in FS2002, wind gusts are specified internally by the maximum wind speed, not the difference as
in FS2000, so the GustsRelative option is now, in FS2002 only, fixed at No and the parameter is removed from
the INI file.
• Fixed an error which would prevent the user setting wind turbulence through in the FS dialogue.
• Fixed the A.I. traffic Ground Speed reported in the IPC data. Previously it was being supplied in ft/sec instead of
knots as documented.
• Added processing in FS2002 for the “KEY_TOGGLE_ELECTRICAL_FAILURE” event, so that it behaves the
same as it did in FS2000 even if the user has set the FSUIPC magic battery option.
• Included an FS2002 option (usable only via the INI file) to convert cloud turbulence into wind turbulence for
any cloud layers, not merely those within the surface wind. This was an attempt to fix the dip in frame rates
when there is turbulence and dense A.I. traffic, but then it was discovered that wind turbulence had the same
effect, so the facilities to suppress both were added. (Note that this also applies only to global weather, whereas
the suppression option applies to all weather sources).
Version 2.79 changes are:
• The older flight axis controls (not actually assignable in the FS CFG file now) are not reversed, mapped and
calibrated, as they were. This was done for continued compatibility with FS98, but apparently it interferes rather
catastrophically with some new panel designs. [Fixed in 2.781 which went on limited release]
• Apparently FS2002 suppresses cloud turbulence completely when it occurs within the surface wind layer. This
means that using the “extend top wind layer upwards” option when there is only a surface wind will render cloud
turbulence completely inoperative. Additionally, FSUIPC’s own wind transitions operate by making a single
thick surface wind layer which it changes according to altitude, so again preventing any cloud turbulence.
To get around this, FSUIPC now detects when cloud turbulence should be operating but isn’t, and sets the wind
turbulence value instead, to compensate. The two types are actually indistinguishable in flight in any case.
[This change was incorporated into version 2.782 which was on Beta test for a while]
• Additional protection against duplicate copies of FSUIPC has been added.
• A range limit has been implemented on A.I. aircraft added to the TCAS tables. This defaults to 40 nm, but can
be adjusted in the Technical options and the limit can be turned off altogether by setting the range to 0.
Version 2.78 includes the following changes, in roughly descending order of importance to most users:
• Winds reported via FS2000’s and 2002’s ATIS, and those used by FS2002’s ATC, are corrected to reflect the
surface winds when global weather is being used (e.g. weather set from FSMeteo or other external weather
programs). For FSMeteo this can be the “destination” surface wind when that has been set. Additionally, to
avoid ambiguity in runway assignment, a calm wind is communicated as a 1 knot wind. This is similar to the
arrangement for FSTraffic and Adventures so that ProFlight2000 and Radar Contact, for example, select the
same runway as the traffic.
• Settings made through the IPC interface to FS2002’s autopilot registers (heading, altitude, airspeed, and vertical
speed) are made much more accurately now, by using direct access into the simulation engine. Previously the
only access method found tended to restrict these settings to integral values.
• The visibility base is now set at –1500 feet, instead of zero, so that those areas below sea level get the correct
surface visibility. This applies to FS2000 and FS2002. Settings across the Advanced Weather Interface are
converted automatically between 0 and –1500’ (in metres).
• The option for the FS2002 A.I. traffic data to provide TCASbyTailNumbers is replaced by the TCASid
parameter, with additional options which can supply aircraft type or title information instead, as required.
Details are described in the Advanced User’s guide and also in the short text document covering the TrafficLook
utility.
• Attitude Indicator and Flight Director pitch and bank values (2EE8, 2EF0, 2F70, 2F78) for FS2002 are now
made compatible with FS2000 and promoted to the main offsets table. (This will be covered in the SDK Release
9).
• Setting the brake pressure by writing directly to 0BC4 and 0BC6 now works in FS2000 and FS2002 as, I’m told,
it used to in FS98. (SDK Release 9).
• The Magnetic Variation reported to adventures and used in a number of APL variables, is corrected in FS2002.
If the same Flight was reloaded after ending an Adventure, the Magnetic Variation value is otherwise set
incorrectly (to the default flight value, by the look of it).
• The APL variable GROUND_ALTITUDE is corrected for negative values. Previously, for parts of the world
with land below sea level, this variable gave an extremely high positive value instead! This fix applies to
FS2000 as well as FS2002.
• The Propeller Pitch calibration page in the FSUIPC options has been corrected to show “Feather” to the left of
“minimum”, as for turbo-props the minimum setting is the one needing a central null zone, with feathering
actually being below this.
• A facility to set a Hot Key to restore the X1 simulation rate is added, though only by adding the
SetSimSpeedX1 parameter to the FSUIPC.INI file manually. This is mainly for use on FS2002 where otherwise
each change from, for example, X16 to X1 causes a scenery texture reload. More details in the Advanced User’s
guide.
Version 2.77 contains a number of relatively minor, but nonetheless, important changes, concerning FS2002
support:
• Autopilot information and control is made available to ADVentures. FS2002 seems to have omitted this. Even
the A/P heading setting inaccuracies are replicated (it was out by 1 in FS2000/FS98).
• The VOR1 and VOR2_RADIAL variables for adventures are corrected to be Magnetic, not True, bearings, for
FS98/FS2000 compatibility.
• IPC offsets are added for Pushback status and control. These are also made available to ADVentures. (See
version 8 or later of the SDK).
• IPC offsets are added for surface type and condition. What the information provided actually means hasn’t been
decoded, nor is it known whether this only refers to the surface when the aircraft is on the ground, or whether it
is always the surface under the aircraft at any altitude. (See version 8 or later of the SDK).
• The cloud precipitation base is now set to –1500 feet when rain or snow is set, whether through the Advanced
Weather Interface, or the special IPC offsets, or from Adventures. This is also applied to FS2000. It fixes a
problem where a base of zero (the FS2000 default) meant that rain stopped at sea level. In a Cessna on the
runway at Schiphol (EHAM) this would have meant no rain! The value –1500 is adopted as that seems to be
FS2002’s default—maybe the lowest ground elevation in FS2002 is –1500 feet?
To avoid this making changes necessary to programs using the Advanced Weather Interface (e.g. FS_Meteo,
WeatherSet and WidevieW), negative values for the precipitation base are converted to zero before supplying
them across the interface and, conversely, zero values are converted to –1500 feet.
• The wind directions reported in the Adventure variables were negative when in the range 180–359 (i.e. these
directions were represented by –180 to –1). This is some change in the ADVDRV module. FSUIPC now takes
over this conversion so that the directions are correctly 0–359.
• Requests for Autopilot Mode changes are now only passed onto the FS2002 autopilot when the request actually
means a change. Previously, if, for example, “altitude hold on” was requested through the IPC, FSUIPC would
command the A/P to turn on Altitude Hold. This made the autopilot re-initialise this mode even if it was happily
holding an altitude already! The result, in this case, was a sudden burst of porpoising!
• The option to correct the sign on the Vertical Speed when the target altitude meant the aircraft should go the
opposite way is improved by making the V/S become zero when the difference is less than 30 metres. This is
only applied to FS2002 where the V/S behaviour otherwise seems a little more erratic.
Versions 2.761–6 were limited test releases that contained assorted bits of extra code for FS2002 only to support full
Autopilot control and checking in Adventures, plus assorted other changes for testing.
Version 2.76 adds the Technical page option to make the “magic battery” work even if the Avionics switch is off.
This option makes the action revert to how it operated in version 2.511, and is apparently necessary for flap
operation in Wilco’s 767 PIC.
A section is added to the User Guide to explain how to make the FS2002 autopilot usable without forcing wing
levelling. This isn’t actually anything to do with FSUIPC, but I get many inquiries about it.
Version 2.751 was an interim limited release with the following changes:
• An error in the SendWeatherAlways=No facility meant that weather broadcasts were still being sent more often
than needed, only being limited by the SendWeatherInterval which defaults to one minute.
• A problem in FS2002’s vertical speed operation has been worked-around by special action in FSUIPC.
Apparently the V/S used for climbs and descents can get ‘stuck’ at its levelling-off V/S (750 fpm), ignoring the
actual set value in the V/S register. Toggling the ALT hold off and back on quickly fixes this, and that is what
FSUIPC now does if it spots the condition arising. This is only done when there’s at least 1000 feet to go, to
prevent interference with levelling off.
Version 2.75 contains a modified method for broadcasting weather changes to other parts of FS2002 (only).
Apparently the original method, of sending changes as they occurred, had the unwanted side effect of causing the
ATIS identifier (alpha to zulu) to be updated each time.
The weather broadcasts are now, by default, sent at most at one minute intervals, and then only if some aspect of
ATIS-reported surface weather has changed by a significant amount. Both parts of this action are controllable by
new options, but only via the FSUIPC.INI file. For full details please see the description of SendWeatherAlways
and SendWeatherInterval in the Advanced User’s Guide.
Version 2.744 was changed to compensate for an odd feature of FS2002 which clears the SIM1 pointer whenever a
new Flight or Aircraft is loaded. This caused some odd behaviour in other modules. For example, AutoSave then
stopped saving flights altogether, as it thought SIM1 was missing and so the save data was inaccessible.
Version 2.743 fixed a data-checking problem in the Advanced Weather Interface (as used by FSMeteo) which
somehow only came to light with FS2002 under Windows 2000 and XP, even though it is a long-standing error and
should have been a problem on FS2000 and Windows 98.
Versions 2.741 and 2.742 were limited interim releases just featuring better acceleration and velocity values from
FS2002, for specific tests.
Version 2.74 fixed some new problems with FS2002 operation, as follows:
• Trying to set the OBS1 or OBS2 values through the IPC interface did not work.
• Some location previously used for DME distance and speed data is, in FS2002, used to control the switch on the
RMI2 for selecting speed or distance. FSUIPC overwrites this switch and the result was that only speed was
displayed in that RMI. The fix is to move the locations for DME distance and speed to FSUIPC’s own memory.
This works well and hopefully does not deprive any older gauges of this information.
• The GS slope calculation is more accurate. It could have been as much as 0.05% in error before.
Additionally the following FS2002 improvements were added:
• More accelerations and velocities are added, but whether these are correct or not has not yet been determined.
They may need changing again.
• Support for proportional toe brake calibration is added back (see the Joystick section of the FSUIPC options).
These are using the (new to FS2002) AXIS_LEFT_BRAKE_SET and AXIS_RIGHT_BRAKE_SET controls.
• The Brake Indicator offset (0DCA) is made to work more or less correctly by deriving the value from the brake
pressures.
• The demise of the FLAPS_SET capability in FS98 and FS2000 is compensated by allowing another 9working)
AXIS control to be assigned in its place, for calibration in the FSUIPC joystick section. The number of the
control to be used has to be declared in the FSUIPC.INI file.
Finally, the support for undocking and positioning/sizing the FSNav window has been withdrawn. This has been
made necessary by continuing problems in getting it to work reliably, and in trying to keep up with successive
releases of FSNav. Folks who miss this feature should write to Helge to see if he would build the facility into FSNav
itself, where it will be much easier to implement and more reliable in operation.
Version 2.73 corrected the calculation of the GlideSlope angle, used by precision approach programming like that in
Project Magenta. There was a version 2.72 as well, which was nearly as good though not using the correct formula.
Version 2.71 fixed the Joystick calibration section of FSUIPC’s dialogues. Due to a change since the final Beta of
FS2002, this section caused FS2002 to crash.
Version 2.70 was the first test version released to run with the Release version of FS2002.
Versions from 2.512 to 2.69 were made during FS2002 development to try to keep up with the changes from
FS2000 to FS2002. In particular, facilities for driving TCAS for FS2002’s A.I. aircraft were added in 2.601. None of
these should now be used.
Version 2.511 was released soon after 2.50 to fix an additional problem with some Autothrottles, again due to a
difference in two of FS2000’s throttle controls.
Version 2.501 was released within 12 hours of 2.50 to correct a problem with Trim on some panels. This was a
conflict of two different trim controls with reversed signs.
Version 2.50 changes are:
• A facility is added to allow a hot key to be defined to set the standard Barometric pressure (29.92” or 1013.2mb)
on the altimeter.
• The default wind variance, when converted by option from wind turbulence, is reduced by around 30% by
popular request. There is now an additional parameter in the Winds page that can be used to adjust this from
very mild to twice as variable as in earlier releases.
• The random maximum visibility extension option is revised to use a linear distribution of adjustments when the
maximum visibility set for these conditions is less than or equal to 60sm, but retain a somewhat less skewed
distribution (towards the lower values) when the maximum is higher.
• When a Taxi Wind change is requested at an inappropriate time, as, for example, when not located within the
surface wind layer, FSUIPC ignores the request and makes a standard Message “Beep” (which may be a ‘ping’
or a chord, or whatever is assigned in Windows). Unfortunately this action also applied when the Automatic
Taxi Wind option was selected, making a sequence of such noises occur if the aircraft is suddenly placed in an
upper wind whilst in Taxi Wind mode. In this version the sound is suppressed in automatic mode.
• Fixed a bug that prevented newly defined Hot Keys (in the Technical page) working until FS is re-loaded.
• A bug is fixed which prevented applications writing to the IPC offset 3200, used to provoke key presses in FS.
In particular, this error stopped the WideClient “SendKeyPresses” facility operating.
• A serious bug is fixed which caused an FS crash as soon as any application attempted to set a request for a
repeating hot button.
• The hot button facility for applications is extended to cope with the FS “POV” pseudo-button numbers 32–39.
Full details in the SDK.
• The IPC offset 038A now forces and ATIS re-scan, as documented.
• IPC offset 3300, providing radio and autopilot status flags, is now operational as far as possible on FS98 as well
as FS2000.
• New controls for specific FSUIPC options are provided at IPC offsets 3308 and 3309 (see the latest SDK for
details).
• With FS2000, and assuming that you can actually make successful physical connections (either by multiple
Game Ports or USB devices), FSUIPC can now assist in supporting duplicate joystick axes for the main flight
controls. It does this by intercepting declared controls assigned in FS2000.CFG and converting them into the
assigned controls. Up to 4 elevator, aileron, rudder, throttle, left brake and right brake controls can be equated.
For more details see the Advanced Users Guide.
• FSUIPC can feed a specific pre-defined surface wind to FSTraffic when the aircraft is above a given specified
altitude. Apparently this is used by some sets of FSTraffic tracks to provide airway traffic. For more details see
the Advanced Users Guide.
• A bug is fixed which caused FS to hang in a loop if an application program tried to read or write IPC offset
FFFF.
• The altimeter altitude reading is now available to applications at IPC offset 3324. This saves having to calculate
it based on the difference between the QNH and the Kollsman setting. Full details in the latest SDK.
• Facilities are provided to allow applications to disconnect the primary control axes from FS, where these are
controlled through joystick control inputs. This is so that proper control for auto-pilots can be obtained without
spurious interference. For details see offset 310A in the table in the latest SDK.
• The incoming joystick axis values can be read, post calibration (whether by Windows, FS, or FSUIPC), but
before being fed to FS (unless stopped by the facilities described in the previous item). See offsets 3328 ff in the
latest SDK.
Version 2.40 includes these changes:
• Improved and extended the whole presentation and coverage of the Joystick calibration facilities to make them
more flexible and somewhat more obvious. The additions include analogue spoilers, elevator trim, and flaps, and
facilities to enable reverse thrust and reverse propeller pitch to be controlled from the main throttle and propeller
pitch axes.
• Facility added to make FSUIPC send the wind direction to FSTraffic in degrees Magnetic, instead of True, so
that its runway assignments are more in accord with likely ATC assignments in Proflight2000 and Radar
Contact, and similar programs.
• Sends a minimum 1 knot wind to FSTraffic in calm conditions so that earlier versions of FSTraffic do assign a
runway and provide traffic, and later versions assign a compatible runway to that chosen by ATC, at least most
of the time.
• Facility added to fix cockpit windows (i.e. panel parts and scenery views) in position so that they aren’t
inadvertently moved or re-sized when using the mouse on switches and controls.
• Added barometric pressure smoothing as an option (normally overridden when using FSMeteo, which does its
own). This is in the Technical page of the FSUIPC settings.
• Improved the way the joystick calibrations operate by avoiding sending on to FS2000 any values which are the
same as the last ones sent. In concert with null zone and centre area calibrations this stops joystick jitter mucking
up autopilot settings—especially throttle and auto-throttle interference.
• Fixed a bug in the settings system which caused the settings on all un-visited pages to be reset to default if one
of the default buttons (on the About page) had been pressed but then Cancel or ESCape used to retain original
values.
• Fixed a bug in the Joystick calibrations settings which could corrupt the centre values if any of the Joy pages
were visited then left by pressing Cancel or ESCape.
• Fixed a bug with the FSUIPC wind transition system on CFS2 that prevented a load of a subsequent mission
without closing CFS2 and reloading it.
The following changes affect the IPC interface and are therefore only of interest to Programmers (for full details
please refer to the Programmers Guide in the 5th release of the FSUIPC SDK):
• Provided a location (the byte at offset 32FE) which changes every time a registered Hot Key occurs, to enable
any programs using this feature to do so more efficiently.
• Added a Hot Button facility, working very similarly to the Hot Keys, but able to test any joystick button.
• Added more aircraft dynamics, at offsets 3078–3088, 30D8, 3190–31B8, and fixed the Body Axis linear
velocities. (Please see the Programmers Guide in the 5th Release of the SDK for full details).
• Fixed the facilities to display adventure-type text, which were released in a broken state in version 2.30.
• Provided the full network-compatible (“UNC”) pathname to the FS installation via a new offset.
• Provided (on FS2000) the full path name of the last loaded Flight (FLT) file.
• Provided facilities (on FS98 and FS2000) to load and save flights by name (‘situations’ on FS98).
Version 2.30 is another major release, with the following improvements:
• Joystick calibration assistance on FS2000, for more precise definition of limits, dead zones and centering.
• Implementation of fully proportional toe braking on FS2000 for those lucky enough to have USB pedals fitted
with these, or additional axis capabilities such as provided by EPIC or multiple game port cards.
• Additional IPC offsets defined for access to more FS2000 values, including current AIR file pathname, current
aircraft description (as in the Aircraft menu), flaps détente increment, full body-axis velocities and accelerations
(for use with motion platforms), loaded weight, mass and vertical acceleration. Most of these are thanks to Ian
Donohoe of ADE fame.
• Facilities for external programs to display text in the usual Adventure display areas (including the diverted
Window or remote access provided via my AdvDisplay module).
• Extension of IPC interface memory mapping to 0xFFFF, to allow further third party extensions, plus special
support for access to specific modules in FS for expert research. Use of either of these extensions is by
arrangement when justified.
• Random cloud turbulence and icing, and wind turbulence toned down a little to make them a little less likely and
usually a little less violent. This was considered a necessary change now that the wind turbulence can be made
effective by converting it to “wind variance” (which, incidentally, is now determined to be random variations in
wind direction, not speed).
• The engine starter system for FS2000/CFS2, supported through the IPC interface by special actions in FSUIPC,
is improved so that the engine selection is restored afterwards even if multiple engine starting is overlapped. It is
still recommended to start engines in sequence, however, ensuring that the starter is disengaged each time before
proceeding to the next.
• An old option, “N1N2asFS98=Yes” is resurrected in the [General] section of FSUIPC.INI to allow FS98 model
users to start up FS2000 with an FS98 model aircraft and still have N1 and N2 the correct way around before
starting engines. (FSUIPC doesn’t detect that they need switching till the engines are started).
Version 2.20 includes these additions:
• An option is added to convert FS2000/CFS2 wind turbulence to wind “variance”, which at least seems to do
something [actually it provides wind direction variations], whereas the turbulence options seem ineffective (as
least in FS2000).
• The random cloud turbulence option now limits the amount of turbulence generated according to the cloud base
altitude above ground level (actually, above reporting station altitude, where known). Below 2,500 feet the
turbulence is kept “light” at maximum. Below 6,000 feet severe turbulence is not allowed. Neither restriction
applies to thunder clouds, which will normally contain moderate turbulence at a minimum.
• A facility is added to keep the electrics going when they are running on battery and it runs flat. This is to get
around the rather quick battery discharge on the FS2000 airliners.
• IPC offsets are extended to include the range 0x4000–7FFF. This area contains no useful data at present, but
parts may be allocated on request for use by third party programs, and used for further extensions to FSUIPC’s
facilities as needed. This extension is also supported by WideFS versions 4.20 and later.
• For FS2000/CFS2 the value of the aircraft’s zero fuel weight is now accessible, in pounds x 256, via IPC offset
0x3BFC (as a 32 bit integer).
• Details of more efficient methods for using FSUIPC’s IPC interface from within FS (such as from Gauges and
other Modules) are now included in the FSUIPC SDK.
Version 2.11 contains some important fixes and improvements, which are probably all invisible to the user!
• The call made by FSTraffic to get the current surface wind is intercepted and the response set to provide
FSTraffic the correct surface wind even when Wind Transitions are being used.
• FSUIPC now detects the actual local weather implemented at the aircraft position, not just the METAR-
stipulated local weather at the three nearest reporting stations. When local weather is in use, FS2000 is
constantly interpolating between neighbouring weather station reports, so it is changing slightly all the time the
aircraft is moving. FSUIPC now reports this changing weather more accurately for the use of external programs.
• A bug is fixed which prevented the engine combustion flags being cleared to zero when the engines stop.
• A serious bug is fixed which could have caused some very odd weather effects to occur when an unusually large
number of temperature layers are set. For example, 16 or more layers would have made the implemented
visibility change and not reflect the values being set.
• The facilities to control the jet engine starter switch and prop plane magnetos/starter switch, through the original
FS98 offsets, have been improved to work well on all four engines for FS2000 jets and prop aircraft. They are
also usable on FS98 aircraft transposed into FS2000, but the FS98 prop plane magneto settings are still wrong.
The latter is a problem even using mouse or keyboard (without FSUIPC installed), and I’ve not been able to find
a way around that. Application programmers need to read the notes alongside the appropriate FS98 offsets in the
SDK’s Programmer’s Guide (revision dated 15th January 2001 or later needed).
• Cloud turbulence was reported in the FS98 interface, for weather readers, as at a maximum all the time. It now
reads correctly. [This was supposed to have been corrected in Version 2.01, but apparently it wasn’t].
• FSUIPC now detects other copies of itself in the Modules folder, during the FS loading sequence. If it finds any
earlier versions it displays a message detailing the problem and its own filename and version and that of the
(older) offending version, and, when this is acknowledged, terminates itself. This will leave the older version(s)
still running.
If it finds another version which has the same version number as itself, it does the same if it isn’t the first in the
folder. If it finds a later version, it does nothing as it can then safely assume that the later version will provide
the warning and will terminate itself, leaving this one running okay.
• The original FS98 offset to allow the engine to be failed is now made to work in FS2000 as well, with an
extension to select any or all of the four engines to be failed/fixed.
Version 2.10 fixes are few more rather odd things reported since version 2 was released:
• As a work-around for some add-in modules which seem to be adding their Menu entries to FS2000 in a rather
unorthodox or erroneous manner, this version of FSUIPC delays creating its additional IPC window until after
hooking the main FS2000 window. This ‘solution’ was determined by experiment, not by scientific deduction,
and the reason merely changing the order in which things are done in FSUIPC affects how other independent
modules behave is not clear—it is probably an indication of some incorrect assumptions, or use of un-initialised
variables, in those modules.
• Further on the subject of Menu entries, facilities to specify exactly where FSUIPC adds its menu entry are
provided in the INI file. Details are published in the Advanced Users document.
• The IPC interface can now be used by applications to specify Hot Keys and see indications of when these are
pressed whilst FS has the focus. Full details are included in the revised FSUIPC developer Kit, published
simultaneously.
• The IPC mappings of the Pause Control and Pause Indicator have been corrected to match FS98 correctly.
Details are in the revised SDK.
• Minor other IPC mappings are changed to provide surface wind compatibility with versions of FSUIPC before
2.00.
Version 2.01 was brought out quickly after version 2.00 to correct a couple of bugs which, inevitably, crept past all
the Beta testing. These are the fixes (plus a few of extra ‘features’):
• The enhancements in FSUIPC to assist full light switching for FS98-compatible application programs ruined the
lights control for some panels/gauges. This particularly affected strobes. This has been corrected by separating
off the FS98 light control facility completely from the FS2000 global area.
• The tendency on some systems for the Options and Settings window to merely flicker on and off when selected
has finally been fixed for good (I hope!).
• Facilities for WideServer to have all mapping, both for reads and writes, controlled by FSUIPC are incorporated.
Previously WideServer used FSUIPC for FS2000/CFS2 writes, but had to take care of its own mapping for
reads. This duplication is now removed, making future maintenance and enhancement more straight-forward.
WideServer version 4.01 is needed for this.
• The operation of the Vertical Speed correction (part of the “A/P Altitude Fix”) is suspended whilst Project
Magenta’s MCP Enhanced Autopilot is operating. It seems that the way the MCP interacts with the FS autopilot
can cause problems if the V/S sign is changed.
• Facilities are now included to allow users to move the FSUIPC menu entry to wherever they like in the menu
system, renaming it or adding it as a top level menu entry. Full details are given in the Advanced Users
document. This is primarily aimed at helping those who have other Modules which interact badly with the menu
system. Moving the FSUIPC entry may help.
Version 2.00 includes a large number of changes, though many are fairly technical or invisible to the user. They are,
in order of application:
• CFS2 support added
• Fixed a bug where upon a "clear weather" action, whether user triggered or not, FSUIPC may set "null" weather
from the FS98 input areas even though no FS98 weather control program had yet provided any data for this.
• If the user presses FS2K's Clear Weather button, FSUIPC also clears its memory of any previous FS98-program
weather data, so that FS2K will run its own local weather okay without it being overridden by FS98 weather
from a program now not running.
• When the FSUIPC clear weather hotkey is used, the first time it restores any weather set by an external weather
program (as before), but if it is used a second time without any intervening weather input, it clears down all
previously set external weather too.
• Fixed an error in the thunderstorm option so that when a generated thunderstorm dissipates the accompanying
rain is not also stopped every time. This allows the rain generation option, or external rain control, to continue
normally.
• The type of aircraft being flown (prop or jet, mainly) is now determined more accurately, so that the correct set
of gauge data can be obtained.
• Clouds created in FS2K's weather menu as global, or appearing as part of global weather set from downloading
'real weather' or running an Adventure, are no longer cleared every few minutes, or replaced by cirrus and/or jet
trail layers when these latter options are enabled. This bug was introduced in 1.99, with the extension of the
added cloud layer facility to FS2K's own global weather settings.
• The wind smoothing (part of wind transitions) can be set much more slowly than before: 1 knot or degree every
so many seconds.
• The autopilot corrections for Vertical Speed (going the wrong way), and for the difference in calculation of
target altitude from the altimeter reading, can be enabled or disabled on-the-fly, in the Settings dialogue.
• An error that, in some very unusual circumstances, could cause an "unsmoothed" wind speed and/or direction to
be transiently set into FS2000, before normal smoothing is resumed, is fixed.
• Different FSUIPC.ini files can be used for differing FS2000 requirements, even loading from the same FS2000
installation. This involves using multiple FS2000.CFG files with different filenames, with a section added in
each reading:
[FSUIPC]
ControlName=<name>
Then loading the different FS2000 configurations via:
FS2000.exe /CFG:<filename>.CFG
will allow FSUIPC to identify its correct .INI file, i.e:
<name>.ini
Note that the Log files, when logging is enabled, will also use this <name>, not just FSUIPC.log etc.
• The support for remembering undocked screen positions for FSNav3 is extended to cover FSNav4. However,
when setting this up take care to undock the FSNav4 window in the first place using the Menu it offers, not its
hot keys, or else FSUIPC may become out of step. Once it works it should continue working, but to reset it in
case the window is lost, just delete the [FSNav] section in the FSUIPC.ini file before loading FS2000, and set it
up again.
• Additional engine values are now made available for access by external applications. These are: Oil
Temperature, Oil Quantity and Oil Pressure. Note, however, that some FS2000 aircraft (including the default
B777) create values that may be too high to fit the 16-bit capacity for these in the old FS98 mappings. The
B777's Oil Pressure is the main example. Apparently this problem can also occur with the Fuel Flow values
already supported.
• An error is fixed which would cause the temperature layers in FS2000 to be re-built unnecessarily just because
the surface temperature altitude is changed by the weather control program (this value is used to indicate
METAR station elevation). This mainly prevents the weather logging looking odd, but may also help to prevent
any transient temperature anomalies.
• If an external weather program provides a surface wind with a zero upper altitude, then a figure calculated as
ground plus 2000 feet is assumed.
• When IPC logging is enabled, multiple successive identical reads or writes across the IPC interface are now not
all individually logged. The first one is logged, then, before the next different entry, a count of the repeats is
logged.
• Hydraulic pressure values, scaled using an estimated formula, are now made available to external programs.
• An option to "auto-tune" the ADF radio is available. This is selectable by setting "AutoTuneADF=Yes" in the
.ini file. When FSUIPC detects no NDB signal being received it alternates the fractional part of the ADF
frequency between .0 and .5 every 10 seconds or so. This allows external cockpits built with only whole-number
ADF radio facilities to be used in areas like the U.K. which have many NDB frequencies ending in .5.
• If gusts in upper winds are suppressed, but all gusts are not, then there was an error in FSUIPC with surface
winds extended upwards by the “Extend surface wind” option. The whole wind layer was then treated as an
"upper wind" and so gusts were suppressed. This is now fixed so that gusts are allowed but only in the lower
2000 feet.
• The autopilot vertical speed correction now does not take effect if the target altitude is at or below ground level,
or zero, whichever is the higher.
• Control of the FS2000 lights via original FS98 offsets at 0x280, 0x281 and 0x28C is improved. However, for
full individual control of all FS2000 lights, programmers are recommended to use the individual bits at offset
0xD0C.
• Successive settings of zero surface wind data by the external weather program are ignored, and not allowed to
interfere with other weather data being set from FS2000 sources or via the Advanced Weather Interface.
• The slew control flag offset is now correctly mapped for reading as well as for writing.
• Additional FS2000 switches can be read and controlled through special offsets, as follows:
byte 0x3100 Engine primer (write non-zero to operate, this is a one-shot)
byte 0x3101 Alternator (1 = on, 0 = off)
byte 0x3102 Battery
byte 0x3103 Avionics
byte 0x3104 Fuel pump
byte 0x3105 VOR1 morse ID sound
byte 0x3106 VOR2 morse ID sound
byte 0x3107 ADF morse ID sound
• Additional FS2000 radio and autopilot status indicators (read only access) are provided through a 16 bit word at
another special offset, thus:
word 0x3300 Navaid flags, bits allocated (set when true):
0 = good COM
1 = good NAV1
2 = good NAV2
3 = good ADF
4 = NAV1 has DME
5 = NAV2 has DME
6 = NAV1 is ILS
7 = AP NAV1 radial acquired
8 = AP ILS LOC acquired
9 = AP ILS GS acquired
10-15 reserved
• External inputs to the rudder, aileron and elevator axis offsets via FSUIPC are now subject to a range check, and
scaled down if this range is exceeded. The correct limits are -16383 to +16383. Additionally, axis inputs can be
scaled upwards to meet this extent, if required. To do this set:
AxisCalibration=Yes
With this option, by default some flattening is applied to the values so that the response is not so vigorous near
the centre (0). To calibrate the axes you must move all three controls to their maximum extents on each fresh
load of FS2000. Alternatively, you can set "AxisCalibration=Set". This operates as above, but adds a new
section to the .ini file, thus:
[AxisCalibration]
Rudder=<max>,<slope>
Elevator=<max>,<slope>
Aileron=<max>,<slope>
The <max> values are those which are scaled to 16383, whilst the <slope> values control the amount of
flattening in the centre: from 0 (no flattening) to 100 (maximum flattening. Note that the flatter the centre, the
steeper the sides, so it is always a compromise. The defaults are 50, 40, 40 respectively, for the three axes.
Once this calibration has been done and the section in the ini file, produced (or added manually), there is no
need to re-calibrate on each new FS reload. The "AxisCalibration" parameter resets to "Yes".
Note that the "AxisCalibration=No" setting is equivalent to setting "Yes" and adding the section:
[AxisCalibration]
Rudder=16383,0
Elevator=16383,0
Aileron=16383,0
However, if these values are exceeded during an FS2000 session, the new maxima will replace any values in the
ini file.
• Fuel flow values fixed for gauges using the PPH_SSL value instead of the more usual PPH and GPH values.
• The .ini file options for AnalogMapping, WeatherControl and ControlMapping are now removed. they are no
longer optional. And the other options cannot be changed for the UIPCMAIN window class.
• The DME distance and speed strings, readable at offsets from 0xC29, are now made more consistent in format,
with either:
nn.nsnnnsz (n=decimal, s=space, z=zero)
for each DME distance and speed, or, where the distance is over 99.9nm
nnn.snnnsz
• Prop plane Magneto and Starter control, through the FS98 offsets, now works correctly for FS2000 aircraft and
panels.
• Inputs across the FS98 offsets which need FSUIPC to call routines in FS2000 to trigger changes are now
discarded when those inputs are attempting to set something already set.
• FSUIPC now includes a facility to send keystrokes to FS2000. For this to operate correctly the PC must be using
Windows 98, ME or 2000. The facilities used do not exist in Windows 95 nor, I think, in NT. The feature
operates through new special offsets, as follows:
dword 0x3200 message (WM_KEYDOWN or WM_KEYUP)
dword 0x3204 wParam for the message
dword 0x3208 lParam for the message
All 12 bytes must be written in one IPC write. This feature is used in WideClient version 3.998 and later, when
the [User] parameter "SendKeyPresses=Yes" is included in its .ini file, to relay all non-system (i.e. no Alt key)
key presses it receives to the WideServer host.
• For FS2000 and CFS2, the Settings and Options dialogue is completely revised as a Property Sheet, with
multiple pages. This is primarily so that it can be developed and expanded in the future, but the opportunity has
been taken to include all but the most obscure and unused options and make them run-time configurable. In
particular it now sports a method of setting the optional Hot Keys in a more intuitive way.
• The two word offsets at 0xe78 and 0xe7a, used by FS2000 when controlling visibility through clouds, are now
protected from writes through the IPC interface.
• Additional facilities are added to enable IPC programs to easily detect the version number of FSUIPC, and the
specific Flight Sim it is running within. These are obtained by reading specific locations:
0x3304 WORD Main FSUIPC version, as BCD x 1000: e.g. 0x1998 for 1.998
0x3306 WORD Interim build letter, 0=none, 1-26=a-z: e.g. 0x0004 = 'd'
0x3308 WORD FS version. Currently only one of these:
1 = FS98
2 = FS2000
3 = CFS2
4 = CFS1 (if supported)
5 = Fly! (if ever supported)
0x330A WORD fixed read-only pattern 0xFADE. Use to check that above are valid before using them.
• Fuel pressure values are filled in by FSUIPC in the FS98 offsets. However, at present these values are a direct
copy of the "PSF" (pounds per square foot) values provided by FS2000. I cannot determine what FS98 values
should be: the default FS98 Cessna seems not to get any value set.
• The different window classes (FS2KMAIN, UIPCMAIN, FS98MAIN, MSCFSMAIN) are no longer fully
supported on all platforms. The parameters for these are not automatically included in the FSUIPC.INI file (but
if they are there they will be obeyed except for UIPCMAIN). Only the FS98MAIN window class is fully
supported. FS2KMAIN will operate as a straight-through interface for FS2000 only, and MSCFSMAIN will do
the same for CFS2, but their use is discouraged except for exploratory purposes.
• Minor changes have been made to stop FSUIPC crashing when installed into CFS1. These crashes were due to
all the extra features in FS2000, and even CFS2, which FSUIPC now takes full advantage of. FSUIPC should
now run in CFS1, and even provide useful information to FS98 programs (though there's no weather features at
all), but I cannot go so far as to say that it "supports" CFS1 to any great degree.
• Keystrokes directed to the normal FS98 and FS2000 window ("FS98MAIN") are now relayed to the current FS
window where this is different (as for instance in CFS and CFS2, where the FS window is MSCFSMAIN).
• The taxi wind facility is augmented by an "Automatic" option. When this is enabled, FSUIPC automatically
engages the 1 knot taxi-wind whenever the plane is on the ground, but transitions this (according to the wind
smoothing settings) to the correct wind after take-off.
• The "SetFSNav" facility is now defaulted OFF rather than ON to avoid problems with new versions of FSNav as
they come out.
• The offset mapping across the IPC interface is improved in a number of areas, allowing an even greater degree
of compatibility with FS98 to be achieved. Previously un-obtained values such as Cylinder Head Temperature
are also now obtained, where calculated, and values too large for the FS98 capacity are limited to the maximum
rather than allowed to wrap.
• The storm generator has the surface temperature as another user settable condition, with the default requiring 10
degrees Celsius as the minimum. Values can be set from –99 to +99.
Version 1.99 includes these changes:
• An option is provided to prevent the FS2000 Flight Plan loader re-positioning the aircraft. This option is not
defaulted on, but if required it must be selected by changing a parameter (“PlanLoadNoPosition”) in the
FSUIPC.INI file from “No” to “Yes” and reloading FS2000.
• The jet trails and cirrus cloud layer options are now extended so that they operate even without an external
weather program sending cloud changes. The application and layer changing is infrequent (every 5 minutes or
more) in order to minimise graphic flashing effects, but applies to any weather source except FS2000’s own
local ‘real’ weather. Previously these optional layers were only added when clouds were actually changed by an
external program.
• The jet trails layer, when added, is now only 1 metre thick, to try to prevent odd cloud effects at that level.
Similarly the optional cirrus layer is now 10 metres thick.
• For FS2000 ‘real weather’, if the search for the nearest ICAO station succeeds but the weather file contains no
weather for that station, FSUIPC now assumes that global weather is set, instead of reverting to the nearest
alternative with valid weather. This seems to accord more with what FS2000 is doing.
• The surface temperature altitude is now partially treated as being signed rather than unsigned (as it was in
FS98), so that when this is used to signify the weather reporting station’s elevation to Adventures the arithmetic
for calculating AGL cloud bases works correctly for METAR stations below sea level. There’s a limit: only
values over 65000 metres are assumed to represent values of (x–65536) metres, so this will cope with reporting
stations down to about 1,758 feet below sea level.
• Wind transitioning and smoothing is now performed synchronously with the other FS2000 functions, though it is
still controlled by a separate asynchronous thread. This may relieve some of the pressure on busy memory or
graphics operations so, hopefully, lessening the probability of crashes.
• An optional (but defaulted) patch is applied to SIM1.SIM (the main aircraft simulating part of FS) to correct
some inaccuracy in the autopilot’s altitude holding capability. The inaccuracy occurs when flying Flight Levels
and increases with the difference between the altimeter setting (e.g. the standard pressure setting of 29.92” or
1013mb for Flight Levels) and the actual barometric pressure at sea level (QNH). The correction can be disabled
by setting “PatchSimApAlt=No” in the FSUIPC.INI file.
• The same option (to improve the altitude holds) also corrects the vertical speed setting if it is set to climb when
the aircraft would need to descend, or vice versa. It does this by inverting the sign of the vertical speed setting. It
only does this when altitude acquire/hold is enabled, so that vertical speed control by itself is not affected. The
correction is also not applied if the target altitude is set to a value over 65000 feet—a trick being used by some
panels to provide V/S controlled ascents and descents. ). Note that this improvement is also disabled by setting
“PatchSimApAlt=No” in the FSUIPC.INI file.
• An error is fixed in the Advanced Weather interface. This could, in certain unusual circumstances, have caused
FS2000 to crash or hang. The circumstances were only likely to arise when loading complete weather sets from
WX files using the WeatherSet utility.
• Recent changes designed to fix EGT and other gauges in FS98 prop panels had the side effect of spasmodically
causing FS98 jet panel EGT gauges to stop working. This is more likely when FS98 gauges are used with FS2K
AIR files, and such gauges would not work at all without some action by FSUIPC. In this version the prop panel
fix is made dependent upon the aircraft being a prop, so the previous operation of the jet EGT gauges is restored.
• FS98 global offsets for reading throttle, propeller pitch, mixture and starter switch settings for all four engines
are now mapped into the PANELS data memory to obtain the correct values. Writing to these offsets still
invokes a procedure call into the Panels interface, as writing direct to the correct data area does not, in itself,
make the simulator change the operating values. (This is the only change also needing a corresponding change in
WideFS, so producing WideFS version 3.99).
Version 1.98 includes a number of quite important enhancements and corrections:
• A correction has been made to the weather handling to cope with an unusual FS2000 local weather scenario
which could have made FSUIPC crash FS2000 on rare occasions.
• The correct values for use in FS98 type gauges (and external programs through the IPC interface), when using
an FS2000 AIR file, are now found for Fuel Flow (PPH), EGT and Torque percentage. These changes mainly
apply to props and turboprop types, not really well catered for by previous versions of FSUIPC.
• Additional FS2000 global locations have been found and mapped, including the one which enables the
VOR/ADF tuning to take effect after the frequency has been changed by an application.
• The Jet Trail facility is corrected so that both 1 and 2 okta Cumulus layers provided by the external weather
program are eliminated, thus avoiding spurious jet trail layers at incorrect altitudes. The 1 and 2 okta cumulus
layers are changed to stratus rather than increased to 3 oktas coverage, which would change the ATIS
description from Few to Scattered. In addition the jet trails icing setting is now made zero, avoiding the silly
result of icing occurring just because the aircraft passes through the same altitude as the few jet trails that can be
seen.
• Changes have been made which stop FS crashing on loading on Windows 2000 when Force Feedback joysticks
are installed and the FF is enabled. There is also a possibility that these changes might make FSUIPC work okay
on Windows NT, but this has not been verified.
Version 1.97 allows Adventures to control precipitation using the extra FSUIPC variables, without having the results
overridden by FSUIPC’s semi-random rain and snow generation. The latter is optional, but defaulted on. The only
proviso is that the adventure must refresh or change the precipitation at less than 30 second intervals, otherwise
FSUIPC will assume it has finished and will re-enable its own rain/snow system if it is selected.
Also the optional extra cloud layers for ‘jet trails’ (for FSClouds2000) and cirrus are now generated in a slightly
different way. First, each time there’s a change of altitude in the cloud below, there’s a separate 1 in 5 chance for
each of these two layers that they won’t be added. This adds a little more variety. Also the altitudes are changed.
They are now never placed at less than 27,500 feet (for jet trails) and 33,500 feet (for cirrus). They will be higher
than this if any ‘genuine’ cloud layer approaches these altitudes, and will have some random height differences from
time to time as well.
Version 1.962 includes improvements to provide a better relationship between FS_Meteo (in particular) and
Adventures. These are:
• The barometric pressure provided to adventures is now always the QNH at the aircraft. Differences between it
and the current METAR setting from FS_Meteo (be this for the current zone, or the Destination) are provided in
the Barometric Drift variable. Adding the Drift to the Pressure gives the METAR value for ATIS reports.
• Facilities to provide surface wind gust speeds to adventures are now provided. These speeds are set to the
surface wind “turbulence” variable as there is no provision for gust data. Zero indicates no gusting. FS_Meteo
can set a separate gust speed for destination weather.
Version 1.961 contains further improvements and corrections to the Adventure weather interface, concerning the
settings for cloud base and cover in other weather zones than the current one (for example, to set destination
weather). This is currently specifically suited to version 4.77 (and later) of FS_Meteo.
Version 1.96 includes the following changes:
• Added facilities for semi-random thunderstorm generation, based on wind and cloud values.
• Added a facility to increase the layer boundaries for winds by a fixed amount (default 2000 feet), to cater for
weather control programs which set the upper altitudes too low.
• Added a facility to insert a 1/8th cover cumulus cloud layer, so that Jet trails will be generated by FSClouds
2000. The other layers are prevented from being only 1/8th cover when they are cumulus type.
• Reduced the frequency of random cloud turbulence and icing adjustments, in order to try to reduce the amount
of cloud flickering (caused by FS2000’s strange re-drawing methods). Additionally these parameters are now
not changed each time an external weather program refreshes the cloud layers.
• Random turbulence and icing changes are now made by incrementing and decrementing by one unit each time,
rather than in sudden jumps—except when a generated thunderstorm starts, when cloud turbulence is always
increased to at least 3.
• The minimum visibility value is removed from the Settings Dialogue (though still adjustable in the .ini file). It is
replaced by a split ‘surface visibility’ maximum value: one for “cloudy” weather and one for “clear” weather
(the latter meaning, here, no cloud layer more than 2/8ths cover, so allowing jet trails and wispy bits). This
allows a higher visibility to be set when, perhaps, blue skies (or stars) may be seen.
• Assorted improvements and corrections have been made to the Adventure weather interface, especially to suit
version 4.77 (and later) of FS_Meteo. One of the more important ones to note is the correction of the adventure-
reported surface wind direction to degrees Magnetic rather than True. (This problem wouldn’t have occurred
with previous versions of FS_Meteo).
• The additional IPC access to FS2000 values is extended to provide VOR and ADF station identifier and name
strings. (This also affects FSlook2, included, and the change is also made to WideFS with effect from version
3.975).
• An internal interface for weather reading and writing has been added, for use by WidevieW, so that weather on
separate LAN-connected PCs, all running FS2000, can be efficiently co-ordinated.
• The Outside Air Temperature (OAT) is now updated at offset 0x0E8C, just as in FS98.
Version 1.95 includes the following changes:
• The facility for random rain or snow in FS2000 has been improved to make the starting and stopping
probabilities more realistic.
• The new FS2000 Adventure (APL) variables:
AUTOP_AIRSPEED
AUTOP_MACH
AUTOP_VERTICAL_SPEED
are made to work correctly by additional patching to the ADVDRV.DLL module when FSUIPC is loaded. These
variables can now be read and written from adventures. Some small rules need to be observed, but these are
reasonably logical:
(a) The vertical speed hold needs to be enabled before actually setting the V/S value, as otherwise the latter
seems to get immediately overwritten;
(b) Mach and Airspeed controls are mutually exclusive. The hold for one must be reset before setting the hold
for the other;
(c) Mach and Airspeed holds are not enabled unless the Auto-throttle is armed (very sensible! <G>).
Version 1.94 includes the following changes:
• Corrections to the Engine variables EPR and Engine Vibration for FS98 aircraft, and EGT and Fuel Flow for
FS2000 aircraft (all in FS2000 of course).
• Support for the “combustion” flag for FS2000 aircraft.
• Support of FS98 light control and read-outs for FS2000, covering Nav, Strobe and Landing lights. (Note that the
Nav and Panel lights are actually separately controllable in FS2000, but not in FS98, so the FS98 “Nav” light
control has been made to operate both in FS2000).
• Additional weather options in FS2000, providing facilities for random turbulence and icing in clouds, and
turbulence in winds. Plus facilities to suppress all gusts in all wind layers, and to stop external weather control
programs changing the options when central control in FSUIPC’s dialogue is required.
• Access provided for many FS2000 specific “token variables”, through a new range of offsets (2000–3FFF hex).
Please see the “FSUIPC for Programmers” document inside the separate Other Stuff Zip file. There’s also a
utility program there, FSLOOK, which can be used to examine these values.
Version 1.93 includes many improvements, although these will be mostly invisible to the user. These all relate
specifically to using FSUIPC with FS2000. They are:
• A bug is fixed that could crash FS2000 when an external weather control program tries to set a visibility layer
and the current settings in FS2000 include multiple visibility layers (possibly a remnant from earlier versions of
FSUIPC).
• If FSUIPC.dll is run without an existing INI file it defaulted the maximum surface visibility to 200 (2 miles)
instead of 2000 (20 miles). This problem would be corrected as soon as the options dialogue was used to
“restore defaults”, or just change or confirm the setting (displayed as 2000), but it was disconcerting to say the
least. This bug is corrected in this version.
• The values for EGT, Fuel Flow, Engine Combustion, EPR and Engine Vibration are now all derived more
reliably, thanks to some information in the Microsoft Panels SDK. (However, it should be noted that the EPR, in
particular, is not always available. It seems to depend upon the aircraft. For instance the default 737 seems to
have no EPR calculated that I can find, whilst the 777 does).
• Problems such as infrequent crashes whilst changing aircraft or panels, arising from asynchronously servicing
weather updating messages from WideServer.dll, have been resolved by forcing the actual updates to take place
in the normal FS synchronous time steps.
There are also a number of improvements made to the Advanced Weather Interface (AWI), as follows:
• Overlapping cloud layers supplied through the AWI are removed.
• A visibility upper altitude of zero specified via the AWI is replaced by the default surface layer upper altitude.
This is 6000 feet unless altered in the FSUIPC.INI file.
• The “ExtendMetarMaxVis” facility is applied to visibilities set via the AWI.
• Clouds specified through the AWI with zero coverage are removed.
Version 1.92 contains an important error correction plus some lesser improvements, and one new facility:
• A bug in the new graduated visibility option prevented the visibility being changed by user or external program
action unless the upper visibility altitude was also changed at the same time.
• Additional actions are now taken by FSUIPC to try to prevent an odd visibility ‘flicker’ effect sometimes
occurring when coming out of clouds. It seems that FS2000 tries to assert the “unlimited visibility” value (the
one set in its Display Options) when emerging from clouds, instead of the value specified in the dialogue for the
current altitude. FSUIPC now spots this and corrects it immediately.
• FSUIPC now remembers the undocked position of FSNav’s window. This is primarily of use to FSNav users
with two or more monitors, who like the FSNav map to appear on their second monitor screen. FSNav itself
doesn’t remember this so it otherwise needed setting every time you run FS2000. (Note: this is for FSNav
version 3.00, in FS2000. Whether it would work with other versions, or on FS98, is not known).
• The Log switches in the FSUIPC settings dialogue now behave a little more rationally.
• Some minor changes have been made to the Advanced Weather Interface and how it interacts with weather
specified through the old FS98 interface. These changes also affect WideFS, so WideFS version 3.94 or later
should be used with FSUIPC 1.92.
Version 1.91 has major changes in the way FS2000’s visibility is handled. The facilities to automatically generate
multiple visibility layers are scrapped completely—they didn’t work consistently in any case—in favour of a
dynamic system of ‘graduated’ visibility values. This works more smoothly, more consistently, and applies equally
to externally controlled weather and downloaded real weather.
The only other changes in this release are:
• The “thinness” of thin clouds is now defaulted to 1000 feet (instead of 500 feet), and is made adjustable—but
only in the .INI file, not in the dialogue.
• If the top winds extended by the “extend top wind layer” option are actually the surface winds (as will be the
case for downloaded real weather), then gusts are removed as well, unless upper wind gusts are allowed.
Version 1.90 was a major update with some serious errors corrected and a number of facilities added, all in response
to requests from users. The changes were:
1. Fixed a bug which crashes FS2000 if ever the weather is updated and the ICAO table is not in memory.
This seems a very unusual occurrence, but it did happen once.
2. If the FSUIPC Settings and Options dialogue is used and the Restore defaults, Start New Log or Stop
Logging buttons are used, then thereafter FSUIPC will not process FS2000 weather. Only a restart of
FS2000 fixes this condition, once it occurs. This is fixed in 1.90.
3. The Hot Key facilities now work correctly in Full Screen mode. The problem in previous versions seems
to be a function of the Windows hot key feature. In 1.90 this is not used. Instead the keyboard input to FS
is intercepted. This also means that the Hot Keys only work when FS has the keyboard focus.
4. FSUIPC now uses FS’s own memory allocation system when it needs working memory. This should
reduce or even eliminate the exit crashes experienced occasionally in previous versions.
5. The dialogue for options and settings has been extended to show two buttons for taxi winds—one to turn
them on, and the other to turn them off, with the non-applicable one obviously disabled. This should make
it much clearer what the taxi wind status is at the time.
6. The wind smoothing action (part of wind transitions) is now applied to FS2000’s downloaded real weather
(‘local weather’), smoothing the changes between adjacent METAR reporting stations.
7. The extension of the top layer of winds upwards is now done for all three candidate METAR stations
when the option is enabled and FS2000 downloaded real weather is in use. This should stop the extension
occasionally disappearing, which happens when FSUIPC and FS2000 identify the nearest METAR station
at different times.
8. The external control facilities for FS2000 Left, Right and Parking brakes now work exactly as they did in
FS98, as far as I can tell so far (with limited testing, unfortunately). I still can’t get the Arm Spoilers
feature to work, however.
9. A facility has been added to limit the overall maximum visibility that can be set. This operates on all
weather sources. If multiple visibility layers are specified, the graduation across layers is from the set (or
maximum) surface visibility at the lowest layer, up to the overall maximum at the highest layer.
10. The surface wind can be limited to a specified speed in knots. This applies to weather from any source.
11. To assist in getting better performance on slower machines, facilities have been added to restrict the
number of cloud layers to one, at most, and (independently) to limit the thickness of any layer to 500 feet
at the most, not allowing for variations in base and top.
12. Facilities have been added to the Advanced Weather Interface to allow an external weather program to
provide specific weather data to be supplied to adventures, and not to the simulator. This is to allow ATIS
reports to be generated correctly even whilst the weather program is transitioning the weather, or possibly
simulating weather for a different METAR station to the one at which the ATIS is requested. [Note that at
the time of Release these facilities had not been thoroughly tested].
Version 1.81 was a quick bug-fix for 1.80, correcting the one inevitable serious bug reported immediately after
Release but never picked up in hours upon hours of testing beforehand! (This is a variety of Murphy’s famous law, I
believe). This particular bug occurs if your are running with Wind Transitions disabled (which most unfortunately is
the default!) or you happen to be using downloaded ‘real weather’ (when wind transitions aren’t operating in any
case) and you then visit the new FSUIPC options dialogue. After this, one of the main routine’s in FSUIPC gets
locked out in such a way that incoming weather changes (from external weather control programs) are never again
processed, and neither are the FS98 global locations for weather data filled in.
Version 1.80 was a major release with a number of fixes and new features, as follows:
All of the interesting weather control options, and also the logging facilities, can now be accessed and changed
‘on the fly’ through a new dialogue window, accessed via the Modules menu then ‘FSUIPC’ (key ALT, M
then F). In FS98 this merely gives version information.
1. The wind transitions feature, when enabled, now operates on all weather types except downloaded local
weather (where it wouldn’t be of much use anyway, as there’s no upper winds in that mode). Before this
version wind transitions only applied to weather arriving from an external weather control program.
2. Flights saved when wind transitions are in effect are now saved with all the original wind layers, not the
single wind layer in effect because of the way transitions are handled. This swapping action is done
invisibly without actually affecting the simulated weather in force.
3. The top-most FS2000 wind layer is now optionally extended to operate up to 100000 feet. This is
primarily to assist in the downloaded ‘local weather’ mode, where there is only a thin surface wind layer
and no winds above.
4. In FS2000, multiple visibility layers can now be applied to all weather sources, with an adjustable number
of visibility layers from 1 to 10. Combining this with a limited maximum surface visibility gives better
frame rates at lower altitudes without compromising distance views at cruise levels.
5. The automatic cirrus layer generation can now optionally be forced to operate even if the weather control
program in use disables that option.
6. A weakness in the way some engine values were obtained for external programs to read could give rise to
occasional FS2000 crashes when changing aircraft. This has been fixed.
7. Several bugs have been fixed in the Advanced Weather Interface. As only my own WEATHERSET
program currently uses this, I won’t go into details here. But use the supplied new WEATHERSET with
this version of FSUIPC.
Version 1.74 was a limited release with two small changes:
1. Changes to the logging, simply to prevent redundant or continuous multiple log entries for WeatherOption
changes and METAR visibility overrides, especially noticeable when FSUIPC is used with FS_Meteo.
2. Fixes to the “AutoClearWeather” facility so that if FS2000 downloaded weather is in operation and a
Weather Control program is then started, the local weather is not only cleared, as before, but the initially
supplied weather from the weather program is correctly applied. Before this change, the weather would be
cleared correctly but the weather program’s settings would be lost until the next refresh, whether user
forced or by time or position changes.
Version 1.71 was produced very quickly after 1.70 to correct one serious problem reported in 1.60 just after the
Release of 1.70! The problem was that the “AutoClearWeather” option (which defaults on) was so enthusiastic that it
also reset downloaded weather if the FS2000 ‘real weather’ engine even momentarily ventured outside an ICAO
reporting station area and so temporarily engage ‘global’ weather.
Version 1.70 includes some relatively minor yet probably important changes, and is released simultaneously with an
update to the WideFS package (now at version 3.70). Here is a summary of the changes in FSUIPC:
1. Ridiculous wind speeds sent to FS2000 (using the FS98 offsets) are now trapped and either ignored or
limited. Parameters to control the actual limits are provided. This feature is a stop-gap measure to
compensate for the occasional corruption of wind data supplied by SquawkBox.
2. The visibility set by FS98-compatible weather control programs is now (optionally) extended when the
value supplied suggests that the program has read a METAR and interpreted the maximum visibility value
literally. Metric METARs indicate 9999 metres (6.2 miles) or more by the value “9999”, whilst the U.S.
METARs indicate 10 miles or more by the value “10SM”. Really the weather control programs should
adjust the value to some figure above this, most of the time at least. However, since they often don’t
FSUIPC now contains the facility and this is enabled by default. Weather control programs which do work
this out can turn the option off automatically.
3. An error in the weather logging which caused FS98 to crash is fixed.
4. The Fuel Flow (PPH) value found for FS2000 aircraft is now copied to additional FS98 locations to assist
those programs, such as Enrico Schiratti’s PFD.EXE, to show it correctly. The value is in doubt, but it is
as close as I can get at present. The previously updated locations apparently only really assisted the gauge
token variable interface, as used in EPICINFO.DLL.
5. Taxi winds are now only applicable to the lowest wind layer. Attempts to switch taxi winds whilst the
aircraft is effectively in some other wind layer are ignored, and will generate a “beep” in warning. Also the
use of the taxi wind hot key is logged, if logging is in operation at the time.
6. An additional hot key facility is provided, to stop logging if it is enabled.
Version 1.60 was the first major release for a while. These were the main changes:
1. Approximately once a second FSUIPC checks for the "stuck visibility" problem. I've determined that this
is caused by WEATHER.DLL somehow failing to update its effective visibility after passing through
clouds. The effective visibility is actually stored in global offset 0xE78, with a target value in 0xE7A.
FSUIPC checks whether the aircraft is between clouds, allowing for deviation both top and bottom. It does
this for ALL cloud layers, not only those specifiable through the FS98 interface. If it is, and it finds that
the effective visibility is below the target, and it stays this way for 3 seconds, then it halves the difference:
i.e. it gets the 0xE78 value closer to the 0xE7A value each time. So it might actually take several seconds
for the visibility to gradually clear. This approximates to what WEATHER.DLL usually does (and should
be doing, if it didn't get 'stuck').
This action can be turned off by "ApplyVisFix=No" in the .ini file. This is for when MS fix it! <G>
2. An "AutoClearWeather" facility, defaulting to "Yes", will automatically operate the "Clear All Weather"
function in FS2000 if local weather is in force and:
(a) An FS98 weather control program changes the weather, or
(b) The "force weather" hot key is used, or
(c) A "Clear All" command is received on the Advanced Weather Interface.
3. A "MaximumVisibility" parameter is added. This in not effective unless it is greater than the
MinimumVisibility parameter. And both limits are now applied to ALL weathers, no matter how set. In
other words, if you set a visibility of 30 miles in the dialogues, but the maximum is set to 10, you will see
the visibility change to 30 only for a short time, before it is "fixed" by FSUIPC. (This facility was
requested by folks with slower machines who wanted the ability to limit the maximum visibility below the
60 miles allowed in FS2000's display options).
4. Surface wind data is now correctly supplied to Adventures even when WindTransitions are enabled. The
other wind layers are still not accessible to adventures when transitioning is enabled.
5. The surface temperature altitude is either set to the ground level, or to the elevation of the current METAR
reporting station when real weather is being used. This enables adventures to calculate the correct AGL for
cloud bases for use in ATIS reports. The same facility is extended to external weather control programs
(i.e. they are invited to set the value at offset 0xF40 to the ground elevation of the METAR reporting
station). Adventure writers should then use TEMPERATURE_SURFACE_ALT instead of ground altitude
when computing cloud base AGLs.
6. When using downloaded real weather, FSUIPC now manages to identify the correct reporting METAR
station most of the time. It also now finds its ICAO (which is logged if LogWeather=Yes), so it reports the
correct data. If running, WEATHERSET will display the ICAO in its title bar.
7. The extra thread created by FSUIPC to operate some of its functions, such as the wind transitioning, is
now closed forcibly when FS2000 terminates in an attempt to stop the FS2000 closing crashes reported by
some folk.
8. An error has been corrected in the wind transitioning facility which would cause negative wind speeds to
be set at aircraft altitudes below sea level, such as with a small aircraft at Schiphol. The results could be
disastrous for those aircraft!
9. The Advanced Weather Interface supports an extra command, to request the details of the METAR
reporting station responsible for the current “local weather”, when applicable.
10. WEATHERSET version 1.40 accompanying this release includes many extra facilities including the
display of the local weather ICAO code, and the ability to find local weather data in a saved .WX file.
Version 1.57 was a minor release with the only change being to one of the additional adventure variables, added for
weather details. The original SYSVAR_B5 status indication is now a fixed constant, intended to be used in APLC32-
coded adventures to check that FSUIPC is loaded before any access to the new variables is actually used. Martin
Smith’s APLC32 compiler, version 1.32, is released simultaneously and supports the additional variables with the
new names listed later in this document.
The only Version 1.56 change was that, at last, I think I’ve cracked the occasional problems in detecting Local
(downloaded) weather settings correctly. This version appears, from all tests so far, to correctly detect when local
rather than global weather is in force, and updates the appropriate weather data for applications (and adventures) to
match.
Version 1.55 changes were:
1. Added the facility (defaulted on) to automatically apply a run-time patch to the variable table in the
FS2000 adventure interpreter (ADVDRV.DLL) so that the FS98-compatible weather information is again
readable in adventures. For more details see the section “Weather Data for Adventures” towards the end of
this document.
2. Fixed a bug in the logging of “Reads” on the advanced weather interface. In error all commands (offsets)
were logged wrongly—without the weather type digit or altitude value.
Version 1.50 changes were:
1. Fixed: a problem which caused FS2000 to crash on exit if the DLL was positioned in the Modules folder
after certain other FS modules and the “WindTransitions” option was not enabled.
2. FSUIPC now only generates one visibility layer by default—an option is provided, instead, to generate the
three as in previous releases. This change has been done just in case the multiple layers have anything to do
with the intermittent stuck low visibility bug.
3. For the same reason, the base altitude for the lowest visibility layer is now set to 0.45 metres as it appears
to be by FS2000’s own weather settings, rather than 0 metres which seems more logical.
4. The FS98 “pause” flag location at offset 0264 are mapped to 0268 rather than 026C, where they were
originally thought to be.
5. Weather data received through the Advanced Weather interface is now logged in full when the weather
logging option is enabled.
6. Cloud turbulence settings (range 0-4) are now mapped correctly from the FS98 values.
WeatherSet version 1.1 is supplied with this release. It now includes facilities to read and save FS2000’s own
.WX files, and can be used off-line from FS2000 to read and display .WSD and .WX files. See the separate .txt
file describing WeatherSet functions. WideFS users can use WeatherSet on a separate PC to FS2000, to avoid
loss of keyboard focus (and hence sound) while accessing it.
Version 1.40 had many minor improvements, and small bug corrections (including handling of negative ground
altitudes), but mainly it includes the first Beta test version of the promised Advanced Weather interface for FS2000.
Version 3.40 of WideFS provides Network support for this interface at the same time, provided that WideFS and
FSUIPC are used together.
In order to test the Advanced Weather interface, I did need to write one small application, “WeatherSet”, which will
display, modify, load and save weather data, and even print it out. This is enclosed for those who wish to have a play
with FS2000 weather in interesting ways. Brief documentation for WeatherSet is enclosed in this package.
Version 1.30 included the following improvements and new facilities for FS2000 only:
1. The weather processing is now capable of finding and reporting on downloaded ‘real weather’, or “Local
Weather”. FSUIPC does not try to impose a weather control program’s requirements when ‘local weather’ is
selected, but it will track the application’s weather changes. When the global weather is again selected (by
clicking the “Clear All weather” button), the weather control program’s requirements are automatically
instated. (If you really do want to clear all weather, wait for it to settle, then do the Clear All Weather again).
2. A “Wind Smoothness” facility is added to prevent sudden swings in wind direction or speed when a weather
control program changes METAR stations or makes some other change. This facility works in conjunction
with external weather control programs and the optional Wind Transitions facility—see the Options section
later.
3. An option to set a minimum visibility is added. This is only effective for external weather control, and is
simply intended to prevent the visibility being set below the level at which an FS2000 bug seems to take over
and prevent the visibility being raised again until FS2000 is reloaded. See the Options section for more
details.
4. The current surface wind speed and direction are provided in new locations for programs needing this (e.g.
for ATIS reports) even when the Wind transitions option is being used and the currently set ‘surface wind’ is
the very thick single layer used for wind control. See the Addendum for Application Programmers for more
details.
5. Provision is made for external control over many of the FSUIPC.INI file weather options, so that application
programs needing specific options can set and clear them directly without having to rewrite the INI file.
6. Many assorted minor improvements and bug fixes have also been incorporated into this release. These
include corrected gusts, taxi wind facilities, ‘de-bouncing’ of Hot Keys, and zero ambient wind reports above
the highest set layer.
Version 1.26 was a limited test release with some bugs fixed in the setting of weather data in the FS98 ‘current
weather’ area, for applications to read. In particular: the cloud data was previously incomplete (being one layer short
unless at least three FS2000 layers were set); the day/night temperature variation wasn’t set; and the surface wind
layer’s upper altitude was wrong (AMSL instead of AGL) if the winds were only set manually, not by an external
weather control program.
Version 1.25 was the second general release, and incorporates a very large number of improvements, mainly to the
weather handling in FS2000. Particularly important changes include:
1. Correction to the temperature layers to abide by the external program’s requests. Previously a fixed set
of upper temperature layers was inserted.
2. Correction to the surface wind layer for magnetic deviation. FS98 expects this layer’s direction in
degrees magnetic, but FS2000 expects it in degrees true. FSUIPC now hides this difference so the same
winds result from the same weather inputs.
3. Adjustment of the surface wind layer’s reported upper altitude to make this appear the same as in FS98.
In FS2000 the upper altitude is fixed and reported AMSL, whilst in FS98 it is reported AGL—with the
surface wind actually following the ground contours. I think that, with the higher resolution of ground
elevations in FS2000 this has been abandoned for performance reasons, so FSUIPC has to continually
adjust the read-out, converting the fixed AMSL value to an AGL value that varies according to the
ground elevation.
4. Gusts in FS2000 upper winds are now suppressed by default (though there is an option to let them
through).
5. The FS2000 wind shear setting is now set to “sharp” by default, as the normal minimum setting, which
should give a smooth transition, appears broken and sometimes generates wildly inappropriate
transitional winds. With the setting on “sharp” the transition abides by the control program’s requests.
6. Facilities added with specific “hot key” combinations, which are used for some degree of control whilst
flying FS2000. One such can be used to force the FS2000 weather back to the most recent state
supplied by an external weather program (“ForceWeatherKey”), and another to toggle the surface layer
wind speeds back and forth between their requested setting and just 1 knot (with no gusts). This latter
(“ToggleTaxiWindkey”) is useful when the surface wind prevents taxiing through excessive weather-
vaning. The speed of 1 knot is retained to ensure the selected runway doesn’t change, and other
programs like FSTraffic continue using the correct runway.
7. Some additional FS98 locations are now mapped onto their equivalent FS2000 locations, and optional
facilities are provided for driving some other FS controls through the “trigger event” interface for
Panels. See the “ControlMapping” option below.
8. All the input mapping which is done through the panels “trigger event” facility is now done only on the
basis of received inputs from client programs, not by monitoring changes to the written locations. This
prevents odd feedback type effects, such as possible stuck throttles.
9. The parameters provided in the FSUIPC.INI file are extended by a new [General] section through
which a number of facilities can be turned on and off independently of the “Class Name” being used.
Most of these are to do with weather generation and interpretation, but for program developers and
debugging there are logging facilities as well. These are all described in later sections of this document.
10. Additional facilities for FS2000 cloud control, dew point and rain or snow are provided for weather
control programs, as an interim step pending a full FS2000 weather control interface. These are
documented as an Addendum for Programmers.
11. An FS2000 option is provided to enable the winds to be transitioned slowly across wind layer
boundaries. This replaces the currently non-functioning slow transitions offered by FS2000, but it is not
enabled by default since some FS98 programs may not expect such behaviour.
Version 1.10 was the first general release. Minor modifications have been incorporated since 1.04: in particular the
ability to install itself into FS98 or FS2000 in such as way that it can still provide its services even if there are other
IPC modules also installed.
Version 1.04 was the first restricted Beta release version. There were a very few isolated copies of versions 1.01–
1.03. All of these earlier versions should be destroyed.

Published by Peter L. Dowson, September 2013


Support Forum: Pete Dowson's Support Forum

You might also like