***Use at your own risk.***
This implementation hijacks the speed limiting fuel cut routine and assesses MAP instead of vehicle speed.
Defined for A00G/A01G ROM: a single value in the speed limiting fuel cut routine is changed (from 0x58 to 0x5A) to get MAP loaded instead of speed and MAP limits are entered in place of speed limits. To clarify, no additional patch is needed for this modification besides the single value switch in the code - thanks to Subaru engineers who just lifted the speed limit rather than write new code.
Defs and test log with 1.35 Bar cut limit and 4400 RPM active.
First ramp showing MAP > 1.35, RPM < 4400: No fuel cut.
Second ramp showing MAP > 1.35, fuel cut when RPM hits 4400.
Third ramp showing RPM > 4400, fuel cut when MAP hits 1.35.
This is a neck-snapping hard fuel cut, but probably better than a blown engine due to major overboost. Haven't done extensive testing and you'll lose your speed limiter fuel cut if you apply this (default set to fuel cut over 500 km/h).
Def for A00G/A01G:
Code:
<table name="Boost Limit (Fuel Cut) enable" storageaddress="66831" />
<table name="Boost Limit (Fuel Cut)" storageaddress="10C540" />
<table name="Boost Limit (Fuel Cut) Resume" storageaddress="10C550" />
<table name="Boost Limit (RPM) Active" storageaddress="10C554" />
<!--<table name="Speed Limiting Enable (Fuel Cut)" storageaddress="10C540" />
<table name="Speed Limiting Disable (Fuel Cut)" storageaddress="10C548" />
<table type="Switch" name="Boost Limit (Fuel Cut) enable" category="Miscellaneous - Limits" sizey="1">
<description>Enable Boost Limit (Fuel Cut)</description>
<state name="Enabled" data="5A" />
<state name="Stock ROM" data="58" />
</table>
<table type="2D" name="Boost Limit (Fuel Cut)" category="Miscellaneous - Limits" storagetype="float" endian="little" sizey="4" userlevel="4">
<scaling units="Manifold Abs Pressure Bar" expression="x*.001333224" to_byte="x/.001333224" format="#0.000" fineincrement=".001" coarseincrement="0.01" />
<table type="Static Y Axis" name="Boost Limit Fuel Cut" sizey="4">
<data>On Above</data>
<data>On Above</data>
<data>Off Below</data>
<data>Off Below</data>
</table>
<description>These are the MAP values at which the boost limiter is engaged and disengaged. When engine speed is equal to or exceeds the 'On' value, fuel cut is active, after which, if engine speed drops below the 'Off' value, fueling is resumed.</description>
</table>
<table type="2D" name="Boost Limit (Fuel Cut) Resume" category="Miscellaneous - Limits" storagetype="float" endian="little" sizey="1" userlevel="4">
<scaling units="Manifold Abs Pressure Bar" expression="x*.001333224" to_byte="x/.001333224" format="#0.000" fineincrement=".001" coarseincrement="0.01" />
<table type="Static Y Axis" name="Boost Limit Fuel Resume (MAP)" sizey="1">
<data>Below</data>
</table>
<description>After the boost limiter is engaged and engine speed drops below the 'Off' RPM, fueling will not resume until manifold pressure drops below this table's value.</description>
</table>
<table type="2D" name="Boost Limit (RPM) Active" category="Miscellaneous - Limits" storagetype="float" endian="little" sizey="1" userlevel="4">
<scaling units="Engine Speed (RPM)" expression="x" to_byte="x" format="#" fineincrement="50" coarseincrement="100" />
<table type="Static Y Axis" name="Boost Limit Active over" sizey="1">
<data>Over</data>
</table>
<description>The boost limiter is active over this RPM</description>
</table>