[Updated: July 17th, 2026, 12:15 UTC)
Hello everyone,
After reviewing several reports related to turbine-engine speed tuning, we identified common limitations affecting turbojet/turbofan and turboprop/turboshaft configurations.
To address this, new optional parameters have been added to engines.cfg.
They provide additional flexibility in defining commanded N, making turbine engine speed laws easier and more precise to tune.
These additions are opt-in: aircraft that do not use the new parameters retain the previous behavior, ensuring backward compatibility.
These changes will be introduced with SU6, starting with SU6 Beta 1.8.7.0.
While the SDK documentation is being prepared, here is a heads-up on the upcoming changes. This is a bit of a long read, but I hope it helps clarify the reasoning behind them.
Background
The “100% cap” issue exposed a more general limitation in how turbine commanded-speed targets were defined. The key point is which “N” the engine controller is actually commanding, and whether it is the right target for the intended engine-speed law.
Depending on the engine type, the commanded value may represent a different physical target:
- For turbojet and turbofan engines, where the engine core is represented by the second spool, it makes sense for the fuel-flow controller to target corrected N2, with corrected N1 then derived through a CN2-to-CN1 relationship.
- For turboprop and turboshaft engines, where corrected Ne represents corrected N1 / Ng, the equivalent corrected-speed target is commanded corrected N1.
- However, in many real-world tuning cases, the intended target is instead the displayed, uncorrected N1.
The new parameters are intended not only to address the “100% cap” issue, but also to align the commanded-speed target with the desired behavior.
Legacy commanded-Ne control
The legacy corrected-Ne path in FSX was based on two Mach-specific .air tables:
AIR_70_MACH_0_CORRECTED_COMMANDED_NEAIR_70_MACH_HI_CORRECTED_COMMANDED_NE
which were later exposed in MSFS through the following engines.cfg parameters:
mach_0_corrected_commanded_ne_tablemach_hi_corrected_commanded_ne_table
This commanded Ne represented:
- corrected N2 for turbojet and turbofan engines;
- corrected N1 for turboprop and turboshaft engines.
Each table was a 2D table using effective throttle and inverse pressure ratio as arguments. The final commanded Ne was then interpolated between the low-Mach and high-Mach tables.
This allowed corrected engine speed to be adjusted with altitude and Mach number, including values above 100%, or to maintain a constant uncorrected N across altitude and Mach changes where required.
However, the interface:
- was limited to only two Mach reference points (using only two tables);
- used effective throttle rather than raw throttle lever position, making tuning for the reverse indirect and limiting afterburner tuning;
- expressed altitude dependency through inverse pressure ratio, which is engineering-oriented but not very user-friendly.
MSFS commanded-Ne control
To make turbine engine tuning easier, MSFS introduced a linear control law based on effective throttle:
- For turbojet/turbofan engines, this became an additional path alongside the legacy corrected-Ne tables. In this mode, the controller commands uncorrected N1 directly.
- For turboprop/turboshaft engines, however, this became the only native path and replaced the legacy corrected-Ne tables. In this case, the controller commands corrected N1, not actual N1.
In both cases, the upper target of the linear law remained hard-coded to 100%. This made it impossible to command N1 / Ng above 100% for either turbojet/turbofan or turboprop/turboshaft engines without extending the throttle beyond the normal range.
For turboprop/turboshaft engines, this also created an additional limitation: because the controlled target was corrected N1, maintaining constant displayed N1 / Ng across altitude and Mach changes became impossible with the throttle lever held fixed.
There were also some limitations in low-idle tuning for turboprop/turboshaft engines using the tp_high_idle_throttle_pos and tp_idle_range parameters. The additional low-to-high idle segment could only be defined within the positive throttle range, which constrained ground-idle and beta-range tuning. These parameters also indirectly affected commanded corrected N1 in reverse, making reverse N1 tuning less straightforward.
New commanded-Ne options
To address these cases, several optional commanded-Ne parameters have been added to the [TURBINEENGINEDATA] section of engines.cfg.
1) “full_throttle_commanded_n1”
Type: float
Default value: 100%
This parameter allows the simplified linear N1 law to command values above 100% without extending throttle beyond the normal range.
When specified, this parameter also overrides high_n1 for consistency, effectively replacing it as the single full-throttle commanded-N1 reference.
For turboprop/turboshaft engines, it also modifies the engine-speed control law so that it controls actual N1 instead of corrected N1. This makes the behavior consistent with the turbojet/turbofan N1 path, allowing displayed N1 / Ng to remain constant with altitude and Mach changes at a fixed throttle lever position.
When this parameter is omitted, the existing behavior is preserved, ensuring backward compatibility.
However, as mentioned above, the linear law still has some design limits: reverse behavior remains tied to effective throttle and low-to-high idle logic, and the additional low-to-high idle segment for turboprop/turboshaft engines can only be defined within the positive throttle range.
To address these remaining limitations and provide more flexible control, the next parameter has been added:
2) “corrected_commanded_Ne_table”
This multi-dimensional table allows corrected commanded Ne to be explicitly tuned for turbojet, turbofan, turboprop, and turboshaft engines as a function of:
- arg.1: pressure altitude [ft] (negative values are supported);
- arg.2: inlet Mach number;
- arg.3: throttle lever position (negative values are supported).
Note: extrapolation of corrected commanded Ne outside the defined argument ranges is not supported (similar to all other tables).
With this parameter, corrected commanded Ne specifies:
- target corrected N1 for turboprop and turboshaft engines;
- target corrected N2 for turbojet and turbofan engines.
When this parameter is specified, it takes priority over all previous settings that determined corrected commanded Ne, including:
use_commanded_Ne_tablemach_0_corrected_commanded_ne_tablemach_hi_corrected_commanded_ne_tablelow_idle_n2low_idle_n1high_idle_n1min_throttle_limittp_high_idle_throttle_postp_idle_rangeafterburner_throttle_thresholdfull_throttle_commanded_n1(introduced in SU6)
CAUTION: Some of these parameters may still be used in other engine performance calculations, but they no longer affect corrected commanded Ne.
When this parameter is omitted, the existing behavior is preserved to ensure backward compatibility.
In short, this parameter follows the same corrected-Ne concept as the legacy FSX / MSFS tables, but replaces the two low- and high-Mach tables with a single table. This provides several advantages:
- any required number of Mach reference points can be defined (more accuracy);
- pressure dependency is expressed through pressure altitude instead of inverse pressure ratio (better clarity);
- throttle is expressed through actual throttle lever position instead of effective throttle. This makes corrected-Ne control explicit across the full throttle range. For example, beta-range points can be placed directly where needed, or minimum- and full-afterburner corrected N2 can be tuned independently.
While this table provides a flexible and well-established engineering approach to turbine engine control-law tuning, working with corrected parameters can require additional efforts. The next option provides a more direct path for uncorrected N1:
3) “uncorrected_commanded_Ne_table”
This 1D table (in MD-format) defines the target uncorrected N1 for turbojet, turbofan, turboprop, and turboshaft engines as a function of throttle lever position.
When this parameter is specified, it takes the highest priority over all other settings that previously determined the commanded Ne, including:
corrected_commanded_Ne_table(introduced in SU6)use_commanded_Ne_tablemach_0_corrected_commanded_ne_tablemach_hi_corrected_commanded_ne_tablelow_idle_n2low_idle_n1high_idle_n1min_throttle_limittp_high_idle_throttle_postp_idle_rangeafterburner_throttle_thresholdfull_throttle_commanded_n1(introduced in SU6)
CAUTION: Some of these parameters may still be used in other engine performance calculations, but they no longer affect commanded Ne.
When this parameter is omitted, the existing behavior is preserved to ensure backward compatibility.
In practice, this table replaces the simplified linear commanded-N1 law with a more flexible table-based definition. It allows commanded N1 to be defined directly at any throttle lever position, including reverse, ground idle, beta range, normal power, and afterburner. For example, the ground-idle segment can be placed in any required throttle range, and different N1 targets can be defined within the afterburner range.
However, when using either corrected_commanded_Ne_table or uncorrected_commanded_Ne_table, an additional mechanism is still needed to adjust the commanded target using a control other than throttle, similar to the low-/high-idle behaviour available in the existing linear law. This is the purpose of the fourth parameter:
4) “delta_commanded_Ne_table”
This multi-dimensional table is applicable only when either corrected_commanded_Ne_table or uncorrected_commanded_Ne_table is used. It defines a correction to corrected or uncorrected commanded Ne, respectively, as a function of:
- arg.1: condition or mixture lever position (refer to
delta_commanded_Ne_control) - arg.2: throttle lever position (negative values are supported).
It can be used across any throttle and condition or mixture lever range, including proportional corrections or discrete state changes.
The condition lever position is provided by the TURB_ENG_CONDITION_LEVER_POSITION SimVar.
The mixture lever position is provided by the GENERAL_ENG_MIXTURE_LEVER_POSITION SimVar.
5) “delta_commanded_Ne_control”
Type: integer
Default value: 0
This parameter is applicable only when delta_commanded_Ne_table is used.
It specifies whether the first argument of delta_commanded_Ne_table represents:
0: condition lever position (default), or1: mixture lever position.
__________
Also, when either corrected_commanded_Ne_table or uncorrected_commanded_Ne_table is present, the output values of the TURB_ENG_COMMANDED N1 and TURB_ENG_THROTTLE COMMANDED_N1 SimVars become aligned with the target uncorrected N1.
Please note that these SimVars were not effectively writable and will therefore be marked as non-writable in the SDK as of SU6.
I hope you find these parameters and the explanation useful.
Please let me know if you have any questions.
Andrey / Asobo