These are most of the important table locations in the chip. Many
explanations are very simple, to keep everything basic here, and not
confuse anyone TOO much.
0x0000 PROMID Prom ID Code
This is the prom ID that shows in a scan tool, it is a good
idea to identify each program with the values here. Number your
programs, for identification if you are burning a multichip, or if you are
logging runs and want to note which program ran best from a
0x0008 KKPGMID Program ID
This is the program ID, it
identifies this software program (the code and all these tables are the
software, you can run other software on our ECM). SyTy code is
0x58. Important note - our ECM does a check sum check. This
goes through the entire table section, adds up the bytes, and the
resulting sum (the check sum) is checked against the checksum value in the
chip. If it is the same - OK, all is good, if it does NOT match, boom,
sets a code, bad prom. Kind of like a parity check to make sure the
data read is GOOD. Setting the Program ID to AA disables this check.
All of my programs are set to AA, otherwise I'd have to re-calculate a
checksum for each program I modify.
0x0035 KKMASK1_M12 Malfunction Flag 12
and more like this line above...
This section contains the Malfunction flags. If enabled, it
will run the malfunction tests, to test for the improper running
conditions and then display the check engine light. Disabled - no test, no
check engine lights, no codes set. The various malfunction logic
thresholds and constants immediately follow this section
0x00AD KFANVSLK Fan
Enable MPH Threshold (Lower) 0.0 MPH
0x00AE KFANCLTH Fan Enable Temp
Threshold (Higher) 84.50 Deg. C
0x00AF KFANVSHK Fan Enable MPH
Threshold (Higher) 0.0 MPH
0x00B0 KFANCLTL Fan Enable Temp Threshold
(Lower) 84.5 Deg. C
0x00B1 KFANCTHL Hot Fan Enable Temp Threshold
(Lower) 84.5 Deg. C
0x00B2 KFANCTHH Hot Fan Enable Temp Threshold
(Higher) 84.5 Deg. C
0x00B3 KFANCTCL Cold Fan Enable Coolant Temp
Threshold (Low) 84.5 Deg. C
0x00B4 KFANCTCH Cold Fan Enable Coolant
Temp Threshold (High) 84.5 Deg. C
0x00B5 KFANMTCL Cold Fan Enable MAT
Temp Threshold (Low) 45.5 Deg. C
0x00B6 KFANMTCH Cold Fan Enable MAT
Temp Threshold (High) 45.5 Deg. C
section is the fan controls, or as it is utilized in our application, the
intercooler pump controls. Read the document for the equations that
govern IC pump controls; they aren't as simple as you'd
Simply said -
For adjusting fan turn on temps: use KFANCTHL and
KFANCTHH. These are the upper and lower temps for turn on threshold,
and I have been using these to control my electric fans.
For anticipating the fan turn on and IAC step
increase: (truck may not like the extra load of electric fans, the
anticipation via these 2 values can help that)
KFANTIM1 Fan On Delay After
Conditions Met 0.1 Sec.
KFANDS1 Fan Anticipated Motor
Position Offset 0 Steps
0x00DA KRSHNTHK TCC Road Speed Upper Lock Limit
(3rd Gear) 32.2 MPH
0x00DB KRSHNTLK TCC Road Speed Lower Lock Limit
(3rd Gear) 30.0 MPH
Past 32.2 mph, the TC
locks; once it goes back below 30.0 mph, it will unlock, in 3rd
0x00DC F42_TYPE (3rd Gear, Upper) Load Limit vs
Load Limit vs MPH
| 20 25 30 35 40 45 50 55 60 65
| 0.0 0.3 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.0
(3rd Gear, Lower) Load Limit vs MPH
Load Limit vs MPH
| 20 25
30 35 40 45 50 55 60 65
| 0x00 0x2E 0x2E 0x36 0x40 0x4F 0x5F 0x78 0x9A 0xC7 0xFF
These are values for TC unlocking in 3rd gear,
based on throttle I believe. I'm a bit unsure of these tables, as
the document does not have the TC control logic in it.
0x00FA KRETARDM ESC Maximum Allowable Retard 12.66
Maximum amount of knock retard that is possible; the most
timing the computer can pull out.
The large section of shift light tables is NOT used
in our application. That output is used for TC lockup.
0x0192 F1_TABLE Main Spark Advance
This is a 3 bar timing table in Promgrammer.
This is one of the OEM 2 bar calibration timing tables.
From 30-100kpa is in vacuum - idle, cruise, part throttle load.
100-200kpa is 0 to 15psi of boost.
0x0284 F2_TABLE Base Coolant Advance
This is the timing table
versus vacuum and coolant temps. You can see that the timing is
scaled lower at cold temperatures & low vacuum, which would be your
cold startup condition. This helps an engine startup easier.
Also the timing is dropped slightly at very hot temperatures.
0x02D2 F3_TABLE Spark Advance Adjustment vs
Deg. vs Deg. C & kPa Boost
A 3 bar calibration.
From one of the OEM, stock GM
This is a cool table. This table can help you avoid
detonation in your truck. You can scale boost versus manifold air
temps and boost. So let's say you have a street chip..
you don't want very high timing if the MAT temps are very hot...so you can
scale the timing down here. You can also drop the timing down at higher
boost levels here (as well as in the F1 main spark table). Great
table for using with alky, as you can add timing at the lower temps. Hit
the alky, MAT temps drop, timing goes up a bit....
0x0311 F80_TABLE PE Contribution To Spark
Advance - Deg. vs NTRPM
When you go into PE mode (Power enrichment mode) any
additional degrees of timing, from this table, is added into the spark
advance. PE mode is when you really stab it, have it floored etc
etc. There are a few parameters that govern WHEN PE mode is enabled,
based on throttle percent, rate of throttle change, manifold pressure
level... and whatnot.
0x031C F6_TABLE ESC Attack Rate vs RPM
When knock is detected, timing is pulled out at the above
rate, versus the RPM shown above. So if you have knock detected at 4800
RPM, it will pull timing out at a rate of 0.36 degrees per
0x0322 F7_TABLE ESC % Recovery Rate vs RPM
Once detonation is not sensed any longer, the timing
recovers at the above percentage per second. Notice how slow it is
at higher RPM.
0x0334 KAFOPT3_3 Limit Boost During 1st Accel
This will limit your boost to base boost the first
time you accelerate. Disable it.
0x034A KCLTC Temp. Thresh. For C/L Determination
21.5 Deg. C
This is the coolant temp for closed loop
operation. Set this to maximum (151 deg C) and it will never reach
that temperature, and will be full time open loop. Highly
recommended by me once you have the calibration dialed in fairly well,
unless passing emission is a big deal for you. If you run a cat this may
help clog it (FYI).
0x0355 KBLMMAX Max. Allowable BLM 1.17
0x0356 KBLMMIN Min. Allowable BLM 0.82 Value
limit the BLM values. 1.00 = 128 BLM.
0x0357 KCLOXTH O2 Sensor Rich-Lean Thresh. 0.500
Above or below whatever value is entered here will
determine whether it is designated running rich or lean (for updating
integrator). Leave it alone.
0x035A KCLITMI Closed Loop Min. Integrator Value 80
0x035B KCLITMX Closed Loop Max. Integrator Value 218
These are the integrator limits.
0x038A KFRPMLOW Hi RPM Fuel Cutoff Thresh. Lo Limit
0x038C KFRPMHI Hi RPM Fuel Cutoff Thresh. Hi Limit 4714
Rev limiters. Once you rev past
4714 rpm, fuel is cut, and will not be enabled until you go below 4535
0x03A0 KFMPHLOW Lower MPH for Boost Disable 114.0
0x03A1 KFMPHHI Upper MPH for Boost
Disable 116.0 MPH
Top speed limiters, just boost limit versus
mph. Raise to high level to eliminate.
0x03A2 KWGMAPTM High Load Fuel Shutoff Time
Threshold 1.50 Sec.
If you are overboosting, it will cut fuel
1.50 seconds (or whatever you enter here) after it detects that condition.
Probably best to lower this value.
0x03A3 KWGMAPH MAP Threshold Enabling Fuel Shutoff
0x03A4 KWGMAPL MAP Threshold Disabling Fuel Shutoff 167.38
Overboost fuel cut levels. These
are the stock values, Bill has modified Promgrammer so that the readings
are accurate if you are tooling with a 3 bar bin.
Various boost control thresholds/limits
0x03A7 KGDCTIM1 Boost Red. Decrement Time Interval
0x03A8 KGDCTIM2 Boost Red. Increment Time Interval 0.6
0x03A9 KGDCTIM3 Delay Time to Start Boost Reduction 0.2
0x03AA KGEKCENA Boost Reduction Retard Enable Threshold 7.91
0x03AB KGEKCDIS Boost Reduction Retard Disable Threshold 6.15
0x03AC KBSTDLT1 Desired Boost Pressure Reduction Delta 7.03
0x03AD KBSTDLT2 Desired Boost Pressure Reduction Delta 3.91
0x03AE KWGMPHL Brake Torque Vehicle Speed Threshold 0.0
0x03AF KGDCTIM6 Brake Torque Time Limit 0.3 Sec.
Inhibit Overboost Time Threshold 100.0 Sec.
0x03B2 KWGCLTIM Time
Threshold for Wastegate Closed Loop 0.4 Sec.
0x03B3 KCLBSTEH Close Loop
Boost Mode Threshold 39.84 kPa
Set this value higher, and the
wastegate duty cycle will remain at 100% longer - faster spool up,
increased risk of spike at initial acceleration.
0x03B4 KCLBSTEL Close Loop Boost Mode Threshold 5.47
0x03B5 KBSTERDB Boost Error Deadband 3.13 kPa
Closed Loop Update, High Boost 0.2 Sec.
0x03B7 KDCTIM8P Closed Loop
Update, Low Boost 0.2 Sec.
0x03B8 KDCSTEN Negative Step Adjustment to
Wastegate DC 1.95 %
0x03B9 KDCSTEP Positive Step Adjustment to
Wastegate DC 3.13 %
0x03BA KWGRPMEN Threshold for Closed Loop Turbo
Boost 0 RPM
Set this value high, and the
boost control will remain in open loop, using values from the F71 table as
the wastegate duty cycle, best used versus MPH. Can be a very
effective way to control boost.
KWGDRPMP Positive Delta RPM to Stepup Boost 300 RPM
Negative Delta RPM to Stepup Boost 150 RPM
0x03BD KWGDTPS TPS Threshold
to Stepup Boost 4.30 %
0x03BE KWGDCLOW Starting Boost Level 68.75
0x03C2 F70_TABLE Desired Boost Pressure Base vs
NTRPMX and NTPSLD
This is the main
boost table; desired boost versus throttle position and RPM.
0x03E7 F71_TABLE Initial Value Of WG Duty Cycle vs
Stock chip (one of them) 2 bar calibration, versus
The system is closed loop, so it alters
the wastegate duty cycle in order to achieve the desired boost from the
F70 table. The F71 table is used to give a basis for the duty cycle.
It reverts to this at shifts (negative RPM deltas) etc, and if you scale
it versus MPH (code hack that Dig has been making good use of) it can
prevent boost spikes at shifts/TC lockup/downshifts. See the table versus
MPH, in a 3 bar calibration below.
0x040E F28_TABLE Base Pulse Const. vs Desired
This is the closest thing we
have to an injector constant in our chip. This value is a direct
fuel multiplier. Multiply the values in this table by 1.5, your
injector pulsewidths will be 1.5 times longer across the board. When
working with larger injectors, this should be the first table you
0x0422 F29_TABLE Base Pulse VE vs RPM And MAP
This is the main Volumetric Efficiency fueling table,
for open throttle conditions. NOTE that it is ONLY in vacuum.
So once you are in boost, you will only be using the 100 kpa MAP line
(furthest right). Also note that the RPM only goes up to 4000. So
how do you adjust fueling in boost? or past 4000 RPM? Ok ok you
guys...settle down.... it's coming up....
0x0476 F29E_TBLE Base Pulse VE vs RPM And MAP
the Volumetric Efficiency table at closed throttle. You use either F29 or
F29E, based on throttle (open or closed). Comes down to that this is the
idle fueling table, and the other table is for all other
0x04AD F30_TABLE Base Pulse VE vs
This is the 3rd and final VE table. It is a
one line table versus RPM only. So the way the VE works is
this. The F30 table is used at all times, pulling a value based
solely on RPM. Then, the ECM sees if you are at open or closed
throttle. Based on that, it will use a value from either the F29 or F29E
table, then it will add that value to the one it derives from the F30
table. So the final VE term is from 2 components. The F30 table
value plus a value from the F29 or F29E table, depending on if at closed
throttle or not.
0x04BF F31_TABLE Base Pulse Inverse Coolant Term vs
Not used in our application,
but COULD be utilized :-)
0x04D1 F31M_TBLE Base
Pulse Inverse Air Temp vs ADMAT (ACSP Senso
is the air temperature fuel scaler. It uses the MAT value for a
lookup for a fueling term. Notice that the stock calibration doesn't
do much except at COLD temperatures. This is one reason our trucks like
cold air so much... at hot air, the air density changes, but our fueling
calibration does not take this into account, so you run a bit rich at
0x060D F77 Base Boost Multiplier vs MAP
This is a 2
bar chip table.
This is a 3 bar chip table.
F77 is used for changing the fueling at a certain boost level.
NOTE - if you change the first table entry (90 or 135 on the 3 bar) you
will affect the entire fuel curve while doing anything in vacuum. I just
learned this lesson on some 50lb/hr injector programs - the version 2
programs have been revised as this was an issue.
0x04E2 F33_TABLE Voltage Compensation vs Battery Voltage
A direct fueling
multiplier based on battery voltage, as lower battery voltage affects pump
output, injector response.
0x04E7 F34_TABLE DE Coolant Factor vs Coolant
0x04F5 F35_TABLE DE MAP Contribution vs MAP Change
0x04FB F36_TABLE DE Throttle Contribution vd
F39_TABLE MAP Multiplier For Deceleration Enleanment
The above are all the DE (deceleration enleanment)
Ok, first DE has to be enabled (when would decel fueling
occur? think about it...). PE can't be enabled (why would you remove
fuel when you are hammering it?), and there is a delta TPS threshold as
well (throttle must be decreasing at least so fast before you start
removing fuel for deceleration). Once it is enabled the DE algorithm
runs through. Check the document for this, it is fairly
straight-forward. Basically what happens is this.. When DE is
enabled, a value is determined from the F35, based on MAP change, a value
from F36, based on TPS change. Now, since TPS is decelerating
(remember what enables DE), your MAP and TPS will be dropping. Then
it determines a value from the F34 table, based on coolant temp, and then
another value from the F39, based on the CURRENT MAP level (not the change
Then it does a calculation that is as
follows 1 - [ (F35 term x F36 term) x
F34 term x F39 term ] = DE fueling term
So if you have larger and larger values in the
above tables, you will be closer and closer to zero (the tables are
actually scaled in such a way that their product is always less than one)
once the product is subtracted from one. So let's say the final DE
term is 0.5.
That value is a DIRECT fueling multiplier, so the
pulsewidth is HALF of what it was before this calculation took
place. Normal conditions, DE is not occurring, so the term is ONE,
or no modification of the pulsewidth calculation. So, on the 50#
chips, some DE modification took place, and it really helped
matters. The way to really determine if this is needed is to dial in
regular drivability, trying to avoid deceleration conditions (as the
integrator will be going wacky if the DE is off), get the VE tables pretty
dialed in, then start doing some heavy decel stuff. Stop and go, off
throttle, back in.. and start looking for trends. Does
the integrator go WAY down when you slow down? This WILL cause
stumble conditions when you get back into throttle, as the integrator is
down LOW, removing fuel, and you are at a condition that is requiring an
integrator of 128 (the integrator has a delay - or lag - built in).
So from there, you need to adjust some DE tables (if you experience the
same conditions I did with the 50s). Basically I believe I increased
the DE (so it removes MORE fuel) at the F34 and F39 tables. So
increasing table values will lead to more fuel being removed.
0x050C F21_TABLE AE - Delta MAP
Contrib vs Delta MAP
F22_TABLE AE - Delta Throttle Contrib vs (8 * Delta Throt.
0x0517 F37_TABLE AE Temp. Correction Factorvs Coolant
0x0524 F38_TABLE RPM Multiplier For Accel
0x033C KAEISCN AE IAC Contribution 0.0 mSec
(this is from section before the AE tables)
Acceleration Enrichment tables. AE is pulsed
asynchronously. This mean it is not synchronized with the regular,
timed pulsewidth injections, which is why there is NO AE fueling term in
the main fueling algorithm. It basically will inject small fuel
spurts whenever the program determines it is necessary (based on engine
acceleration events - positive change in MAP, RPM, TPS etc). So this
algorithm is fairly straightforward also. So the basics of AE
An AE MAP term is determined from the F21 table (change in
MAP). An AE TPS (throttle) term is determined from the F22 table
(change in TPS). Change in IAC can also add AE fueling, but there is
only a set fuel amount, (KAEISCN). This isn't used in stock
application, and I found no change when I did it in some test
programs. The AE MAP term, the AE TPS term and the AE IAC term are
summed. The AE sum is then multiplied by values from the F37 (based
on coolant) and F38 (based on RPM). I've made my main changes in
F37. They had to be cut down quite a bit actually. Careful
here, because you have to ensure that you are adjusting fueling for a
dynamic, accelerating condition, and not for a condition that is
lean. The way I have done this is to adjust your VE terms while at a
steady state, non accelerating condition. Once you have that really dialed
in, work on the DE. Once that is done, make several programs with varying
F37 values (a wide range) and see if you can notice a difference across
the board. I have done some chips with radical changes, just to see
HOW the changes affect drivability. I did a chip with AE way cut
back... kinda thinking "does this REALLY do what it says it does in
the code?". Yup it did. Any throttle application resulted in
bad surging and stumbling... Anyways, doing it
this way will establish a trend. From there, you can narrow the
programs down to your favorites. Next will be to see how it varies
when it's cold versus when it's hot. Adjust those the same way,
scaling the F37 a few different ways, and seeing what works best.
- BG -