Les « gauges xml » (en français jauges xml)

Version 1.1.1 – mai 2004

Table des matières

Contexte	1

Copyright	2

Auteur(s) et historique	2

Connaissances requises	2

Le XML et les jauges FS 2004	2

Pourquoi les jauges xml	2

Deux types de jauges	2

Qu’est ce que le xml ?	3

Application aux jauges FS	3

Organisation du travail	3

Organisation physique	3

Logiciels pratiques	3

SDK de FS	3

Livraison de version : .CAB	4

Rigueur d'écriture	4

Structure d’une jauge xml	4

Image de fond	4

Eléments : affichage de texte	5

Accès aux paramètres d'avion	6

Trim numérique	6

La pile d'évaluation	6

Principe général	7

Variables accessibles	7

Montre numérique	8

Evènements souris	8

Traitement des images	10

Eléments : affichage d'images	10

Choix d'une image	10

Translations, rotations : horizon artificiel	11

Rotations non-linéaires	12

Effets d'ombres et de reflets	12

Notion de transparence alpha	13

Image d'ombre	13

Reflets de type vitrés	14

Pour en savoir plus	14

Conclusion	15

Remerciements	15

Annexe : paramètres	15

Contexte

Bonjour les pilotes ! Ce document a été créé en constatant le peu de connaissances des personnes sur les jauges xml de FS (Flight Simulator) alors que leur conception est ouverte au plus grand nombre. Il s’agissait à l'origine d’enrichir les connaissances des personnes au sein de l’association HAIDF (Horizons Artificiels Île de France). L’auteur, toutefois, souhaite ne pas restreindre ce contenu à cette association et souhaite conserver le droit d’élargir la diffusion à tous les passionnés de vols virtuels ou autres.

Ce texte est une progression, c'est-à-dire que l'ensemble des sujets nécessaires à la réalisation d'une tâche n'est pas traité de façon exhaustive mais plutôt petit à petit. La complexité est croissante. Ainsi il est possible de tester des petits exemples simples dès le début et de consolider ses connaissances dans la suite. Par contre, il est difficile de sauter des chapitres ou de retrouver une information en deuxième lecture. C'est un choix pédagogique que l'auteur assume pleinement !

Toute personne désireuse de traduire le texte, notamment en anglais peut me contacter, je verrais cette évolution avec bienveillance !

Copyright

L’auteur diffuse gratuitement et autorise la diffusion par des personnes tierces de son document à condition de respecter les termes suivants :

Aucune utilisation commerciale ne peut en être faite sans accord écrit de l’auteur.

Le nom de l’auteur et correcteurs éventuels doivent être gardés.

Le contenu du document ne doit jamais être séparé du présent copyright.

La dernière version diffusée du document doit toujours exister dans un format de fichier public. Ceci n'exclut pas les formats propriétaires à la condition qu'un autre format public, du même fichier, soit accessible librement (par exemple, le .html est un format public tandis que le .doc de Microsoft Word ne l'est pas).

L’enrichissement ou la correction du document est autorisé à condition de clairement identifier les modifications apportées. Le nom des correcteurs devra figurer et le présent copyright s’appliquera aux modifications. Seules les modifications mineures du type fautes de frappe ou d’orthographe oubliées ne sont pas soumises à cette restriction.

La diffusion des versions antérieures à la version 1.0 est interdite.

Auteur(s) et historique

Version - 1.1.1 – Correction concernant une erreur sur FSpanel studio.

Version - 1.1 – Mai 2004	Stéphane Lavergne – e-mail : virtual_POINT_stephane_AT_free_POINT_fr

Toutes versions : http://virtual.stephane.free.fr/gaugesxml

Prise en compte du SDK 2004

Ajout d'une table des matières – remise à jour des titres

Création d'un .CAB

Ombres et reflets

Corrections diverses sur le code xml pour le rendre plus correct.

Version - 1.0 – Avril 2004	Stéphane Lavergne – e-mail : virtual_POINT_stephane_AT_free_POINT_fr

Format OpenOffice : http://virtual.stephane.free.fr/gaugesxml/gauges_xml.sxw

Connaissances requises

Pour lire ce document dans les meilleures conditions, il est utile de savoir modifier un fichier texte avec Notepad (.txt), de savoir créer une image bitmap (.bmp) dans Paint, de savoir se déplacer dans l'arborescence des fichiers d'un disque et de savoir ajouter une jauge sur un cockpit 2D de FS. Ces thèmes ne seront donc pas abordés.

Le XML et les jauges FS 2004

Pourquoi les jauges xml

Les jauges xml combinent les avantages de permettre la majorité des affichages interactifs d'un cockpit 2D, de pouvoir être écrites avec les logiciels standard fournis avec MS Windows, d’être relativement simples à écrire et de ne pas nécessiter de formation informatique poussée. En fait, le niveau en informatique demandé ne dépasse pas celui que devraient posséder actuellement « nos jolies têtes blondes » en école primaire (d’après le programme du ministère de l'Education, sous la dénomination B2i, pour les intimes !).

Deux types de jauges

Il existe deux types de jauges sur FS à partir de la version 2002. D’un côté, les fichiers .gau binaires (ou compilés) constitués d'un langage interprétable seulement par le CPU, quasiment illisible pour un humain. Ils nécessitent un compilateur, une bonne connaissance du langage C et de la programmation MS Windows.

De l’autre, le type xml qui est codé par un fichier texte, éditable avec Notepad (mais pas Word), facile à lire, beaucoup plus limité en terme de lignes à écrire et suffisamment puissant pour être utilisé pour l’ensemble d’un cockpit 2D (par exemple, celui du Baron 58 par défaut est constitué quasi exclusivement de jauges xml).

Par contre, les jauges xml ne permettent pas de faire certains affichages évolués. Voyons rapidement ce qu’on peut espérer de ces jauges : on peut afficher du texte en couleur, des images, les faire tourner, agrandir, déplacer et les empiler. On peut aussi accéder aux caractéristiques de l’avion (nom, altitude, radio, AP, etc…), récupérer les évènements souris et clavier et même désactiver des affichages en fonction des pannes simulées (non traité ici). Par contre, on ne peut pas accéder au réseau, aux fichiers (sauf les images), modifier le contenu des images, afficher de la 3D, …

Par exemple, il est possible de faire un chronomètre, un anémomètre, un altimètre, un HUD, une jauge de carburant, un trim numérique, … Par contre, inutile de persévérer dans les jauges xml si vous souhaitez faire une boîte noire, un radar météo, …

Qu’est ce que le xml ?

Depuis le début, on emploie les 3 lettres xml sans vraiment savoir à quoi on fait référence. Rien de magique ! Le format xml est un standard de l’industrie informatique qui définit certaines règles d’écriture d’un fichier texte. Ces règles simples permettent de créer des outils et des éditeurs de fichiers sans avoir besoin de connaître l’application qui les crée.

Voyons rapidement ces règles d’écriture. Les personnes habituées au html ne seront pas dépaysées, il existe tout de même quelques différences, le xml est beaucoup plus strict. Voici les 3 règles majeures :

Le texte est composé de balises et de contenu entre ces balises. Les balises sont constituées d’un nom sans espaces entourés de < et >. Par exemple <Image> est une balise correcte.

Une balise « ouverte » doit être « refermée ». C’est à dire <Image> doit être suivie dans le fichier de </Image>. On peut contracter l’écriture d'une ouverture et fermeture simultanées : <Image /> (ATTENTION à l'espace qui précède le /).

Une balise « ouverte » ne peut pas être suivie par la fermeture d’une autre balise : « <Texte> <Image> </Texte> </Image> » est interdit. Cette règle garantit une organisation hiérarchique (ou arborescente) des balises.

Bien sûr, il existe beaucoup d’autres petites règles de moindre importance (par exemple les caractères utilisables dans les balises), toutefois, le respect des 3 règles générales suffisent généralement à faire un fichier correct. Il est aussi possible de donner des attributs à des balises. La valeur des attributs est toujours entre guillemets. Exemple : <Image name="texture.bmp" size="3">. Dernier point, on peut insérer des commentaires, ils commencent par <!-- et se terminent par -->.

Exemple du contenu d’un fichier xml correct :

<livre version="1"> <auteur>Le nom de l’auteur</auteur>

<!-- Je suis un commentaire -->

<contenu>

<chapitre numero="1">Bla bla 1.</chapitre>

<chapitre numero="2">Bla bla 2.</chapitre>

<chapitre numero="3">Bla bla 3.</chapitre>

</contenu>

</livre>

Application aux jauges FS

Dans la norme xml, rien ne spécifie le nom des balises, chacun est libre d’utiliser les noms qui lui semblent les plus opportuns. Par contre, lors de l'écriture d'une jauge xml lue par FS, il est nécessaire de n’utiliser que les balises prévues dans le logiciel. C’est cet ensemble de balises qui donne une signification au contenu du fichier. La seule difficulté est donc là : connaître les balises reconnues par FS et savoir les utiliser. Nous allons donc voir cette partie en détail.

Un dernier point général, évitez absolument les caractères accentués dans les jauges FS.

Organisation du travail

Organisation physique

Les jauges sont toujours situées dans le répertoire Gauges de FS. On pourrait certainement les mettre ailleurs mais ça ferait un peu désordre ! Nos jauges xml seront constituées de plusieurs fichiers : un .xml et des images .bmp (tous dans le même répertoire). Il serait tentant de tout mettre directement dans Gauges, je vous propose plutôt de créer un répertoire MesJauges pour travailler.

Par la suite, vous aurez tout le loisir de réfléchir à une meilleure organisation. Les jauges xml par défaut de FS résolvent le problème en étant contenues à l'intérieur d'un fichier .cab (sorte de fichier .zip de MS Windows). FS sait comment aller chercher les informations à l'intérieur. Si les .cab sont bien pratiques pour diffuser nos propres créations, par contre, ils sont totalement anti-productifs en cours de développement. Un sous-répertoire MesJauges dans Gauges sera largement plus pratique.

Logiciels pratiques

Dans la suite, je propose Paint et Notepad pour éditer les fichiers. Je les propose parce qu'ils existent dans l'installation par défaut de MS Windows, ils ne constituent pas, loin de là, la meilleure solution pour éditer des .bmp ou des .xml. Pour les images, un logiciel comme PhotoShop, Paint Shop Pro ou The Gimp sera parfait. Les deux premiers sont assez onéreux tandis que The Gimp a l'avantage d'être gratuit, voici l'adresse où le télécharger : http://www.gimp.org/windows/. Pour éditer le xml, le net regorge d'éditeurs plus ou moins corrects. Une recherche internet sur « XML editors windows » devrait donner des résultats.

SDK de FS

De nombreuses informations sont déjà disponibles (en anglais) et librement téléchargeables dans le « Panels SDK » de FS 2004 (ceci dit FS 2004 est, à ma connaissance, totalement compatible avec les jauges xml du SDK 2002). Je vous conseille donc de télécharger le SDK, j'y ferai référence dans la suite. Si vous avez le SDK de 2002, je vous conseille fortement celui de 2004 qui est amélioré.

Livraison de version : .CAB

Comme je l'indiquais, lorsque votre travail sur une jauge est terminé et que vous êtes prêt à en faire profiter tout le monde, il est bon de rassembler tous les fichiers créés (.xml et .bmp) et un seul, un .cab. C'est très simple ! En réalité, il existe un exécutable dans la racine de FS2004 qui se nomme cabdir.exe. Il suffit de « glisser » à la souris un répertoire sur ce programme pour fabriquer un fichier .cab de même nom qui contient tous les fichiers. Ainsi, vous ne diffuserez que ce fichier .cab.

Rigueur d'écriture

Les fichiers xml sont très stricts, ils demandent une syntaxe sans erreur. Si, par malheur, vous faites un « bug », FS n'affichera tout simplement pas votre jauge, il n'y aura aucun retour sur le numéro de ligne qui pose problème. De ce fait, il est prudent de travailler par raffinements successifs en gardant bien dans un coin les versions qui fonctionnent !

Il existe des éditeurs xml qui permettent de vérifier la cohérence de la structure du fichier et ainsi d'éviter à la source un grand nombre d'erreurs. En ce qui me concerne, je n'ai pas trouvé de solution gratuite à ce genre de besoin. De toutes façons, ça n'est pas suffisant puisque qu'une partie du contenu ne peut être interprétable que par FS 2004.

Structure d’une jauge xml

Une gauge xml commence toujours par <Gauge Name="Un_nom" Version="1.0"> et finit toujours par </Gauge>. Par exemple, le fichier altimeter.xml contiendra :

<Gauge Name="altimeter" Version="1.0">

...

</Gauge>

A l'intérieur de ce bloc (donc à la place des ...), on trouvera :

le nom de l'image de fond si elle existe (balise <Image>),

une liste d'éléments (balise <Element>),

le bloc de traitement des évènements souris (balise <Mouse>).

Cette liste n'est pas complète, on y reviendra.

Image de fond

L'image de fond sert de base graphique à la jauge, elle est toutefois optionnelle. Tous les autres éléments seront affichés par dessus. Elle est spécifiée à partir d'une balise <Image Name="Nom_de_bmp.bmp" />. On peut ainsi, dès maintenant, construire facilement une des jauges les plus simples : l'affichage d'une image bmp. Je considère que l'image MaSimpleImage.bmp existe dans le même répertoire que la jauge.

Enregistrer un fichier simpleimage.xml avec Notepad dans le répertoire MesJauges :

<Gauge Name="simpleimage" Version="1.0">

<Image Name="masimpleimage.bmp" />

</Gauge>

Pour cet exemple, j'utilise une bitmap de 150x30 points contenue dans le fichier MaSimpleimage.bmp :

Voilà, il n'y a plus qu'à référencer le .xml dans le panel d'un avion pour voir le résultat escompté. Rien de plus simple. Dans le cas du Cessna 172, il faudrait ajouter la ligne suivante au panel.cfg :

gauge45=MesJauges!SimpleImage, 10, 50, 150, 30

Ce qui nous donne, sans surprise :

Essayez, si ça ne fonctionne pas, c'est que j'ai mal expliqué un détail, mieux vaut tout de suite éclaircir ce point, ça doit fonctionner correctement ! Certes, c'est moche, mais ça marche et c'est là l'essentiel, à chacun son métier !!! ;^)

Bien, c'est entendu, c'est simple mais un peu trop, on ne voit pas encore comment faire un HUD avec ça. Patience, tout arrive ! Tout d'abord, de nombreux raffinements peuvent être apportés à la balise <Image>.

Par exemple, <Image Name="masimpleimage.bmp" ImageSizes="23,63,36,99" />. L'attribut ImageSizes spécifie la taille de l'image en résolution 640x480 et en 1024x768. L'image fera donc 23x63 dans le premier mode et 36x99 dans le second. Dans les autres résolutions d'écran, le logiciel calcule la taille de l'image à partir d'une "règle de 3" classique. Ceci appelle à un petit commentaire : si l'image bmp est plus grande ou plus petite que la taille indiquée dans la jauge, elle est étirée ou rétrécie pour couvrir la bonne dimension.

Eléments : affichage de texte

Maintenant que le principe de l'image de fond est assimilé, passons au texte. J'ai déjà indiqué qu'on trouvait dans les jauges, à la suite de l'image de fond, une suite d'éléments. Ces éléments seront définis grâce à la balise <Element>. De plus, il est possible de positionner les éléments à l'intérieur de la jauge grâce à la balise <Position X="0" Y="0"> comme suit :

<Gauge Name="simpleimage" Version="1.0">

<Image Name="masimpleimage.bmp" />

<Element>

<Position X="0" Y="2" />

... Ici définition de l'élément 1 ...

</Element>

<Element>

<Position X="2" Y="10" />

... Ici définition de l'élément 2 ... etc ...

</Element>

</Gauge>

Le texte sera donc défini à l'intérieur d'un élément et positionné par <Position>. Une remarque au passage, il est tout à fait possible de définir une image à l'intérieur d'un élément de la même façon que l'image de fond. Mais là n'est pas encore le sujet, passons au texte !

Créons un nouveau fichier SimpleTexte.xml dans MesJauges dont voici le contenu :

<Gauge Name="simpletexte" Version="1.0">

<Image Name="masimpleimage.bmp" />

<Element>

<Position X="2" Y="4"/>

<Text X="146" Y="24" Length="20" Font="Courier New" Adjust="Center" Color="Red" Bright="Yes">

<String>Mon texte a moi</String>

</Text>

</Element>

</Gauge>

Ce qui nous donne la jauge suivante :

Bien, les balises à retenir sont donc <Text> et <String>. Les deux sont nécessaires. La balise <Position> est optionnelle et ne sert, dans cet exemple qu'à centrer le texte à peu près correctement. De nombreux attributs ont été mis là pour l'exemple et ne sont pas indispensables. Voyons plus précisément :

<Text

les X et Y précisent la taille du texte (et non sa position) : longueur, largeur,

Length précise sa taille max en nombre de caractères (requis),

Font précise la police de caractère. Attention, à bien utiliser des polices standards fourni dans MS Windows,

Adjust précise la justification (gauche, droite, centrée, par défaut à gauche),

Color précise la couleur, il est possible d'utiliser la notation #rrggbb (ex : #FF00FF violet criard),

Bright précise que la couleur reste si le cockpit n'est pas éclairé, comme si le texte était éclairé.

>

A noter qu'il est possible de préciser Bright sur une image. La différence est visible de nuit en éteignant le cockpit :

<Image Name="masimpleimage.bmp" Bright="Yes" />

Autre remarque, le texte est coupé hors de la zone de la jauge.

A ce moment de l'exposé, nous avons presque toutes les clés en main pour faire une jauge utile, c'est à dire un trim numérique. Il nous manque seulement la façon d'aller chercher la valeur dans les paramètres de l'avion. Jetons un coup d'oeil là dessus.

Accès aux paramètres d'avion

L'accès à un paramètre de l'avion s'écrit (A:nom du paramètre,unité). Attention, il ne s'agit plus de xml mais du contenu entre les balises, les règles du xml ne s'appliquent plus.

Par exemple :

le trim en degrés :	(A:Elevator Trim Position,degrees)

le carburant total en livres :	(A:Fuel total quantity weight, pounds)

la vitesse en noeuds :	(A:Airspeed select indicated or true,knots)

Alors, évidemment, il n'est pas question d'énumérer ici toutes les variables existantes et les unités possibles. Vous trouverez les variables dans le document Parameters.doc du SDK de FS, les unités sont dans Units.doc. Une autre solution est d'aller voir comment sont faites les jauges de FS, pour cela, il faut ouvrir, par exemple, le fichier beech_baron.cab dans le répertoire Gauges et ouvrir les fichiers .xml.

Trim numérique

Notre trim numérique est sur la bonne voie. Il nous reste un détail à voir, cependant, voici tout de suite le code de la jauge :

<Gauge Name="trimnumerique" Version="1.0">

<Image Name="masimpleimage.bmp" Bright="Yes" />

<Element>

<Position X="2" Y="4"/>

<Text X="146" Y="24" Length="20" Font="Courier New" Adjust="Center" Color="Red" Bright="Yes">

<String>%((A:Elevator Trim Position,degrees))%!2d! degres</String>

</Text>

</Element>

</Gauge>

D'où le résultat, trim positionné pour un décollage (position To du Cessna 172) :

Simple, non ? Pas tout à fait, d'accord ! On trouve quelques caractères cabalistiques ! Nulle crainte, voici les explications : le contenu de la balise <String> est normalement du texte, or on demande à FS de nous donner le contenu d'une variable. Il faut donc que FS considère ce texte comme étant une variable, il faut « l'interpréter ». Voilà donc la signification des %( et )%. En ce qui concerne les !2d!, notez bien qu'ils sont nécessaires après le )%. Ils signifient simplement que le nombre doit être un entier de deux chiffres. Cette notation s'est largement inspirée de la fonction printf du langage C !

Voilà quelques exemples qui aident à comprendre :

!d!	Entier (d comme décimal),

!3d!	Entier à 3 chiffres,

!04d!	Entier à 4 chiffres complété devant par des 0 si nécessaire,

!5.0f!	Réel (f comme nombre à virgule flottante) à 5 chiffres dont 0 après la virgule,

!7.2f!	Réel à 7 chiffres dont 2 après la virgule.

!s!	Texte (s comme string).

Changez la ligne du trim comme suit et nous voyons, oh surprise, les chiffres après la virgule :

<String>%((A:Elevator Trim Position,degrees))%!3.1f! degres</String>

Autre point intéressant, essayez :

<String>%((A:Elevator Trim Position,degrees))%!02d! degres</String>

Certes, l'avantage n'est pas clair pour un trim numérique, par contre, lorsqu'il s'agira des secondes d'un chronomètre, l'astuce vaudra son pesant d'or (ou de cacahouètes ?).

Encore un exemple qui nous affiche le type de l'avion (« c172 » dans mon cas) :

<String>%((A:ATC MODEL,string))%!s!</String>

La pile d'évaluation

Maintenant que nous savons comment afficher les paramètres de l'avion en texte, les questions et problèmes commencent à surgir. Comment convertir mes valeurs dans l'échelle qui me convient ? Comment faire des opérations dessus (additions, soustractions, etc...) ? Derrière le titre barbare « pile d'évaluation » se cachent les réponses à ces questions.

FS permet aux concepteurs de jauges de réaliser des opérations mathématiques complexes à partir de règles simples, une fois qu'on a bien compris le principe ! Souvenez-vous des calculatrices HP programmables, ces fameuses calculatrices dont seuls les possesseurs pouvaient tirer un quelconque résultat ! Et bien voilà, l'heure est venue d'apprendre leur terrible secret.

(roulements de tambours)

Principe général

La technique consiste à empiler des valeurs et à demander les opérations seulement ensuite. Par exemple : j'empile 2, j'empile 3 et seulement ensuite, je demande l'addition (qui dépile automatiquement 2 et 3 et qui empile 5). Quand je parle d'empiler et dépiler, on peut s'imaginer des Post-It sur lesquels on écrit les nombres et qu'on colle les uns par dessus les autres, on ne peut voir que celui qui est sur le dessus, les autres sont cachés.

2 3 2 3 2 + 5 Evaluation

L'intérêt de cette méthode réside dans sa performance, en terme de vitesse et de mémoire consommée : il suffit de prendre les opérations une par une dans l'ordre, de plus, on n'utilise que très peu de mémoire. L'inconvénient est son manque de lisibilité pour un être humain, une évaluation complexe doit être pratiquement décodée pour être comprise. Dans FS, nous écrirons simplement « 2 3 + ». Il est possible d'enchaîner plusieurs opérations : « 2 3 5 + * » qui donne le résultat 16 (empile 2, empile 3, empile 5, demande l'addition qui dépile 3 et 5 et empile 8, demande la multiplication qui dépile 8 et 2 et empile 16).

2 3 2 3 2 5 Evaluation 3 2 5 + 8 2 * 16

Il n'y a aucune règle de priorité entre opérations, elles sont exécutées dans l'ordre dans lequel elles arrivent. A chacun de réfléchir à l'ordre convenable. Voilà la façon, par exemple, de convertir le carburant de livres en gallons (division par 6.7) :

(A:Fuel total quantity weight, pounds) 6.699219 /

L'affichage dans un champ texte se fait alors simplement par :

<String>%((A:Fuel total quantity weight, pounds) 6.699219 /)%!5.0f! gal</String>

D'où sur mon Cessna 172, rempli à ras les ailes :

Vous trouverez toutes les opérations permises dans « Panels SDK.doc » page 109 à 115 du SDK de FS. Toutes les opérations mathématiques classiques existent (trigonométrie, conversions radians en degrés et inversement, ...). Au passage, les jauges xml sont largement expliquées (in english, of course) dans ce document à partir de la page 105.

Variables accessibles

Nous avons déjà vu qu'on accède aux paramètres d'avion via des commandes du type (A:..,...). Il en existe d'autres, beaucoup d'autres. Voici la liste exhaustive des grandes catégories :

A	Aircraft	Carburant, trim, ailerons, train sorti, ...

E	Environment	Heure, ...

P	Program	Vitesse de simulation, ...

G	Gauges	Variables locales à une jauge. Ex : (G:Var1),

L	Local	Variables locales, défini par le concepteur,

K	Keys	Pour envoyer des commandes clavier,

M	Mouse	Accès aux paramètres souris.

Pour les types A, E et P, il faut fouiller dans Parameters.doc du SDK

Pour le type G, on a le droit à Var1, Var2, ... On n'a pas besoin de spécifier d'unité.

Pour le type L, on peut mettre ce qu'on veut, il faut donner une unité.

Pour le type K, il faut aller voir le document EventID.doc du SDK.

Pour le type M, les variables sont X, Y et Event. Par exemple : (M:X) est l'absisse de la position de la souris (par rapport au coin en haut à gauche de la jauge). Des exemples d'events sont “LeftSingle” (clic gauche), “RightDouble” (double clic droit), “MiddleDrag”, “Move” et “LeftRelease”, inventez vous-même ceux qui manquent...

L'intérêt d'avoir des variables est de pouvoir en modifier la valeur. Cette opération passe par l'utilisation du symbole >. En voici quelques exemples d'utilisation :

(>G:Var1)	Mettre dans G:Var1 le nombre au sommet de la pile et dépiler,

(>K:AP_MASTER)	Mettre dans les évènements clavier à traiter « AP_Master » (enclencher l'AP).

Voilà pour l'essentiel, la pile d'évaluation permet encore d'autres subtilités plus « avancées », nous les verrons dans la suite.

Montre numérique

Petite application pratique pour rester éveillé, la réalisation d'une montre numérique. Rien de très compliqué, il suffit de savoir comment récupérer l'heure système et de présenter tout ça proprement.

(P:Local time,hours)

(P:Local time,minutes)

La présentation relève des astuces déjà vues précédemment, le seul point problématique est la conversion en entier. En effet, la variable (P:Local time,hours) nous donne une valeur en réel, or si nous la présentons avec %((P:Local time,hours))%!2d!, la conversion se fait par excès après 0,5. En d'autres termes, pour 13h29, nous aurons bien 13 tandis qu'à 13h31 nous aurons 14 ! Une conversion explicite devra alors se faire préalablement avec l'instruction « flr ».

Cette fois, nous avons tout, il suffit de remettre dans le bon ordre, et comme, dans ce document, nous osons le mauvais goût, choisissons une police de caractères bien typée seventeen's, voici horloge.xml :

<Gauge Name="horloge" Version="1.0">

<Image Name="masimpleimage.bmp" Bright="Yes" />

<Element>

<Position X="2" Y="4"/>

<Text X="146" Y="24" Length="20" Font="Quartz" Adjust="Center" Color="Black" Bright="Yes">

<String>%((P:Local time,hours) flr)%!2d!:%((P:Local time,minutes) flr 60 %)%!02d!</String>

</Text>

</Element>

</Gauge>

Cette horloge fonctionne en mode 24h, je vous laisse le soin de la faire passer en affichage 12h (solution dans la jauge Clock du Baron 58 de FS).

Evènements souris

Ok, l'horloge, c'est bien sympa, toutefois, il serait pas mal de pouvoir déclencher un chrono, le stopper et le remettre à zéro. Malheureusement, nous n'avons pas encore vu les événements souris. Ils sont pourtant incontournables, alors c'est parti, introduisons la balise <Mouse>.

Première remarque, les évènements souris sont exprimés après l'ensemble des éléments. Nous aurons donc une structure de description de jauge de la forme :

<Gauge Name="..." Version="1.0">

<Element>

... Ici définition de l'élément 1 ...

</Element>

... tous les autres éléments ...

<Mouse>

... déclarations des évènements souris ...

</Mouse>

</Gauge>

La balise <Mouse> contient les éléments suivants :

définition éventuelle de forme de curseur

événement sur un clic

définition de zones

Il est possible de choisir la forme du curseur de souris sur la jauge. Les formes disponibles sont au nombre de 8 (None | Normal | UpArrow | DownArrow | LeftArrow | RightArrow | Hand | Crosshair). Je vous laisse tester ou deviner, voici un exemple :

<Mouse>

<Cursor Type="Hand" />

</Mouse>

Passons aux événements. On peut facilement déclencher la simulation d'appui sur une touche. Comme déjà indiqué, les possibilités sont nombreuses et énumérées dans EventIDs.doc du SDK de FS. Exemple du switch de batterie :

<Mouse>

<Click Event="TOGGLE_MASTER_BATTERY" />

</Mouse>

Notez que l'écriture suivante effectue strictement la même commande. En effet, les évènements sont bien TOUS liés à des actions clavier (qu'ils existent ou non dans votre configuration clavier) :

<Click>(>K:TOGGLE_MASTER_BATTERY)</Click>

Les clics peuvent être répétitifs, si besoin, en ajoutant l'attribut Repeat.

<Click Event="VOR1_OBI_INC" Repeat="Yes" />

Afin de définir des zones, il faut employer la balise <Area>. Le contenu d'une balise <Area> est identique au contenu d'une balise <Mouse>. C'est à dire qu'il est possible de spécifier une forme de curseur, de définir un événement et même de définir des zones dans la zone :

<Mouse>

<Area>

<Click Event="TOGGLE_MASTER_BATTERY" />

</Area>

</Mouse>

Voilà la façon de définir deux zones avec deux commandes et curseurs différents :

<Mouse>

<Area Left="0" Right="75" Top="0" Bottom="30">

<Cursor Type="DownArrow" />

<Click Event="VOR1_OBI_DEC" Repeat="Yes" />

</Area>

<Area Left="75" Right="150" Top="0" Bottom="30">

<Cursor Type="UpArrow" />

<Click Event="VOR1_OBI_INC" Repeat="Yes" />

</Area>

</Mouse>

Les zones ne doivent pas se recouvrir, sinon la forme du curseur choisi, ainsi que la commande sélectionnée seront relativement aléatoires (en réalité, FS choisi bien une solution mais ce n'est pas très propre).

Allons un peu plus loin : toutes les opérations mathématiques classiques sont possibles à l'intérieur des balises <Click>. Voici, par exemple, la façon de compter combien de fois on clique sur une jauge (je l'admets, l'utilité ne saute pas aux yeux !) :

<Mouse>

<Click>(G:Var1) 1 + (>G:Var1)</Click>

</Mouse>

Donc, à chaque clic, on empile la valeur de G:Var1, on empile 1, on fait la somme et on met le résultat dans G:Var1. Facile ! Je vous laisse la réalisation de l'affichage sur notre magnifique jauge rouge et jaune pour vous convaincre !

Si l'utilité de la gestion souris précédente n'était pas évidente, il suffit de peu pour la rendre utile. En fait, en prenant le modulo de la valeur incrémentée, on réalise une jauge à états. Exemple à 3 états (valeurs 0, 1 et 2) :

<Mouse>

<Click>(G:Var1) 1 + 3 % (>G:Var1)</Click>

</Mouse>

Lorsqu'on obtient des états, il « suffit » de définir que l'état 0 signifie reset, l'état 1 start et l'état 2 stop pour pressentir la gestion de notre chronomètre. On utilisera 4 variables : (G:Var1) contient l'état de la jauge, (G:Var2) contient l'heure de démarrage du chrono, (G:Var3) contient l'heure d'arrêt du chrono et enfin (G:Var4) stockera l'heure courante. Pour l'état reset, il faut mettre l'heure courante dans (G:Var2) et (G:Var3), pour le start, il faut mettre l'heure courante dans (G:Var3) et enfin pour le stop, il ne faut rien faire. On ajoute l'affichage du résultat à la fin.

Ces traitements nécessitent une instruction conditionnelle : « if{ ». Voilà la syntaxe du if :

condition if{ traitement }

condition if{ traitement } els{ traitement }

Attention à bien laisser des espaces autour des if{, } et els{.

Exemple, si (G:Var1) est égal à 7, on met l'heure dans (G:Var2) :

(G:Var1) 7 == if{ (P:Local time,hours) flr (>G:Var2) }

Maintenant, il est possible d'écrire le chronomètre en toute sérénité :

<Gauge Name="chrono" Version="1.0">

<Image Name="masimpleimage.bmp" Bright="Yes" />

<!-- G:Var1 est l'etat de la jauge : 0=reset, 1=start, 2=stop -->

<!-- G:Var2 est l'heure de depart du chrono -->

<!-- G:Var3 est l'heure d'arret du chrono -->

<!-- G:Var4 est l'heure courante -->

<Element>

<Position X="2" Y="4"/>

<Text X="146" Y="24" Length="20" Font="Quartz" Adjust="Center" Color="Black" Bright="Yes">

<String>%((P:Absolute time,seconds) (>G:Var4) (G:Var1) 0 == if{ (G:Var4) (>G:Var2) (G:Var4) (>G:Var3) } (G:Var1) 1 == if{ (G:Var4) (>G:Var3) } (G:Var3) (G:Var2) - flr)%!05d! sec</String>

</Text>

</Element>

<Mouse>

<Click>(G:Var1) 1 + 3 % (>G:Var1)</Click>

</Mouse>

</Gauge>

Sur le principe de cette jauge à 3 états, il est facile de créer un affichage de la quantité de carburant en livres, tonnes ou gallons suivant le nombre de clics souris. A vous de réfléchir ! Nous avons fini avec les jauges texte, non pas que le sujet soit épuisé mais plutôt l'auteur ;^), passons aux images !

Traitement des images

L'intérêt premier des images est leur côté attrayant. C'est beau et ça se voit ! Par contre, elles demandent beaucoup plus de travail artistique. Elles sont donc plus longues à développer mais pas nécessairement plus complexes. Il est temps de laisser tomber Paint et de passer à un logiciel de traitement d'images un peu plus évolué !

Les images vont pouvoir pivoter autour d'un axe et se déplacer. On fixe l'axe de rotation grâce à la balise <Axis> dont voici un exemple d'utilisation :

<Image Name="masimpleimage.bmp">

<!-- le pivot de l'image se trouve aux coordonnees (20,30 de l'image au lieu de 0,0) -->

<Axis X="20" Y="30" />

</Image>

Petit détail utile à connaître, par défaut, la couleur noire (0,0,0) est transparente. Lorsqu'on souhaite du noir opaque, il faut mettre un gris très foncé (1,1,1).

Eléments : affichage d'images

Les images se traitent à l'intérieur de la balise <Element>. C'est celle-ci qui définit un ensemble riche d'opérations qui nous intéressent particulièrement. Les éléments peuvent contenir les balises suivantes :

<Element>	un élément peut contenir un ou plusieurs éléments,

<MaskImage>	on reviendra dessus, les masques sont essentiels,

<Image>	déjà vu,

<Text>	idem,

<Position>	idem,

<Size>	on précise la taille,

<Visible>	visible ou non,

<Select>	sélection d'une image en fonction d'une variable,

<SelectRange>	?

<Shift>	décalage (pour déplacer un élément),

<Rotate>	rotation,

<Clip>	rectangle pour couper l'élément si il dépasse,

<Failures>	système de pannes.

Ouf !

Bien, c'est parti, d'une part, ce qui est vrai pour les images est vrai pour les textes. Ils peuvent donc, eux aussi, bouger dans tous les sens. C'est peut-être moins intéressant, c'est tout.

Choix d'une image

Pour débuter, je propose une jauge simple à 3 états (et 3 images) qui affiche l'image suivante à chaque clic. On ne revient pas sur la façon de stocker l'état et de le changer sur un clic, c'est du déjà vu ! Voici donc les balise <Select>, <Value> et <Case>. Je suppose qu'on a créé 3 images switchvert.bmp, switchorange.bmp et switchrouge.bmp si possible différentes !

<Gauge Name="switch" Version="1.0">

<Element>

<Select>

<Value>(G:Var1)</Value>

<Case Value="0"><Image Name="switchvert.bmp" /></Case>

<Case Value="1"><Image Name="switchorange.bmp" /></Case>

<Case Value="2"><Image Name="switchrouge.bmp" /></Case>

</Select>

</Element>

<Mouse>

<Click>(G:Var1) 1 + 3 % (>G:Var1)</Click>

</Mouse>

</Gauge>

L'état de la jauge peut aussi être déterminé par un paramètre de l'avion, par exemple, le train d'atterrissage (si le pourcentage du train est supérieur à 98, on choisit l'image verte, sinon, on prend la rouge) :

<Gauge Name="gearlight" Version="1.0">

<Element>

<Select>

<Value>(A:Gear center position,percent) 98 ></Value>

<Case Value="0"><Image Name="switchrouge.bmp" Bright="Yes" /></Case>

<Case Value="1"><Image Name="switchvert.bmp" Bright="Yes" /></Case>

</Select>

</Element>

</Gauge>

Translations, rotations : horizon artificiel

Passons maintenant aux déplacements et rotations par la réalisation d'un horizon artificiel. Les artistes, c'est à vous ! Il nous faut une image de fond horizon.bmp et une image qui va passer dessus horizon2.bmp. N'oubliez pas que le « vrai » noir est transparent, on souhaite du noir plein. Voilà mon travail après bien des déboires (images en 128x128) :

Commençons par le plus simple : faire tourner horizon2.bmp en fonction de l'angle de l'avion. Nous découvrons à cet effet l'utilisation de deux nouvelles balises, <Rotate> et <Value>. L'angle doit être en radians :

<Gauge Name="horizon" Version="1.0">

<Element>

<Position X="64" Y="64" />

<Image Name="horizon2.bmp">

<Axis X="64" Y="64" />

</Image>

<Rotate>

<Value>(A:Attitude indicator bank degrees,radians)</Value>

</Rotate>

</Element>

</Gauge>

Les tailles et positions dépendent de la taille de vos images.

Ensuite, il faut déplacer cette image de haut en bas en fonction de l'assiette de l'avion. La balise <Shift> permet ce tour :

<Shift>

<Value Minimum="-35" Maximum="35">(A:Attitude indicator pitch degrees,degrees) /-/</Value>

<Scale X="0.0" Y="1.6" />

</Shift>

Plusieurs remarques sur ce code : le signe /-/ est l'opération « prendre le négatif de », on aurait pu faire la même en indiquant : « 0 (A:...) - ». Dans la balise <Value>, on a la possibilité de fixer des limites qui simulent des limitations physiques des instruments. La balise <Scale> est indispensable, puisque les valeurs de scale pour X et Y sont 0 par défaut. Enfin, la valeur donnée pour Y dépend de la taille de l'image, dans mon cas, 1.6 pixels par degré.

Il faut maintenant faire un cache au dessus de notre image. Deux solutions : soit nous faisons une copie de l'image de fond en ajoutant un rond transparent central, soit nous utilisons la capacité de FS de gérer un masque d'image(s). Je vous laisse faire la première et on s'attaque à la seconde. Pour un masque, on utilise deux couleurs : le noir (0,0,0) qui est transparent et le gris très foncé (1,1,1) qui est opaque. Dans ce cas, avec un gris très foncé sur du noir, on ne verra qu'une image presque totalement noire. Ce n'est pas franchement pratique. Je vous propose donc de travailler avec du noir et du blanc, puis seulement ensuite de convertir le blanc en gris foncé (1,1,1). Voilà mon masque horizon_masque.bmp avant conversion de couleurs :

Pour appliquer ce masque sur l'image, on utilise la balise <MaskImage>, il faut la mettre avant la balise <Image> :

<MaskImage Name="horizon_masque.bmp">

<Axis X="64" Y="64" />

</MaskImage>

Pour terminer notre horizon artificiel, il nous faut encore un « viseur » pour bien repérer le centre de l'horizon (ici 64x64).

Enfin, j'ai ajouté deux valeurs numériques pour le fun : la vitesse et l'altitude. Voilà le code (rien de compliqué) :

<Gauge Name="horizon" Version="1.0">

<Image Name="horizon.bmp" />

<Element>

<!-- horizon mobile -->

<MaskImage Name="horizon_masque.bmp">

<Axis X="64" Y="64" />

</MaskImage>

<Image Name="horizon2.bmp">

<Axis X="64" Y="64" />

</Image>

<Shift>

<Value Minimum="-35" Maximum="35">(A:Attitude indicator pitch degrees,degrees) /-/</Value>

<Scale X="0.0" Y="1.6" />

</Shift>

<Rotate>

<Value>(A:Attitude indicator bank degrees,radians)</Value>

</Rotate>

</Element>

<Element>

<!-- viseur -->

<!-- position pour avoir l'angle le plus proche de la valeur numerique -->

<Position X="32" Y="31" />

<Image Name="viseur.bmp" />

</Element>

<Element>

<!-- vitesse -->

<Position X="0" Y="0" />

<Text X="50" Y="20" Length="5" Font="Courier New" Color="Red" Bright="Yes">

<String>%((A:Airspeed select indicated or true,knots))%!3d!</String>

</Text>

</Element>

<Element>

<!-- altitude -->

<Position X="93" Y="0" />

<Text X="35" Y="20" Length="5" Font="Courier New" Adjust="Right" Color="Red" Bright="Yes">

<String>%((A:Indicated Altitude, feet))%!5d!</String>

</Text>

</Element>

</Gauge>

Et la jauge en situation (Cessna 172 en montée à 85 noeuds et1697 ft) :

Rotations non-linéaires

Il arrive souvent que certains instruments n'aient pas une graduation linéaire, en particulier les anémomètres. En effet, l'échelle est très étalée au début tandis que, pour les grandes vitesses, les graduations sont très proches. Les jauges xml permettent de traiter ce cas de figure par les balises <NonLineary> et <Item>. Exemple :

<Nonlinearity>

<Item Value="0" Degrees="0" />

<Item Value="20" Degrees="50" />

<Item Value="100" Degrees="100" />

<Item Value="200" Degrees="120" />

</Nonlinearity>

Les valeurs lues seront alors transformées en degrés de rotation conformément à l'interval dans lequel se trouve la valeur.

De même, il est possible d'utiliser la non-linéarité sur des positions (à l'intérieur d'une balise <Shift>).

<Nonlinearity>

<Item Value="0" X="50" Y="7" />

<Item Value="5" X="50" Y="90" />

</Nonlinearity>

Effets d'ombres et de reflets

Certaines personnes créent des jauges avec des reflets transparents (pour les surfaces vitrées) et des ombres, elles sont superbes ! Nous pouvons, nous aussi, faire ces effets à l'aide des jauges xml. Pour ce faire, il va nous falloir un éditeur d'images qui gère une couleur et une couche alpha : Paint est inutile, définitivement. Il va nous falloir, de plus, un programme qui convertit un format d'image standard avec couche alpha dans un format .bmp non-standard spécifique aux jeux de Microsoft (mais qu'avaient-ils besoin de modifier le format .bmp ???). Ce programme se nomme ImageTool.exe. Il est disponible dans le SDK Gmax de FS 2004 (et peut-être aussi celui de 2002).

Notion de transparence alpha

Il est nécessaire de bien comprendre la transparence alpha avant de continuer. La couche alpha va nous permettre d'associer à chaque point de l'image une transparence. L'alpha (ou la transparence) sera représenté par un niveau de gris : du noir au blanc. Le blanc représente un point totalement opaque tandis que le noir indique un point invisible. Tous les niveaux intermédiaires sont possibles.

Finalement, pour une couche de couleur comme celle-ci :

avec une couche alpha que voici :

l'image finale sera transparente de cette façon (le quadrillage est un fond neutre pour l'exemple) :

Image d'ombre

Nous y voilà. Reprenons notre horizon artificiel. Vous avez remarqué que j'avais inséré un ombrage dans horizon2.bmp. C'était pas trop mal, malheureusement, l'ombre se déplaçait lors des changements d'assiette, ce qui n'est pas très réaliste. Nous allons l'enlever et la remplacer par une image supplémentaire qui représente l'ombre.

L'idée générale pour un ombrage est de faire une image dont la couleur sera noire (ou très légèrement bleutée) et dont la partie alpha indiquera l'intensité de l'ombre.

horizon2.bmp :	Partie alpha de horizon_ombre.tga (la partie couleur est noire uniforme) :

Il faut maintenant transformer notre image horizon_ombre.tga 32 bits en une bmp « étendue » grâce à ImageTools. La commande suivante permet de le faire :

ImageTool.exe -gaugealpha horizon_ombre.tga

Première remarque : il FAUT le faire en ligne de commande. Deuxième remarque : le nom de fichier résultant est toujours un (faux) bmp. Bien, maintenant que nous avons notre image d'ombrage il suffit de le référencer comme élément dans la gauge Horizon en précisant qu'il s'agit d'une image contenant de l'alpha, rien de plus simple (le référencer APRES horizon2 et AVANT le viseur) :

<Element>

<Image Name="horizon_ombre.bmp" Alpha="Yes" />

</Element>

Ce qui donne le résultat suivant (c'est mieux, non ?) :

Reflets de type vitrés

Parfait, nous sommes déjà contents, pourtant, il nous reste une petite touche finale qui « fait vrai » : des reflets parasites sur notre instrument, comme si il était protégé par une vitre. Le principe de l'image est identique à l'ombre, au lieu de créer une surface de couleur noire, nous remplissons notre image en blanc, tout simplement. La partie alpha sert, encore une fois, à donner l'intensité de l'effet.

Il n'y a pas de mystère, pour savoir à quoi peuvent bien ressembler des reflets, il faut aller sur un aérodrome et demander gentillement à photographier les cockpits, généralement, ça ne pose pas de soucis ! ;^) Ici un Cessna 172 :

Artistes, c'est à vous !!!

En ce qui me concerne, après bien des déboires, je suis parvenu tant bien que mal à faire une texture horizon_reflet.tga blanche dont la couche alpha est la suivante (en réalité, elle est plus sombre) :

On la transforme en bmp comme pour l'ombre :

ImageTool.exe -gaugealpha horizon_reflet.tga

Et on ajoute à la jauge un nouvel élément qui suit juste la définition de l'ombrage comme ceci :

<Element>

<Image Name="horizon_reflet.bmp" Alpha="Yes" />

</Element>

Finalement, nous obtenons des reflets presque jolis sur la jauge :

Pour en savoir plus

L'ensemble des balises que nous avons vues n'est pas complet. Il en reste à découvrir ! Si vous souhaitez en savoir plus sur la structure de ces fichiers xml, vous pouvez ouvrir le fichier gauges.dtd présent dans le SDK de FS. Il définit de façon exhaustive l'ensemble des balises existantes (je vous l'accorde, ce n'est pas facile à lire).

Rien ne vaut l'apprentissage par l'exemple : ouvrez les .cab contenus dans le répertoire Gauges de FS vous y découvrirez de nombreuses jauges xml qui fonctionnent. Si vous parvenez à comprendre entièrement celle qui se nomme GPS_500, passez votre chemin, je n'ai rien à vous apprendre !! ;^)

Conclusion

Nous n'avons que survolé la puissance de ces jauges. Lors de l'écriture de ce document, il m'a fallu approfondir de nombreux points et j'en suis le premier bénéficiaire (je l'ai lu en entier, moi ! ;^)). Il est regrettable que Microsoft n'ait pas mieux documenté les jauges XML, elles sont relativement faciles à construire et les possibilités sont très étendues.

N'hésitez pas à enrichir ce texte en y apportant votre expérience, à corriger les éventuelles erreurs et en y ajoutant des jauges pour illustrer tel ou tel point délicat. Ce document n'est pas exhaustif, loin s'en faut, par contre, s'il a réussit à démystifier ces jauges, à vous donner envie d'aller plus loin et concevoir de jolis cockpits 2D (qui ne sont pas légions) alors, je suis heureux d'avoir pu apporter un petit caillou sur l'édifice.

Remerciements

L'auteur remercie tous les passionnés de vols virtuels qui l'ont aidé à enrichir ses compétences, que ce soient par leurs conseils, des vols en réseau, des documents ou des fichiers téléchargeables. L’auteur tient à remercier aussi particulièrement l’association HAIDF pour lui avoir ouvert les yeux sur la richesse de Fight Simulator grâce à ses cours, l’implication de ses passionnés et ses autres activités diverses. L’auteur remercie enfin la patience pleine de compréhension et la bienveillance dont fait preuve son épouse (note de l'épouse : qui corrige un max de fautes !) depuis plusieurs années envers ses activités nocturnes virtuelles !! ;^)

Annexe : paramètres

Vous trouverez ici la liste des 899 paramètres trouvés en recherchant automatiquement les chaînes de caractères dans le fichier sim1.dll. Vous le constaterez, il existe de grandes similitudes avec les paramètres officiels documentés. J'ignore s'ils sont tous utilisables, je n'assure rien !

ADF SOUND

ADF1 ACTIVE FREQUENCY

ADF1 EXT FREQUENCY

ADF1 FREQUENCY

ADF1 IDENT

ADF1 LATLONALT

ADF1 NAME

ADF1 RADIAL

ADF1 SIGNAL

ADF1 STANDBY FREQUENCY

AILERON AVERAGE DEFLECTION

AILERON LEFT DEFLECTION

AILERON POSITION

AILERON RIGHT DEFLECTION

AILERON TRIM

AILERON TRIM PCT

AIRCRAFT WIND X

AIRCRAFT WIND Y

AIRCRAFT WIND Z

AIRSPEED BARBER POLE

AIRSPEED INDICATED

AIRSPEED MACH

AIRSPEED SELECT INDICATED OR TRUE

AIRSPEED TRUE

AIRSPEED TRUE CALIBRATE

AMBIENT DENSITY

AMBIENT PRESSURE

AMBIENT TEMPERATURE

AMBIENT WIND DIRECTION

AMBIENT WIND VELOCITY

AMBIENT WIND X

AMBIENT WIND Y

AMBIENT WIND Z

ANGLE OF ATTACK INDICATOR

ARTIFICIAL GROUND ELEVATION

ATC AIRLINE

ATC FLIGHT NUMBER

ATC HEAVY

ATC ID

ATC MODEL

ATC TYPE

ATTITUDE BARS POSITION

ATTITUDE CAGE

ATTITUDE INDICATOR BANK DEGREES

ATTITUDE INDICATOR PITCH DEGREES

AUTO BRAKE SWITCH CB

AUTO COORDINATION

AUTOPILOT AIRSPEED ACQUISITION

AUTOPILOT AIRSPEED HOLD

AUTOPILOT AIRSPEED HOLD CURRENT

AUTOPILOT AIRSPEED HOLD VAR

AUTOPILOT ALTITUDE LOCK

AUTOPILOT ALTITUDE LOCK VAR

AUTOPILOT ALTITUDE MANUALLY TUNABLE

AUTOPILOT APPROACH HOLD

AUTOPILOT ATTITUDE HOLD

AUTOPILOT AVAILABLE

AUTOPILOT BACKCOURSE HOLD

AUTOPILOT CRUISE SPEED HOLD

AUTOPILOT FLIGHT DIRECTOR ACTIVE

AUTOPILOT FLIGHT DIRECTOR BANK

AUTOPILOT FLIGHT DIRECTOR PITCH

AUTOPILOT GLIDESLOPE HOLD

AUTOPILOT HEADING LOCK

AUTOPILOT HEADING LOCK DIR

AUTOPILOT HEADING MANUALLY TUNABLE

AUTOPILOT MACH HOLD

AUTOPILOT MACH HOLD VAR

AUTOPILOT MASTER

AUTOPILOT MAX SPEED HOLD

AUTOPILOT NAV SELECTED

AUTOPILOT NAV1 LOCK

AUTOPILOT RPM HOLD VAR

AUTOPILOT SPEED SETTING

AUTOPILOT TAKEOFF POWER ACTIVE

AUTOPILOT THROTTLE ARM

AUTOPILOT VERTICAL HOLD

AUTOPILOT VERTICAL HOLD VAR

AUTOPILOT WING LEVELER

AUTOPILOT YAW DAMPER

AUTOTHROTTLE ACTIVE

AVIONICS MASTER SWITCH

BARBER POLE MACH

BAROMETER PRESSURE

BOMB AMMO

BRAKE INDICATOR

BRAKE LEFT POSITION

BRAKE PARKING INDICATOR

BRAKE PARKING POSITION

BRAKE RIGHT POSITION

CANNON AMMO

CANOPY OPEN

CARB HEAT AVAILABLE

CATEGORY

CENTER WHEEL RPM

CG AFT LIMIT

CG FWD LIMIT

CG MAX MACH

CG MIN MACH

CG PERCENT

CIRCUIT AUTO BRAKES ON

CIRCUIT AUTO FEATHER ON

CIRCUIT AUTOPILOT ON

CIRCUIT AVIONICS ON

CIRCUIT FLAP MOTOR ON

CIRCUIT GEAR MOTOR ON

CIRCUIT GEAR WARNING ON

CIRCUIT GENERAL PANEL ON

CIRCUIT HYDRAULIC PUMP ON

CIRCUIT MARKER BEACON ON

CIRCUIT PITOT HEAT ON

CIRCUIT PROP SYNC ON

CIRCUIT STANDY VACUUM ON

COM RECIEVE ALL

COM1 ACTIVE FREQUENCY

COM1 STANDBY FREQUENCY

COM1 STATUS

COM1 TRANSMIT

COM2 ACTIVE FREQUENCY

COM2 STANDBY FREQUENCY

COM2 STATUS

COM2 TRANSMIT

CONCORDE NOSE ANGLE

CONCORDE VISOR NOSE HANDLE

CONCORDE VISOR POSITION PERCENT

CONTROLLABLE

COWL FLAPS

DECISION HEIGHT

DELTA HEADING RATE

DESIGN SPEED VC

DESIGN SPEED VS0

DESIGN SPEED VS1

DME SOUND

ELECTRICAL AVIONICS BUS AMPS

ELECTRICAL AVIONICS BUS VOLTAGE

ELECTRICAL BATTERY BUS AMPS

ELECTRICAL BATTERY BUS VOLTAGE

ELECTRICAL BATTERY LOAD

ELECTRICAL BATTERY VOLTAGE

ELECTRICAL GENALT1 BUS AMPS

ELECTRICAL GENALT1 BUS VOLTAGE

ELECTRICAL GENALT2 BUS AMPS

ELECTRICAL GENALT2 BUS VOLTAGE

ELECTRICAL GENALT3 BUS AMPS

ELECTRICAL GENALT3 BUS VOLTAGE

ELECTRICAL GENALT4 BUS AMPS

ELECTRICAL GENALT4 BUS VOLTAGE

ELECTRICAL HOT BATTERY BUS AMPS

ELECTRICAL HOT BATTERY BUS VOLTAGE

ELECTRICAL MAIN BUS AMPS

ELECTRICAL MAIN BUS VOLTAGE

ELECTRICAL MASTER BATTERY

ELECTRICAL OLD CHARGING AMPS

ELECTRICAL TOTAL LOAD AMPS

ELEVATOR DEFLECTION

ELEVATOR POSITION

ELEVATOR TRIM INDICATOR

ELEVATOR TRIM PCT

ELEVATOR TRIM POSITION

ELEVON1 DEFLECTION

ELEVON2 DEFLECTION

ELEVON3 DEFLECTION

ELEVON4 DEFLECTION

ELEVON5 DEFLECTION

ELEVON6 DEFLECTION

ELEVON7 DEFLECTION

ELEVON8 DEFLECTION

ENG1 ANTI ICE

ENG1 COMBUSTION

ENG1 CYLINDER HEAD TEMPERATURE

ENG1 ELECTRICAL LOAD

ENG1 EXHAUST GAS TEMPERATURE

ENG1 EXHAUST GAS TEMPERATURE GES

ENG1 FAILED

ENG1 FUEL FLOW BUG POSITION

ENG1 FUEL FLOW GPH

ENG1 FUEL FLOW PPH

ENG1 FUEL FLOW PPH SSL

ENG1 FUEL PRESSURE

ENG1 HYDRAULIC PRESSURE

ENG1 HYDRAULIC QUANTITY

ENG1 MANIFOLD PRESSURE

ENG1 MAX RPM

ENG1 N1 RPM

ENG1 N2 RPM

ENG1 OIL PRESSURE

ENG1 OIL QUANTITY

ENG1 OIL TEMPERATURE

ENG1 ON FIRE

ENG1 PRESSURE RATIO

ENG1 PRESSURE RATIO GES

ENG1 ROTOR RPM

ENG1 RPM SCALER

ENG1 TORQUE

ENG1 TORQUE PERCENT

ENG1 TRANSMISSION PRESSURE

ENG1 TRANSMISSION TEMPERATURE

ENG1 TURBINE TEMPERATURE

ENG1 VIBRATION

ENG2 ANTI ICE

ENG2 COMBUSTION

ENG2 CYLINDER HEAD TEMPERATURE

ENG2 ELECTRICAL LOAD

ENG2 EXHAUST GAS TEMPERATURE

ENG2 EXHAUST GAS TEMPERATURE GES

ENG2 FAILED

ENG2 FUEL FLOW BUG POSITION

ENG2 FUEL FLOW GPH

ENG2 FUEL FLOW PPH

ENG2 FUEL FLOW PPH SSL

ENG2 FUEL PRESSURE

ENG2 HYDRAULIC PRESSURE

ENG2 HYDRAULIC QUANTITY

ENG2 MANIFOLD PRESSURE

ENG2 MAX RPM

ENG2 N1 RPM

ENG2 N2 RPM

ENG2 OIL PRESSURE

ENG2 OIL QUANTITY

ENG2 OIL TEMPERATURE

ENG2 ON FIRE

ENG2 PRESSURE RATIO

ENG2 PRESSURE RATIO GES

ENG2 ROTOR RPM

ENG2 RPM SCALER

ENG2 TORQUE

ENG2 TORQUE PERCENT

ENG2 TRANSMISSION PRESSURE

ENG2 TRANSMISSION TEMPERATURE

ENG2 TURBINE TEMPERATURE

ENG2 VIBRATION

ENG3 ANTI ICE

ENG3 COMBUSTION

ENG3 CYLINDER HEAD TEMPERATURE

ENG3 ELECTRICAL LOAD

ENG3 EXHAUST GAS TEMPERATURE

ENG3 EXHAUST GAS TEMPERATURE GES

ENG3 FAILED

ENG3 FUEL FLOW BUG POSITION

ENG3 FUEL FLOW GPH

ENG3 FUEL FLOW PPH

ENG3 FUEL FLOW PPH SSL

ENG3 FUEL PRESSURE

ENG3 HYDRAULIC PRESSURE

ENG3 HYDRAULIC QUANTITY

ENG3 MANIFOLD PRESSURE

ENG3 MAX RPM

ENG3 N1 RPM

ENG3 N2 RPM

ENG3 OIL PRESSURE

ENG3 OIL QUANTITY

ENG3 OIL TEMPERATURE

ENG3 ON FIRE

ENG3 PRESSURE RATIO

ENG3 PRESSURE RATIO GES

ENG3 ROTOR RPM

ENG3 RPM SCALER

ENG3 TORQUE

ENG3 TORQUE PERCENT

ENG3 TRANSMISSION PRESSURE

ENG3 TRANSMISSION TEMPERATURE

ENG3 TURBINE TEMPERATURE

ENG3 VIBRATION

ENG4 ANTI ICE

ENG4 COMBUSTION

ENG4 CYLINDER HEAD TEMPERATURE

ENG4 ELECTRICAL LOAD

ENG4 EXHAUST GAS TEMPERATURE

ENG4 EXHAUST GAS TEMPERATURE GES

ENG4 FAILED

ENG4 FUEL FLOW BUG POSITION

ENG4 FUEL FLOW GPH

ENG4 FUEL FLOW PPH

ENG4 FUEL FLOW PPH SSL

ENG4 FUEL PRESSURE

ENG4 HYDRAULIC PRESSURE

ENG4 HYDRAULIC QUANTITY

ENG4 MANIFOLD PRESSURE

ENG4 MAX RPM

ENG4 N1 RPM

ENG4 N2 RPM

ENG4 OIL PRESSURE

ENG4 OIL QUANTITY

ENG4 OIL TEMPERATURE

ENG4 ON FIRE

ENG4 PRESSURE RATIO

ENG4 PRESSURE RATIO GES

ENG4 ROTOR RPM

ENG4 RPM SCALER

ENG4 TORQUE

ENG4 TORQUE PERCENT

ENG4 TRANSMISSION PRESSURE

ENG4 TRANSMISSION TEMPERATURE

ENG4 TURBINE TEMPERATURE

ENG4 VIBRATION

ENGINE CONTROL SELECT

ENGINE MIXURE AVAILABLE

ENGINE PRIMER

ENGINE TYPE

FLAPS AVAILABLE

FLAPS HANDLE INDEX

FLAPS HANDLE PERCENT

FLAPS NUM HANDLE POSITIONS

FOLDING WING LEFT PERCENT

FOLDING WING RIGHT PERCENT

FUEL CROSS FEED

FUEL LEFT CAPACITY

FUEL LEFT QUANTITY

FUEL PUMP

FUEL RIGHT CAPACITY

FUEL RIGHT QUANTITY

FUEL SELECTED QUANTITY

FUEL SELECTED QUANTITY PERCENT

FUEL SELECTED TRANSFER MODE

FUEL TANK CENTER CAPACITY

FUEL TANK CENTER LEVEL

FUEL TANK CENTER QUANTITY

FUEL TANK CENTER2 CAPACITY

FUEL TANK CENTER2 LEVEL

FUEL TANK CENTER2 QUANTITY

FUEL TANK CENTER3 CAPACITY

FUEL TANK CENTER3 LEVEL

FUEL TANK CENTER3 QUANTITY

FUEL TANK EXTERNAL1 CAPACITY

FUEL TANK EXTERNAL1 LEVEL

FUEL TANK EXTERNAL1 QUANTITY

FUEL TANK EXTERNAL2 CAPACITY

FUEL TANK EXTERNAL2 LEVEL

FUEL TANK EXTERNAL2 QUANTITY

FUEL TANK LEFT AUX CAPACITY

FUEL TANK LEFT AUX LEVEL

FUEL TANK LEFT AUX QUANTITY

FUEL TANK LEFT MAIN CAPACITY

FUEL TANK LEFT MAIN LEVEL

FUEL TANK LEFT MAIN QUANTITY

FUEL TANK LEFT TIP CAPACITY

FUEL TANK LEFT TIP LEVEL

FUEL TANK LEFT TIP QUANTITY

FUEL TANK RIGHT AUX CAPACITY

FUEL TANK RIGHT AUX LEVEL

FUEL TANK RIGHT AUX QUANTITY

FUEL TANK RIGHT MAIN CAPACITY

FUEL TANK RIGHT MAIN LEVEL

FUEL TANK RIGHT MAIN QUANTITY

FUEL TANK RIGHT TIP CAPACITY

FUEL TANK RIGHT TIP LEVEL

FUEL TANK RIGHT TIP QUANTITY

FUEL TANK SELECTOR 1

FUEL TANK SELECTOR 2

FUEL TOTAL CAPACITY

FUEL TOTAL QUANTITY

FUEL TOTAL QUANTITY WEIGHT

FUEL WEIGHT PER GALLON

G FORCE

GEAR AUX POSITION

GEAR AUX STEER ANGLE

GEAR AUX STEER ANGLE PCT

GEAR CENTER POSITION

GEAR CENTER STEER ANGLE

GEAR CENTER STEER ANGLE PCT

GEAR HANDLE POSITION

GEAR LEFT POSITION

GEAR LEFT STEER ANGLE

GEAR LEFT STEER ANGLE PCT

GEAR RIGHT POSITION

GEAR RIGHT STEER ANGLE

GEAR RIGHT STEER ANGLE PCT

GEAR TAIL POSITION

GEAR TOTAL PCT EXTENDED

GENERAL ENG1 ANTI ICE POSITION

GENERAL ENG1 COMBUSTION

GENERAL ENG1 COMBUSTION SOUND PERCENT

GENERAL ENG1 DAMAGE PERCENT

GENERAL ENG1 EXHAUST GAS TEMPERATURE

GENERAL ENG1 FAILED

GENERAL ENG1 FUEL PRESSURE

GENERAL ENG1 FUEL PUMP ON

GENERAL ENG1 FUEL PUMP SWITCH

GENERAL ENG1 FUEL VALVE

GENERAL ENG1 GENERATOR ACTIVE

GENERAL ENG1 GENERATOR SWITCH

GENERAL ENG1 MASTER ALTERNATOR

GENERAL ENG1 MIXTURE LEVER POSITION

GENERAL ENG1 OIL LEAKED PERCENT

GENERAL ENG1 OIL PRESSURE

GENERAL ENG1 OIL TEMPERATURE

GENERAL ENG1 PROPELLER LEVER POSITION

GENERAL ENG1 RPM

GENERAL ENG1 STARTER

GENERAL ENG1 THROTTLE LEVER POSITION

GENERAL ENG2 ANTI ICE POSITION

GENERAL ENG2 COMBUSTION

GENERAL ENG2 COMBUSTION SOUND PERCENT

GENERAL ENG2 DAMAGE PERCENT

GENERAL ENG2 EXHAUST GAS TEMPERATURE

GENERAL ENG2 FAILED

GENERAL ENG2 FUEL PRESSURE

GENERAL ENG2 FUEL PUMP ON

GENERAL ENG2 FUEL PUMP SWITCH

GENERAL ENG2 FUEL VALVE

GENERAL ENG2 GENERATOR ACTIVE

GENERAL ENG2 GENERATOR SWITCH

GENERAL ENG2 MASTER ALTERNATOR

GENERAL ENG2 MIXTURE LEVER POSITION

GENERAL ENG2 OIL LEAKED PERCENT

GENERAL ENG2 OIL PRESSURE

GENERAL ENG2 OIL TEMPERATURE

GENERAL ENG2 PROPELLER LEVER POSITION

GENERAL ENG2 RPM

GENERAL ENG2 STARTER

GENERAL ENG2 THROTTLE LEVER POSITION

GENERAL ENG3 ANTI ICE POSITION

GENERAL ENG3 COMBUSTION

GENERAL ENG3 COMBUSTION SOUND PERCENT

GENERAL ENG3 DAMAGE PERCENT

GENERAL ENG3 EXHAUST GAS TEMPERATURE

GENERAL ENG3 FAILED

GENERAL ENG3 FUEL PRESSURE

GENERAL ENG3 FUEL PUMP ON

GENERAL ENG3 FUEL PUMP SWITCH

GENERAL ENG3 FUEL VALVE

GENERAL ENG3 GENERATOR ACTIVE

GENERAL ENG3 GENERATOR SWITCH

GENERAL ENG3 MASTER ALTERNATOR

GENERAL ENG3 MIXTURE LEVER POSITION

GENERAL ENG3 OIL LEAKED PERCENT

GENERAL ENG3 OIL PRESSURE

GENERAL ENG3 OIL TEMPERATURE

GENERAL ENG3 PROPELLER LEVER POSITION

GENERAL ENG3 RPM

GENERAL ENG3 STARTER

GENERAL ENG3 THROTTLE LEVER POSITION

GENERAL ENG4 ANTI ICE POSITION

GENERAL ENG4 COMBUSTION

GENERAL ENG4 COMBUSTION SOUND PERCENT

GENERAL ENG4 DAMAGE PERCENT

GENERAL ENG4 EXHAUST GAS TEMPERATURE

GENERAL ENG4 FAILED

GENERAL ENG4 FUEL PRESSURE

GENERAL ENG4 FUEL PUMP ON

GENERAL ENG4 FUEL PUMP SWITCH

GENERAL ENG4 FUEL VALVE

GENERAL ENG4 GENERATOR ACTIVE

GENERAL ENG4 GENERATOR SWITCH

GENERAL ENG4 MASTER ALTERNATOR

GENERAL ENG4 MIXTURE LEVER POSITION

GENERAL ENG4 OIL LEAKED PERCENT

GENERAL ENG4 OIL PRESSURE

GENERAL ENG4 OIL TEMPERATURE

GENERAL ENG4 PROPELLER LEVER POSITION

GENERAL ENG4 RPM

GENERAL ENG4 STARTER

GENERAL ENG4 THROTTLE LEVER POSITION

GPS DRIVES NAV1

GROUND ALTITUDE

GROUND VELOCITY

GUN AMMO

GYRO DRIFT ERROR

HEADING INDICATOR 0

HEADING INDICATOR 1

HEADING INDICATOR 2

HEADING INDICATOR 3

HSI BEARING

HSI BEARING VALID

HSI CDI NEEDLE

HSI CDI NEEDLE VALID

HSI DISTANCE

HSI GSI NEEDLE

HSI GSI NEEDLE VALID

HSI HAS LOCALIZER

HSI SPEED

HSI STATION IDENT

HSI TF FLAGS

HYDRAULIC SYSTEM INTEGRITY

HYDRAULIC1 PRESSURE

HYDRAULIC1 RESERVOIR PERCENT

HYDRAULIC2 PRESSURE

HYDRAULIC2 RESERVOIR PERCENT

HYDRAULIC3 PRESSURE

HYDRAULIC3 RESERVOIR PERCENT

HYDRAULIC4 PRESSURE

HYDRAULIC4 RESERVOIR PERCENT

INCIDENCE ALPHA

INCIDENCE BETA

INDICATED ALTITUDE

INNER MARKER

INSTRUMENTS AVAILABLE

IS GEAR FLOATS

IS GEAR RETRACTABLE

IS GEAR SKIDS

IS GEAR SKIS

IS GEAR WHEELS

IS TAIL DRAGGER

IS USER SIM

KOHLSMAN SETTING HG

KOHLSMAN SETTING MB

LEADING EDGE FLAPS0 LEFT ANGLE

LEADING EDGE FLAPS0 LEFT PERCENT

LEADING EDGE FLAPS0 RIGHT ANGLE

LEADING EDGE FLAPS0 RIGHT PERCENT

LEADING EDGE FLAPS1 LEFT ANGLE

LEADING EDGE FLAPS1 LEFT PERCENT

LEADING EDGE FLAPS1 RIGHT ANGLE

LEADING EDGE FLAPS1 RIGHT PERCENT

LEFT WHEEL RPM

LIGHT BEACON

LIGHT LANDING

LIGHT LOGO

LIGHT NAV

LIGHT PANEL

LIGHT RECOGNITION

LIGHT STATES

LIGHT STROBE

LIGHT TAXI

LIGHT WING

MACH MAX OPERATE

MAGVAR

MARKER BEACON STATE

MARKER SOUND

MAX G FORCE

MIDDLE MARKER

MIN DRAG VELOCITY

MIN G FORCE

NAV1 ACTIVE FREQUENCY

NAV1 AVAILABLE

NAV1 BACK COURSE FLAGS

NAV1 CDI

NAV1 CODES

NAV1 DME

NAV1 DME LATLONALT

NAV1 DMESPEED

NAV1 GLIDE SLOPE

NAV1 GLIDE SLOPE ERROR

NAV1 GS FLAG

NAV1 GS LATLONALT

NAV1 GSI

NAV1 HAS DME

NAV1 HAS GLIDE SLOPE

NAV1 HAS LOCALIZER

NAV1 HAS NAV

NAV1 IDENT

NAV1 LOCALIZER

NAV1 MAGVAR

NAV1 NAME

NAV1 OBS

NAV1 RADIAL

NAV1 RADIAL ERROR

NAV1 SIGNAL

NAV1 SOUND

NAV1 STANDBY FREQUENCY

NAV1 TOFROM

NAV1 VOR LATLONALT

NAV2 ACTIVE FREQUENCY

NAV2 AVAILABLE

NAV2 BACK COURSE FLAGS

NAV2 CDI

NAV2 CODES

NAV2 DME

NAV2 DME LATLONALT

NAV2 DMESPEED

NAV2 GLIDE SLOPE

NAV2 GLIDE SLOPE ERROR

NAV2 GS FLAG

NAV2 GS LATLONALT

NAV2 GSI

NAV2 HAS DME

NAV2 HAS GLIDE SLOPE

NAV2 HAS LOCALIZER

NAV2 HAS NAV

NAV2 IDENT

NAV2 LOCALIZER

NAV2 MAGVAR

NAV2 NAME

NAV2 OBS

NAV2 RADIAL

NAV2 RADIAL ERROR

NAV2 SIGNAL

NAV2 SOUND

NAV2 STANDBY FREQUENCY

NAV2 TOFROM

NAV2 VOR LATLONALT

NUMBER OF ENGINES

OIL AMOUNT

OLD ENG1 STARTER

OLD ENG2 STARTER

OLD ENG3 STARTER

OLD ENG4 STARTER

OUTER MARKER

OVERSPEED WARNING

PANEL ANTI ICE SWITCH

PANEL AUTO FEATHER SWITCH

PARTIAL PANEL ADF1

PARTIAL PANEL AIRSPEED

PARTIAL PANEL ALTIMETER

PARTIAL PANEL ATTITUDE

PARTIAL PANEL AVIONICS

PARTIAL PANEL COMM1

PARTIAL PANEL COMM2

PARTIAL PANEL COMPASS

PARTIAL PANEL ELECTRICAL

PARTIAL PANEL ENGINE

PARTIAL PANEL FUEL INDICATOR

PARTIAL PANEL HEADING

PARTIAL PANEL NAV1

PARTIAL PANEL NAV2

PARTIAL PANEL PITOT

PARTIAL PANEL TRANSPONDER1

PARTIAL PANEL TURN COORDINATOR

PARTIAL PANEL VACUUM

PARTIAL PANEL VERTICAL VELOCITY

PITOT HEAT

PLANE ALTITUDE

PLANE BANK DEGREES

PLANE HEADING DEGREES GYRO

PLANE HEADING DEGREES MAGNETIC

PLANE HEADING DEGREES TRUE

PLANE LATITUDE

PLANE LONGITUDE

PLANE PITCH DEGREES

PRESSURE ALTITUDE

PROP DEICE SWITCH

PROP SYNC ACTIVE

PROP TYPE AVAILABLE

PROP1 AUTO FEATHER ARMED

PROP1 BETA

PROP1 FEATHERED

PROP1 FEATHERING INHIBIT

PROP1 MAX RPM PERCENT

PROP1 RPM

PROP1 SYNC DELTA LEVER

PROP1 THRUST

PROP2 AUTO FEATHER ARMED

PROP2 BETA

PROP2 FEATHERED

PROP2 FEATHERING INHIBIT

PROP2 MAX RPM PERCENT

PROP2 RPM

PROP2 SYNC DELTA LEVER

PROP2 THRUST

PROP3 AUTO FEATHER ARMED

PROP3 BETA

PROP3 FEATHERED

PROP3 FEATHERING INHIBIT

PROP3 MAX RPM PERCENT

PROP3 RPM

PROP3 SYNC DELTA LEVER

PROP3 THRUST

PROP4 AUTO FEATHER ARMED

PROP4 BETA

PROP4 FEATHERED

PROP4 FEATHERING INHIBIT

PROP4 MAX RPM PERCENT

PROP4 RPM

PROP4 SYNC DELTA LEVER

PROP4 THRUST

PROPELLER ADVANCED SELECTION

PUSHBACK STATE

RAD INS SWITCH

RADIO HEIGHT

REALISM

RECIP ENG1 ALTERNATE AIR POSITION

RECIP ENG1 BRAKE POWER

RECIP ENG1 COOLANT RESERVOIR PERCENT

RECIP ENG1 COWL FLAP POSITION

RECIP ENG1 CYLINDER HEAD TEMPERATURE

RECIP ENG1 EMERGENCY BOOST ACTIVE

RECIP ENG1 EMERGENCY BOOST ELAPSED TIME

RECIP ENG1 FUEL AVAILABLE

RECIP ENG1 FUEL FLOW

RECIP ENG1 FUEL NUMBER TANKS USED

RECIP ENG1 FUEL TANK SELECTOR

RECIP ENG1 FUEL TANKS USED

RECIP ENG1 LEFT MAGNETO

RECIP ENG1 MANIFOLD PRESSURE

RECIP ENG1 PRIMER

RECIP ENG1 RADIATOR TEMPERATURE

RECIP ENG1 RIGHT MAGNETO

RECIP ENG1 STARTER TORQUE

RECIP ENG1 TURBINE INLET TEMPERATURE

RECIP ENG1 TURBOCHARGER FAILED

RECIP ENG1 WASTEGATE POSITION

RECIP ENG2 ALTERNATE AIR POSITION

RECIP ENG2 BRAKE POWER

RECIP ENG2 COOLANT RESERVOIR PERCENT

RECIP ENG2 COWL FLAP POSITION

RECIP ENG2 CYLINDER HEAD TEMPERATURE

RECIP ENG2 EMERGENCY BOOST ACTIVE

RECIP ENG2 EMERGENCY BOOST ELAPSED TIME

RECIP ENG2 FUEL AVAILABLE

RECIP ENG2 FUEL FLOW

RECIP ENG2 FUEL NUMBER TANKS USED

RECIP ENG2 FUEL TANK SELECTOR

RECIP ENG2 FUEL TANKS USED

RECIP ENG2 LEFT MAGNETO

RECIP ENG2 MANIFOLD PRESSURE

RECIP ENG2 PRIMER

RECIP ENG2 RADIATOR TEMPERATURE

RECIP ENG2 RIGHT MAGNETO

RECIP ENG2 STARTER TORQUE

RECIP ENG2 TURBINE INLET TEMPERATURE

RECIP ENG2 TURBOCHARGER FAILED

RECIP ENG2 WASTEGATE POSITION

RECIP ENG3 ALTERNATE AIR POSITION

RECIP ENG3 BRAKE POWER

RECIP ENG3 COOLANT RESERVOIR PERCENT

RECIP ENG3 COWL FLAP POSITION

RECIP ENG3 CYLINDER HEAD TEMPERATURE

RECIP ENG3 EMERGENCY BOOST ACTIVE

RECIP ENG3 EMERGENCY BOOST ELAPSED TIME

RECIP ENG3 FUEL AVAILABLE

RECIP ENG3 FUEL FLOW

RECIP ENG3 FUEL NUMBER TANKS USED

RECIP ENG3 FUEL TANK SELECTOR

RECIP ENG3 FUEL TANKS USED

RECIP ENG3 LEFT MAGNETO

RECIP ENG3 MANIFOLD PRESSURE

RECIP ENG3 PRIMER

RECIP ENG3 RADIATOR TEMPERATURE

RECIP ENG3 RIGHT MAGNETO

RECIP ENG3 STARTER TORQUE

RECIP ENG3 TURBINE INLET TEMPERATURE

RECIP ENG3 TURBOCHARGER FAILED

RECIP ENG3 WASTEGATE POSITION

RECIP ENG4 ALTERNATE AIR POSITION

RECIP ENG4 BRAKE POWER

RECIP ENG4 COOLANT RESERVOIR PERCENT

RECIP ENG4 COWL FLAP POSITION

RECIP ENG4 CYLINDER HEAD TEMPERATURE

RECIP ENG4 EMERGENCY BOOST ACTIVE

RECIP ENG4 EMERGENCY BOOST ELAPSED TIME

RECIP ENG4 FUEL AVAILABLE

RECIP ENG4 FUEL FLOW

RECIP ENG4 FUEL NUMBER TANKS USED

RECIP ENG4 FUEL TANK SELECTOR

RECIP ENG4 FUEL TANKS USED

RECIP ENG4 LEFT MAGNETO

RECIP ENG4 MANIFOLD PRESSURE

RECIP ENG4 PRIMER

RECIP ENG4 RADIATOR TEMPERATURE

RECIP ENG4 RIGHT MAGNETO

RECIP ENG4 STARTER TORQUE

RECIP ENG4 TURBINE INLET TEMPERATURE

RECIP ENG4 TURBOCHARGER FAILED

RECIP ENG4 WASTEGATE POSITION

RIGHT WHEEL RPM

ROCKET AMMO

RUDDER DEFLECTION

RUDDER PEDAL INDICATOR

RUDDER PEDAL POSITION

RUDDER POSITION

RUDDER TRIM

RUDDER TRIM PCT

SEA LEVEL PRESSURE

SIM DISABLED

SIM ON GROUND

SMOKE ENABLE

SMOKESYSTEM AVAILABLE

SPOILER AVAILABLE

SPOILERS ARMED

SPOILERS HANDLE POSITION

SPOILERS LEFT POSITION

SPOILERS RIGHT POSITION

STALL HORN AVAILABLE

STALL WARNING

STANDARD ATM TEMPERATURE

STROBE FLASH

STROBES AVAILABLE

STRUCT DAMAGEVISIBLE

STRUCT LATLONALT

STRUCT LATLONALTPBH

STRUCT PBH32

STRUCT WORLDVELOCITY

STRUCTURAL DEICE SWITCH

SUCTION PRESSURE

SURFACE CONDITION

SURFACE TYPE

SYSTEMS AVAILABLE

TAILHOOK POSITION

THROTTLE LOWER LIMIT

TITLE

TOE BRAKES AVAILABLE

TOTAL AIR TEMPERATURE

TOTAL WEIGHT

TRAILING EDGE FLAPS0 LEFT ANGLE

TRAILING EDGE FLAPS0 LEFT PERCENT

TRAILING EDGE FLAPS0 RIGHT ANGLE

TRAILING EDGE FLAPS0 RIGHT PERCENT

TRAILING EDGE FLAPS1 LEFT ANGLE

TRAILING EDGE FLAPS1 LEFT PERCENT

TRAILING EDGE FLAPS1 RIGHT ANGLE

TRAILING EDGE FLAPS1 RIGHT PERCENT

TRANSPONDER1 CODE

TURB ENG1 AFTERBURNER

TURB ENG1 BLEED AIR

TURB ENG1 CORRECTED FF

TURB ENG1 CORRECTED N1

TURB ENG1 CORRECTED N2

TURB ENG1 FUEL AVAILABLE

TURB ENG1 FUEL FLOW PPH

TURB ENG1 ITT

TURB ENG1 JET THRUST

TURB ENG1 MAX TORQUE PERCENT

TURB ENG1 N1

TURB ENG1 N2

TURB ENG1 NUM TANKS USED

TURB ENG1 PRESSURE RATIO

TURB ENG1 PRIMARY NOZZLE PERCENT

TURB ENG1 REVERSE NOZZLE PERCENT

TURB ENG1 TANK SELECTOR

TURB ENG1 TANKS USED

TURB ENG1 VIBRATION

TURB ENG2 AFTERBURNER

TURB ENG2 BLEED AIR

TURB ENG2 CORRECTED FF

TURB ENG2 CORRECTED N1

TURB ENG2 CORRECTED N2

TURB ENG2 FUEL AVAILABLE

TURB ENG2 FUEL FLOW PPH

TURB ENG2 ITT

TURB ENG2 JET THRUST

TURB ENG2 MAX TORQUE PERCENT

TURB ENG2 N1

TURB ENG2 N2

TURB ENG2 NUM TANKS USED

TURB ENG2 PRESSURE RATIO

TURB ENG2 PRIMARY NOZZLE PERCENT

TURB ENG2 REVERSE NOZZLE PERCENT

TURB ENG2 TANK SELECTOR

TURB ENG2 TANKS USED

TURB ENG2 VIBRATION

TURB ENG3 AFTERBURNER

TURB ENG3 BLEED AIR

TURB ENG3 CORRECTED FF

TURB ENG3 CORRECTED N1

TURB ENG3 CORRECTED N2

TURB ENG3 FUEL AVAILABLE

TURB ENG3 FUEL FLOW PPH

TURB ENG3 ITT

TURB ENG3 JET THRUST

TURB ENG3 MAX TORQUE PERCENT

TURB ENG3 N1

TURB ENG3 N2

TURB ENG3 NUM TANKS USED

TURB ENG3 PRESSURE RATIO

TURB ENG3 PRIMARY NOZZLE PERCENT

TURB ENG3 REVERSE NOZZLE PERCENT

TURB ENG3 TANK SELECTOR

TURB ENG3 TANKS USED

TURB ENG3 VIBRATION

TURB ENG4 AFTERBURNER

TURB ENG4 BLEED AIR

TURB ENG4 CORRECTED FF

TURB ENG4 CORRECTED N1

TURB ENG4 CORRECTED N2

TURB ENG4 FUEL AVAILABLE

TURB ENG4 FUEL FLOW PPH

TURB ENG4 ITT

TURB ENG4 JET THRUST

TURB ENG4 MAX TORQUE PERCENT

TURB ENG4 N1

TURB ENG4 N2

TURB ENG4 NUM TANKS USED

TURB ENG4 PRESSURE RATIO

TURB ENG4 PRIMARY NOZZLE PERCENT

TURB ENG4 REVERSE NOZZLE PERCENT

TURB ENG4 TANK SELECTOR

TURB ENG4 TANKS USED

TURB ENG4 VIBRATION

TURN COORDINATOR BALL

TYPICAL DESCENT RATE

VELOCITY BODY X

VELOCITY BODY Y

VELOCITY BODY Z

VELOCITY WORLD X

VELOCITY WORLD Y

VELOCITY WORLD Z

VERTICAL SPEED

VISUAL MODEL RADIUS

WARNING FUEL

WARNING FUEL LEFT

WARNING FUEL RIGHT

WARNING LOW HEIGHT

WARNING OIL PRESSURE

WARNING VACUUM

WARNING VACUUM LEFT

WARNING VACUUM RIGHT

WARNING VOLTAGE

WATER LEFT RUDDER EXTENDED

WATER LEFT RUDDER STEER ANGLE

WATER LEFT RUDDER STEER ANGLE PCT

WATER RIGHT RUDDER EXTENDED

WATER RIGHT RUDDER STEER ANGLE

WATER RIGHT RUDDER STEER ANGLE PCT

WATER RUDDER HANDLE POSITION

WISKEY COMPASS INDICATION DEGREES

YOKE X INIDICATOR

YOKE X POSITION

YOKE Y INDICATOR

YOKE Y POSITION

LC

2004-03-27T17:36:00