• Which the release of FS2020 we see an explosition of activity on the forun and of course we are very happy to see this. But having all questions about FS2020 in one forum becomes a bit messy. So therefore we would like to ask you all to use the following guidelines when posting your questions:

    • Tag FS2020 specific questions with the MSFS2020 tag.
    • Questions about making 3D assets can be posted in the 3D asset design forum. Either post them in the subforum of the modelling tool you use or in the general forum if they are general.
    • Questions about aircraft design can be posted in the Aircraft design forum
    • Questions about airport design can be posted in the FS2020 airport design forum. Once airport development tools have been updated for FS2020 you can post tool speciifc questions in the subforums of those tools as well of course.
    • Questions about terrain design can be posted in the FS2020 terrain design forum.
    • Questions about SimConnect can be posted in the SimConnect forum.

    Any other question that is not specific to an aspect of development or tool can be posted in the General chat forum.

    By following these guidelines we make sure that the forums remain easy to read for everybody and also that the right people can find your post to answer it.


Above on Page 1 Balter rewrote this in regular xml not ACES xml for me. It contains my redone bmps for the USN version. Its called LSO_USN. It contains a "wave-off" but when I tested it the LSO had 4 arms. If you still are willing can you take a look at this and see if it can be perfected as a final LSO_USN for all the aircrafts on the CV6? I appreciate all your effort this being way over my skill level. I will move my FDO.xml to Window 00 as suggested. Then I am sure he will detect the carrier. I will check your reply tomorrow us being so many hours behind you.
These are the values I found worked when making the video above, slight tweaks only

<Gauge Name="LSO_USN" Version="1.0">
<Image Name="Backdrop.bmp"/>

<Position X="47" Y="9"/>
    <Visible> (L:GS_Deviation, number) 1.0 &gt; (L:IsFlashTime, bool) 1 ==  &amp;&amp; (L:LSO_USN_Counter,number) 6 &lt; and </Visible>
    <Image Name="waveoff 2.bmp"/>

<Position X="47" Y="7"/>
    <Visible> (L:GS_Deviation, number) 1.0 &gt; (L:IsFlashTime, bool) 1 ==  &amp;&amp; (L:LSO_USN_Counter,number) 5 &gt; and </Visible>
    <Image Name="waveoff 1.bmp"/>

<Position X="23" Y="66"/>
    <Visible> -0.5 0.509 (L:GS_Deviation, number) rng (L:IsFlashTime, bool) 1 == &amp;&amp; -1 1 (L:CentreLine_Deviation, number) rng (L:IsFlashTime, bool) 0 ==  &amp;&amp; || </Visible>
    <Image Name="Roger_OK.bmp"/>

<Position X="55" Y="97"/>
    <Visible> (L:GS_Deviation, number) -0.5 &lt; (L:IsFlashTime, bool) 1 == &amp;&amp; </Visible>
    <Image Name="Low_climb.bmp"/>

<Position X="47" Y="7"/>
    <Visible> 0.51 1.0 (L:GS_Deviation, number) rng (L:IsFlashTime, bool) 1 ==  &amp;&amp; </Visible>
    <Image Name="High_descend.bmp"/>

<Position X="50" Y="7"/>
    <Visible>(L:CentreLine_Deviation, number) 1 &gt; (L:IsFlashTime, bool) 0 == &amp;&amp;</Visible>
    <Image Name="Tighten_turn.bmp"/>

    <Position X="156" Y="52"/>
     <Image Name="Body.bmp"/>


         (L:GS_Deviation, number) 1.0 &gt; (L:IsFlashTime, bool) 1 ==  and
                  if{  (L:LSO_USN_Counter,number) 9 &lt;
                       if{ (L:LSO_USN_Counter,number) ++  (&gt;L:LSO_USN_Counter,number) }
                          els{ 0  (&gt;L:LSO_USN_Counter,number) } }


They might make your man behave more human-like and not arachnoid...

For a proper "wave off" and cut "cut" you would need a bitmap designer! I hate "bitmapping"!

Don't forget to adapt FDO.xlm if you use [window02]

K: &gt;panel_4 against K: &gt;panel_3

And the carrier must have a catapult!

Flashtime is calculated at FDO.xml
You could copy it to LSO_USN.xml for easier adaption work.

                    (P:LOCAL TIME, seconds) s0 3.0 % 2.0 &lt; 4.0 (L:Time-1, seconds) == || (&gt;L:IsFlashTime, bool)
                    10 (&gt;L:Time-1, seconds)

do you have any idea why there is a complicated(?) procedure to calculate (L:IsFlashTime, bool) which is only ever going to be 0 or 1?

I don't even get close to understanding what the formula will provide - more 0's than 1's, or more 1's than 0's? Or is it completely random?

(L:IsFlashTime, bool) being equal to 0 is only used with (L:CentreLine_Deviation, number) to produce the 'Tighten Turn' flags signal, which if it is based on the current time seems to me to be extremely random...

Last edited:
I modified the bmps for the USN from Phil's and created the wave-off bmps. I am pretty good at this so I can feel like I am contributing something to this project. The wave-off bmps are already done and I can get to making the cut bmp which can be one single bmp like the rest of them from photos I have. I did a lot of LSO research over the holiday weekend and found out that the reason there are many different styles of USN paddles used by the LSO's is that they made their own paddles. I am going to create a few variations historically correct for a few different aircraft carriers from all the photos I have. As long as the bmp's are labeled correctly it matters not what their figure is just the correct position of the paddles. I'll let YOU tackle Walter's query which is way way above my head.
Walter I am going to forward the link for this thread to Phil the original designer who was going to "dust off" his program and look at it again he said.
i was already looking for explantion for this timer on my disk. Bad luck!

So i went to FSD - Wiki

So read the wiki, code, test, recode, test, read....;)

But you could also try with a gauge counter.
gauge cycle is 18.
1 sec divided by 18 is about 0,05 secs

counter 1 + -> couter

if counter 05 then...
if counter 10 then...

counter greater 18 then 0 -> counter

hope this is clear.
Last edited:
I am SO glad that you guys are tweaking this. I think it will really be a nice addition to flight simulator carrier aviation when it's finally done. Here is my contribution this morning (my time) The background figure is a layer as is the insert from the USN LSO signals chart for aviators back then. I will let you guys write the code for him like Walter did for the "waveoff". Just the arms are in the LSO.xml bmp for cut.


I think if I was going to have a counter it would be more easily read and understood than the current one for (L:IsFlashTime, bool) :)

I simply do not understand the purpose of a timer in the situation.

The 0/1 result has absolutely no relevance that I can see within the LSO gauge and I hate it when I don't quite understand something as important as (L:IsFlashTime, bool) appears to be since it was passed from the FDO gauge for some purpose, I presume.

For this new figure to do his trick in the LSO gauge something would have to be passed to the gauge to tell him to get his act together. Does "cut" mean to "stop your engine"? When would the LSO tell the pilot to do this?



  • cut_figure.jpg
    39.9 KB · Views: 24

I think if I was going to have a counter it would be more easily read and understood than the current one for (L:IsFlashTime, bool) :)

I simply do not understand the purpose of a timer in the situation.

The 0/1 result has absolutely no relevance that I can see within the LSO gauge and I hate it when I don't quite understand something as important as (L:IsFlashTime, bool) appears to be since it was passed from the FDO gauge for some purpose, I presume.

From memory* I went with the timer because I could a) copy the code from somewhere b) set the on and off duration in seconds without having to think too hard. The IsFlashTime essentially just tells the FDO gauge whether to display the glideslope or glidepath signal and I wanted it to be easy to adjust when I was developing it.
I have a vague feeling the s0 entry is irrelevant...

To be clear the only reason it's split across two gauges is because I didn't know enough about the differences between FS9 and FSX XML when I wrote it and could only do certain things in either scheme! You should be able to get all the code into one FSX XML gauge without too much difficulty.

*I wrote it over 10 years ago!

10 years ago!!! Sure you must have only been a nipper then!

Obviously a very bright ambitious nipper too...

From memory though, faint as it might be, why use a timer at all? Why not just set it to 0 or 1 in the code depending on which you wanted the LSO to signal?

It was a very helpful gauge to develop.

Okay, sorry, i didn't very exact analyse the code!
i thought the timer was used to make something more like in as real life, so waving and jumping around like in some videos on youtube.
So the timer can deleted!?

Skippybing, nice mathematics!
I went with the timer so you'd get an equal amount of glideslope and glidepath indication, I think it's something like two seconds of one then two seconds of the other. ie I wanted to display each in turn for a few seconds so it was an easy way of doing that. The timer let me adjust to a sensible duration fairly easily. You could also do it by counting sim cycles and I really can't remember why I didn't!
If you delete the timer it won't swap between the two so you'll just get a continual glidepath indication (or slope whichever occurs when IsFlashTime is 0).
Yes, i looked again into the code to see what the timer is for!

i try shortly to explain how the timer works.

(P:ABSOLUTE TIME,seconds) 1 % 0.5 &gt;

Time will be divide by 1, but the rest of the division will be uesd which is between greater 0 and less then 1 !!

the next operation is to set the blink ratio, in this case greater than 0.5!
you get from 0 to 0.5 a Zero,
and from greater 0.5 to less than 0 a 1!

with changing the 0.5 you can change the blink ratio for ex. 0.7 so you will have 0.7 sec a Zero and 0.3 sec a One!
So this is 1 sec timer.

You could also change the divisor, also the 1 by for ex. 3 so you would get a 3 sec timer!
(P:ABSOLUTE TIME,seconds) 3 % 0.5 &gt;
So you have 1.5 secs a ZERO and for the other 1.5 sec a ONE.

But using a ! you can invert the operation.

Please check also the wiki. There a more examples.
Last edited:
You could also delete the timer in FDO.xml
and add it in LSO.xml.
So it would be easier for testing.

thanks for your explanation of the formula.

It really reinforces why I use the simple counters.... though I do use the notation to set lights blinking in <Visible> conditions.

Forgot to mention it. from the wiki

In computing, the modulo operation returns the remainder or signed remainder of a division, after one number is divided by another (called the modulus of the operation).

Given two positive numbers a and n, a modulo n (often abbreviated as a mod n) is the remainder of the Euclidean division of a by n, where a is the dividend and n is the divisor.

For example, the expression "5 mod 2" evaluates to 1, because 5 divided by 2 has a quotient of 2 and a remainder of 1, while "9 mod 3" would evaluate to 0, because 9 divided by 3 has a quotient of 3 and a remainder of 0.
And this is why I leave this to you guys who understand it. I'll stick to my bmp's and xml "on/off" switches. The extent of MY coding LOL!!! Seriously, I really want this to work in all the pre-60's carrier aircrafts so please keep working and perfecting it.