Thanks to insistance by Andy (ElvenPointSevenFive), I am now certain that I've found the deceleration fueling RPM threshold fueling table for my Rom (and the 2010 USDM STI).
I actually found these some time back, but never got back to actually test driving these until Andy asked for them, which prompted me to scratch around the rom some more.
This 2D table determines (on an ECT x axis) at what RPM the injectors switch back on from coasting (i.e. full lean, and injector pulse width at zero). This would be useful to those with much larger injectors than stock that have a problem with stalling out as the vehicle comes to stop / idle.
I'll put up the routine and table as soon as I have a chance, but for now, here's the Ecuflash xml code. I'm pretty sure that I've got the the other related overrun fueling parameters of interest (delta throttle, overrun injector enrichment), but still need to dig through the code some more.
AZ1G202G
Code:
<scaling name="OverRun Fueling " units="units" toexpr="x*0.1953125" frexpr="x/0.1953125" format="%.0f" min="0" max="255" inc="1" storagetype="uint16" endian="big"/>
<table name="Overrun Fueling RPM Threshold" address="ca8d4" type="2D" level="1" scaling="OverRun Fueling ">
<table name="X" address="c7ff4" type="X Axis" elements="16" scaling="DegreesF"/>
</table>
AZ1G202I
Code:
<scaling name="OverRun Fueling " units="units" toexpr="x*0.1953125" frexpr="x/0.1953125" format="%.0f" min="0" max="255" inc="1" storagetype="uint16" endian="big"/>
<table name="Overrun Fueling" address="cba78" type="2D" level="1" scaling="Overun Fueling">
<table name="Coolant Temp" address="c9110" type="X Axis" elements="16" scaling="DegreesF"/>
</table>
Some guidance on finding these values in your romI still have to put up a run through the logic, but for those curious, the easiest way to find these is to go the the location of the Throttle Tip In Enrich Activation value in the rom, and usually above it you will see 2 values - for a number of the later roms I've looked at now, it is set to -17 for RPM Delta and 1400 for the injector enrichment (divided by 1000 gives ms).
e.g. AZ1G202G:
Code:
ROM:000C7EAC Overrun_Enrich_RPM_Delta_Activation:.float -17.0 ; DATA XREF: sub_33B6C+2Eo
ROM:000C7EAC ; ROM:off_33DB0o
ROM:000C7EB0 Overrun_initial_enrichment?:.float 1400.0 ; DATA XREF: sub_33B6C+42o
ROM:000C7EB0 ; ROM:off_33DB8o
ROM:000C7EB4 ThrothTipInEnrichActivationThrottle:.float 1.0
ROM:000C7EB4 ; DATA XREF: Fun_TipinEnrichment+A4o
ROM:000C7EB4 ; ROM:off_33DFCo
ROM:000C7EB8 ThrothTipInEnrichActivation:.float 280.0 ; DATA XREF: Fun_TipinEnrichment+138o
ROM:000C7EB8 ; ROM:off_33E1Co
ROM:000C7EBC TipInEncrichCompensDectActivation:.float 1.0
ROM:000C7EBC ; DATA XREF: Fun_TipinEnrichment+10Co
ROM:000C7EBC
If you scroll down from that location, you will notice a sequence of 3 RPM values - normally starting with 1800 and ending with 4500 - those are the counters.
Code:
ROM:000C7EE4 Variable_flt_C7EE4:.float 1800.0 ; DATA XREF: sub_340EC+60o
ROM:000C7EE4 ; sub_340EC:off_34300o
ROM:000C7EE8 Variable_flt_C7EE8:.float 200.0 ; DATA XREF: sub_340EC+1AEo
ROM:000C7EE8 ; sub_340EC:off_3433Co
ROM:000C7EEC Variable_flt_C7EEC:.float 500.0 ; DATA XREF: sub_340EC+1C0o
ROM:000C7EEC ; sub_340EC:off_34340o
ROM:000C7EF0 Variable_flt_C7EF0:.float 200.0 ; DATA XREF: sub_340EC+1CEo
ROM:000C7EF0 ; sub_340EC:off_34344o
ROM:000C7EF4 Variable_flt_C7EF4:.float 500.0 ; DATA XREF: sub_340EC+264o
ROM:000C7EF4 ; sub_344C4:off_34588o
ROM:000C7EF8 Variable_flt_C7EF8:.float 100.0 ; DATA XREF: sub_340EC+276o
ROM:000C7EF8 ; sub_344C4:off_3458Co
ROM:000C7EFC Variable_flt_C7EFC:.float 500.0 ; DATA XREF: sub_340EC+282o
ROM:000C7EFC ; sub_344C4:off_34590o
ROM:000C7F00 Over_Fueling_RPM_Range_1:.float 1800.0 ; DATA XREF: sub_344C4:loc_3452Eo
ROM:000C7F00 ; sub_344C4:off_345E8o
ROM:000C7F04 Over_Fueling_RPM_Range_2:.float 3200.0 ; DATA XREF: sub_344C4:loc_3453Ao
ROM:000C7F04 ; sub_344C4:off_345ECo
ROM:000C7F08 Over_Fueling_RPM_Range_3:.float 4500.0 ; DATA XREF: sub_344C4:loc_34546o
Above the counters a couple of values - in my rom 500 and 200 (see above) - follow the Xref from one of these back to the data offset location, you will see that there is a 2D table - this is the overrun fueling resume table.
Code:
ROM:00034330 off_34330: .data.l Table_Overun_Fueling_RPM_Resume
ROM:00034330 ; DATA XREF: sub_340EC+15Cr
ROM:00034334 off_34334: .data.l Fun_GetMapValue2D_8B_16B_Float
ROM:00034334 ; DATA XREF: sub_340EC+15Er
ROM:00034338 off_34338: .data.l Variable_word_C7750 ; DATA XREF: sub_340EC+196r
ROM:0003433C off_3433C: .data.l Variable_flt_C7EE8 ; DATA XREF: sub_340EC+1AEr
ROM:00034340 off_34340: .data.l Variable_flt_C7EEC ; DATA XREF: sub_340EC+1C0r
ROM:00034344 off_34344: .data.l Variable_flt_C7EF0 ; DATA XREF: sub_340EC+1CEr
To verify, the multiplier for the tables should be 0.1953125 and the offset 0.
Code:
ROM:00088DC8 Table_Overun_Fueling_RPM_Resume:.data.w h'10 ; DATA XREF: sub_340EC+15Co
ROM:00088DC8 ; sub_340EC:off_34330o
ROM:00088DC8 ; 16 Lignes
ROM:00088DC8 ; 16 Byts
ROM:00088DCA .data.w h'800
ROM:00088DCC .data.l Table_CoolantTemperature_YAxis
ROM:00088DD0 .data.l Overun_Fueling_RPM_Resume
ROM:00088DD4 .float 0.1953125 ; Engine speed
ROM:00088DD8 .float 0.0