• 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.

MSFS [GUIDE] Converting Aircraft from FSX to MSFS

Redistributing payware aircraft is reserved as the sole right of the original developers. So too, redistribution of freeware aircraft is similarly reserved by the original developers without prior consent. The first is illegal and falls under piracy, the second is showing respect for other creators.

Always remember;

Rule #1: Don’t be a D*&k. Be a good human and amazing things can happen!

Preamble
First of all, this is not a quick process and there are many things that may not work and some things that definitely do not work with no alternative but to create a fully native add-on. This is not surprising when you consider that FSX was released in 2006 and MSFS in 2020. The fact we can even get what we have is incredible and I’m sure that the Asobo team worked hard to give us this much.

I want to be clear also; this really is not something that should be continued long term and Asobo may drop support for the MDL format at any time, so a full native conversion should be considered the primary goal with this being only a temporary stepping stone to that final goal.

I’ll quickly outline the process first and then break that down to more detail further on. Essentially the process is:

  1. Use PlaneConverter to create your initial package for your FSX aircraft
  2. Remove all DLL and GAU files from the panel folder
  3. Ensure all textures are either DDS or 32-bit BMP. Preference is for DDS.
  4. Transfer information from original aircraft.cfg and AIR files into separate CFGs
  5. Use PlaneConverter to update the package when finished
 
Use PlaneConverter
MSFS uses a new way of distributing add-ons called ‘packages’ which have a couple of essential JSON files to ensure the integrity of the package. In particular the layout.json file contains a list of every single file in the package along with the file size and date creation timestamp. To say that it would be tedious to create this manually is probably the reason why klasbj created their utility PlaneConverter.

But where’s the EXE?

In the author's own words (https://forums.flightsimulator.com/t/fsx-import-showcase/165910/10)

It’s just the source code, you would have to build it yourself. It’s not currently in a state where I would be comfortable releasing a built version. It moves and deletes things on the file system, and I can’t guarantee that it won’t delete your entire C: drive or somehow manage to burn down your house :slight_smile:

There’s a decent youtube video stepping you through this process if you are unfamiliar:
Thanks to @cwburnett#5199 on the Discord channel for creating that video.

OR Use Python Converter
Thanks to odourboy from the Sim-Outhouse:
Originally Posted by odourboy
build.py is on github as part of the developer files from the A32NX project, here:

https://github.com/wpine215/msfs-a320neo/tree/master/A32NX

Just install Python 3.8.x for W10 on your pc if you don't have it..
https://www.python.org/ftp/python/3.8.5/python-3.8.5-amd64.exe

Then drop the build.py script in the top folder of you add-on (where your manifest.json is) and click it To run it. Drops A layout.json in the same folder. Done.

This may be an easier route for some folks.

Removing DLLs
DLL and GAU gauges are no longer available to us in MSFS. Leaving these in your panel folders can cause CTD and since they’re not used you may as well remove them.
 
Last edited:
Converting Textures
There are a few tools you can use for this:


DXTBMP: https://www.mwgfx.co.uk/programs/dxtbmp.htm
Always vertically flip the dds file

Or my preferred tool:
ModelConverterX: https://www.scenerydesign.org/development-releases/
-WgAEBmndxsQ7Loyb1x984Necd5zMHR9GNOzrGAXQ9IL-0mR1KyHdO5YgskuvDaOVYPsN0GQDo74Cx2EICEZp-6qdLOQ7jFSRPnvekreStSWHmRAUM2ySIZRjqnTrD1D1z0-4gKJ

From the Special tools menu, select Texture Converter.
G9lP8JcMTzuk1UXeefd_Ts80vtuFVJI1KSGLDJrPgdKvFlUhOyjICO-rczM8okWg8ShnEULX2bI0FwZ4hLEXiXWzzz6clnqxDALmw2-glQMCYc0vPLCVuI93V5eS41qxb1G9V4Ca

You can drop your textures on to this window from Explorer or use the Load (folder icon)menu to select. Leave it set to DDS and click the Save button
p1_LzZiM2ydesoLajchqKRwZ86Lr3tge-vdjSRqEINfoy_hZNIof29hWFag7I8LONe89pYsZZfT5A42r3GGKu6tgtVbHoDaCPU39JEOUb_Pe_HCX_kQWONEzE7_8pfxbectHzLqa


This will automatically vertically flip the image as is required for DDS in FSX.
 
Transfer Data to CFG
Why do this? This ensures you can actually fly the aircraft!

Unfortunately this is perhaps the longest and most detail oriented part of the conversion. In this we will make a backup of our original aircraft.cfg, copy in an appropriate set of CFGs from an existing native aircraft and then replace the values in those files with data from our original CFG.

You will want a good text/code editor like;
Both are free and excellent code wranglers with good search and replace capability (required).

Choosing a Substitute
First of all we need to backup our existing aircraft.cfg (maybe to a new folder or just rename it old_aircraft.cfg) and copy across a set of existing NEW cfgs from a similar aircraft already in MSFS. For converting the C-47 I chose the ‘generic piston multiengines’ found here:

\Official\OneStore\asobo-aircraft-generic-piston-multiengines\SimObjects\Airplanes\Asobo_Generic_Piston_MultiEngines


aircraft.cfg

This table shows each new CFG file and which sections from the FSX aircraft.cfg are required.

AsoboFSX
ai.cfg
aircraft.cfg[GENERAL]
[EFFECTS]
[EXITS]
[FLTSIM.n]
cameras.cfg[VIEWS]
[CAMERADEFINITION.n] - There are some changes in the value of the field here that I will go into in a later section.
cockpit.cfg[ATTITUDE_INDICATORS]
[TURN_INDICATORS]
[DIRECTION_INDICATORS]
[AIRSPEED_INDICATORS]
engines.cfg[GENERALENGINEDATA]
[PISTON_ENGINE]
[PROPELLER]
flight_model.cfg[WEIGHT_AND_BALANCE]
[CONTACT_POINTS]
[FUEL]
[AIRPLANE_GEOMETRY]
[AERODYNAMICS]
[FLIGHT_TUNING]
[REFERENCE SPEEDS]
[FLAPS.n]
gameplay.cfg[KEYBOARD_RESPONSE]
[FORCEFEEDBACK]
systems.cfg[LIGHTS]
[BRAKES]
[ELECTRICAL]
[PNEUMATIC_SYSTEM]
[PITOT_STATIC]
[VACUUM_SYSTEM]
[STALL_WARNING]
[DEICE_SYSTEM]
[RADIOS]
[AUTOPILOT]
 
<<aircraftname>>.air

Now we have the updated CFG files we need to extract data from the AIR file, reformat and update our new CFGs with. For this we will need Aircraft Airfile Manager or any other tool you might care to use that can read and export AIR file data. I will be using AAM which can be found here:
https://drive.google.com/file/d/1OA3mMAHAejFgD4uQKtG7FtxHakyi5zh-/view?usp=sharing
The author’s original site is no longer available and so I am providing a link to a copy I have. This software is freeware.

Once setup, select the aircraft from the selection window:
rgPXi6PNCZy87wRtCaxjRY0uzHkHamStvc7TRMnVxmC4t1f75DzyPINZ3WlIT3Ojg7DiF6fciMVfRs1vyxL2LhPUZky_w6_lxc14Fi-qSGImJIWa6aURp5CXXvgU68kFg1EaV102

Then click on the .air file tab
gQyh_kjSMufXNkzmw-CMMM67rj0SkutS_OwXrcSZnMZxUl-cGuUgGZ_uDcqDrd_RM6_slor37Zr3LbF1EL7mQFs53LvNtHtR756CkXIGfK5FGmEtJ3KraiiGXwJv9lBjk7xs_rtM

The Manfred Jahn C-47 is a wonderful AIR file as it only has what is absolutely needed. Some air files have had a very long life and may contain data that was used in prior flight sims.

I have already started the process of creating a Master List of table/record entries and their corresponding variable names here: https://docs.google.com/spreadsheets/d/1ZcP3mFtIKMlOi479fb-lu-jN_ZAQhiI32yOJO-aL3SA/edit?usp=sharing
Please feel free to add additional table and record numbers and their corresponding variables.

REC entries like 516 contain single values for a couple of different variables and can be easily edited into the CFG directly.

TBLDB entries like 511 contain a 1D or 2D table that we need to export and modify before adding to our CFG. Lets take a look at 511 which is the prop_efficiency_table variable in the engines.cfg file.

j9Y4x_qO5SCszdiFvvPueZex6TttVkP9g5kf5_Tdg5-PqT6qpgfZeIdWPA_nhkyyD9yOHcfKpEpDvo-HFuQS_JDhyr7JnUfhvLcWqO-2kCoZUvz072DICb9Zl_RK0BWc3-oSPLWR

Selecting the table we can see down the bottom right buttons to Export Table and Import Table. In this case we want to Export.

mhBXIxwUgmyY0ikuPMxRY_GRzCct_tGm1gvRmL50H8SzBh2LXLXNnjPn7t8j5RGDMoBZl97dndIjnQCYj1GDKUPyIMvOochqJrURfCuuW-7XRnBzs6jDQUFSNk1TNAHt3iHIl1UV
We’re then given a file dialog asking where we would like to save this. Go ahead and click save to accept the default file name and directory (same as your AIR file).

Now open this new file:
ZxluHmAmLrF7hL5BUcIaCXdN7iTJsicdVJmxldlmxiX-o0XZ7AmDtaQTw6d-En9cfjfq2TRELkGyA82OSBPRmLAmKcw9AYLbX2oz4YnENoHUhflpJ7slBt9LIekvJic0HbQ5TcPk

This is a tab separated file with a header and empty last row. First we need to remove row 1 (header) and row 10 (empty)
8WGuDZvEaK4j3JZDo8G5UJ9VAABdFDam0tb6druGyhK32XCQDUmAoWaxvrkTeEqpm8pYZaIC4WyOPMxb2Q-zvWCaArVYfQvxFTcs_RENAWF5oP_jtpgCWM2OzGufHXnrxiWrdf6C

Which leaves us with 8 rows of data. Using the search and replace function (CTRL+H) we need to:
  • Replace all tabs with colon
    8coJnuzdoA9-HlmpgvRtV95ehK42PY7Kwgy85xi-29j_3PazAF5TrRvMuDFFiQ_yFiDvTLKH-PvtxDtM5p3SL_7k8MpWwufdro3ch-1R2a8iEEXMTSDVNxpT9HSn1I8QmTNF50PC
  • Replace all line breaks with commas
    svkRHvDc0q4FuRQWfT-kF89AChn_5ixKyTYwcYxhccj-zhNO1zb72kLPUbitNPTOv981H5kr_Pq6TN8Zc-fRuPYhyzcDqlxMrRLhrSxXaK2jpIKAKDXK8FjJohJmu5E7crA5oQ8I
To leave us with a single line of data:
9gnBKrFwbxZH3QpKp9I9um6NjSCuQLQtYALiliqviFsmgiFf8ouqlypJs6FYU6q22eMl6xpIKU7ycdrFgmzBZz3T2A9vvWNPIfCGIDmSL7eLaNMEQ7jcVWD4xarq8faq3-9o4I0I

Open the engines.cfg file and search for “prop_efficiency_table” (we no this be referring back to the master list linked above :D )
5mUlvVz-xb_6bF0P0Inet9Pxr_FmVAWHvWonkDK38fd8OSyvdwBHou0yVY1ELdPNeyV4uA0nV5ZaRdSIez7ETggEZj1tXG4pEk0GfxH1ZNkIQfeIoWLkpxFlCaKPUvmkQ2XvTuBQ

You can see that there is already an entry there, we can either replace that or comment it out and add our data. Go back to our table that we edited, copy the data and update your engines.cfg file:
OsgjhT6WZGaeu_4ZOEw2aG0URI1MXcx43_I3Xm7BFJzUXLVgQvRBy_zPP3dAQiQyAXJfaD2fHPR3inHBWqaw8Wh4G3DlOINFTiXmXF6NpMRd6fEHQ5Z_ScN1GNiH_ZWsc9yzxND8

In this instance you can see I chose to comment out the previous entry with a semicolon and add my new entry. I do this so that I know which fields I’ve already updated and which are still outstanding.

For each TBLDB and REC in the AIR file, refer to the master list and the above process to update all of your records. Once you have completed this process, you can safely delete your AIR file (or move it somewhere safe outside of your package).
 
Where to now?
Well after that long process you should now have a somewhat reasonable aircraft in MSFS. There may or may not be things that don’t work and cannot be made to work, but you’ve also just learned a lot more about aircraft development than you did before! So you can now start to apply that knowledge to creating your own fabulous aircraft for this wonderful new sim.

Download the MSFS SDK and go through the documentation and tutorials. Dig into all of the aircraft and example files. Really get to know the simulator you use and how to make the most out of it!


Acknowledgements:
I would like to thank the fantastic community at both FSDeveloper.com and MFS SDK Discord. IRIS Simulations for encouraging me in my developer growth and the Flight Simulation community for creating wonderful things.
 
Known Issues
SeeRyFly 08/27/2020
- 2D gauges will not be displayed by the sim. Only 3D gauges (coded directly into the model) will load. It is possible that invisible 2D gauges still run, but unconfirmed.
- Jet engines may run, but they do not behave properly.
- Sounds will loop continuously once triggered, especially gear and flap sound files
- Some of the external view gauges may not be shown.
- Certain animations such as doors, tailhooks, and wing fold are not supported by the new sim
-Afterburner is not supported, set the value to zero

Common Problems
SeeRyFly 08/27/2020
If your aircraft doesn't appear in the game menu at all:
  • Double check your package file structure. The layout.json needs to list all of the files in your package. The manifest.json needs to have the correct dependencies and required version info. Be very careful - one wrong character can ruin the entire package.
  • Check for aliases in the model.cfg, panel.cfg and/or sound.cfg of your aircraft. Aircraft with an "alias=" entry will not be loaded by the sim. You need to replace the appropriate folder with a full panel and/or sound folder, or include the referenced aircraft folder in your package.

If your aircraft is selectable but looks invisible in the hangar or in the game:
  • Make sure that you are using an FSX-formatted model. There needs to be two separate .mdls in the model folder and called out in the model.cfg; one for external and one for internal. If there is only one .mdl used, it is almost certainly an FS2004-formatted model, which cannot be used.

If you have parts of the aircraft that are all white or not textured correctly:
  • Ensure there is no texture alias in the appropriate texture.cfg. If there is, find the referenced textures and add them to your package.
  • Ensure that any .bmps are saved as 32-bit extended bitmaps or .dds files.
  • Material colors 'baked in' to the models will show up as all white. The only way to fix this is to edit the .mdl (using ModelConverterX) to assign new textures to these parts of the model. This is not easy to do and if you do not know how to already, you should likely consider it a dead end.

If your game crashes as soon as you load an aircraft or switch views for the first time:
  • Try again. Sometimes the game just crashes on its own.
  • If the behavior is consistent, the model file is likely corrupted in some fashion. If you edited the .mdl, revert to a previously working version.
 
Cameras.cfg
I noticed the other night that the camera I transferred weren't quite right. What gives? Well it seems that some of the field's direct meaning has changed.
InitialZoom
Looks like this has changed a bit but good news is I have a rule of thumb. Take your current value (0.7 in the C-47 for most cameras) and subtract it from 1 to get the new value:
1 - 0.7 = 0.3 (which is the common zoom found in the new planes)

InitialPbh
Pitch, Bank and Heading. I just need to reconfirm this one tonight but some of the cameras I converted on the P-40E Twin were all pointing up in the air instead of down as they should have, so I believe that the pitch has been inverted. This simply requires adding or removing a “-” from your initial value. E.g.

InitialPbh = 10, 0, 0
Should now be
InitialPbh = -10, 0, 0

As mentioned I will confirm this tonight and update this document.

EDIT:
Confirmed. Pitch is now more sensible where positive values pitch the view up and negative down.
 
Last edited:
Engines.cfg
Another little gotcha I noticed the other day with the engines.cfg is under the [Piston_engine] section the variable max_rated_hp. In FSX this value was PER engine, but it seems that in the new sim it is the TOTAL for all engines.

I’m getting confirmation on this, but it was very strange that my aircraft wasn’t developing anywhere near the right power. So I opened the debug for engines and it was showing 785HP max for each engine, when it should have been showing 1570.

Again, I’ll confirm this tonight and update.
 
Hi,
I've followed your tutorial and is was very very helpful thank you! Things seem to be pretty good with my 737 except for one odd issue. She will rotate and climb a few feet and then just stick there like it hit a ceiling and won't climb any further. Eventually I hit something or stall. Any ideas what could possibly be causing this? It flew fairly well with the air file, but I must have mucked something up in the conversion.

Any ideas much appreciated.
Thanks again,
James
 
Hi,
I've followed your tutorial and is was very very helpful thank you! Things seem to be pretty good with my 737 except for one odd issue. She will rotate and climb a few feet and then just stick there like it hit a ceiling and won't climb any further. Eventually I hit something or stall. Any ideas what could possibly be causing this? It flew fairly well with the air file, but I must have mucked something up in the conversion.

Any ideas much appreciated.
Thanks again,
James
I recommend if you haven't already, pulling all of the data from the aircraft.cfg and AIR file into the separate CFGs. I've only done pistons at this point as Tubes don't really jet my gas :D
 
I recommend if you haven't already, pulling all of the data from the aircraft.cfg and AIR file into the separate CFGs. I've only done pistons at this point as Tubes don't really jet my gas :D

Yes, that’s exactly what I did. I’ve obviously hosed something. Was just hoping someone might know what aerodynamic setting might cause something like this. I thought maybe ground effect but that doesn’t seem to be the case.

thanks anyway!
 
Hi,
I've followed your tutorial and is was very very helpful thank you! Things seem to be pretty good with my 737 except for one odd issue. She will rotate and climb a few feet and then just stick there like it hit a ceiling and won't climb any further. Eventually I hit something or stall. Any ideas what could possibly be causing this? It flew fairly well with the air file, but I must have mucked something up in the conversion.

Any ideas much appreciated.
Thanks again,
James

Hello,

i am really not able to reproduce this tutorial, it is very good, but i am realy not confirm with such programms and editing cfg's.
So i search for a B737-800 WL version since MSFS is out. Now i read your Post about your B737 and want to ask if you can share it ?
That would be very nice of you !
Thanks
Matthias
 
That's a great tutorial. Being a developer I'm keen to upgrade my flight models to the new format, I just wish that Asobo would've used the descriptions from the AAM/Airfile in the descriptions of the config to the letter so that transposing them was a little easier. I'm not afraid to sit here and spend the couple of hours required to transpose, but trying to find what table each relate to is somewhat difficult when you usually model rather than code flight models :-D

If only there was an air file to config converter.........I can dream!
 
That's a great tutorial. Being a developer I'm keen to upgrade my flight models to the new format, I just wish that Asobo would've used the descriptions from the AAM/Airfile in the descriptions of the config to the letter so that transposing them was a little easier. I'm not afraid to sit here and spend the couple of hours required to transpose, but trying to find what table each relate to is somewhat difficult when you usually model rather than code flight models :-D

If only there was an air file to config converter.........I can dream!
You seen my google sheet there with my list of AIR Table/REC to Asobo?
 
Yes I have thanks, however the particular table I'm trying to find is what the engines.cfg calls mach_0_corrected_commanded_ne_table and the mach_hi version.
 
Top