View Single Post
Old 04-07-2023, 01:25 PM   #7
callisto
Member
 
Join Date: Nov 2021
Drives: 2019 Subaru BRZ
Location: NA
Posts: 47
Thanks: 24
Thanked 32 Times in 17 Posts
Mentioned: 4 Post(s)
Tagged: 0 Thread(s)
Disabling throttle deposit learning by lowering max ECT to -200.0

I've been reading the code for P1109 THROTTLE DEPOSIT MALFUNCTION and I think I know how to disable this now. (I don't endorse doing so, but I set out to learn how, all the same!)


https://gt86stuff.onrender.com/t3Por...00000XFH2.html

P1109 is logged when the learned value exceeds some threshold, so I've been tracing P1109 back and I think there's a single float that can be altered in K00G to disable learning. It runs a series of checks that are logged as a boolean T/F at FFF8C2F1; if true, then learning is permitted; if false, then learning is not permitted. Among the variety of things that need to be true, the engine speed needs to be at least 30.0, and the ECT needs to be less than 98.0. That float is stored in this block of three floats used in the limits-check function:

00124924 - 41 f0 00 00 - float: 30.0
00124928 - 42 c4 00 00 - float: 98.0
0012492c - 44 21 dd 50 - float: 647.458

So, adding a Romraider def for 124928 float and/or just hex editing it to c3 48 00 00 - float: -200.0 and resetting your ECU should unlearn everything and prevent anything new from being learned; logging on FFF8C2F1 would then switch from "Sometimes true, sometimes false" to "always false", and so learning should stop.

I'm still working through where the learnings are stored, but I believe it's somewhere in these two-byte shorts at FFF8C2EC, C2EE, and C2F2; those should have something non-zero right now, and should be zeroed out and remained zeroed once the patch above is in place.

I haven't tried this since my vehicle is busy with U01A fuel trim learning for the next while, but the memory addresses above are valid for K00G / OFT / Wayne, and I provided the third value for verification that you're in the right place (it's not used anywhere else in the entire ECU, in any version). Hope this helps!

EDIT: For curiosity's sake, it's taking the IAT and looking it up in a previously-undocumented table of "correction in degrees" percentages (below), then applying that result as a MAF correction, then testing some RAM values that I don't recognize yet (FFF8BBBC and FFF8179C) to see if their sum is greater than either 0.37 times, or 0.52 times, that correction; if so, then the short at C4D0, or C4D2, is incremented - unless learning is disabled above. (The table lookup result is always logged at C4CC as a float, whether or not learning is enabled.)

K00G - 00128fec float[9]: -40, -20, 0, 20, 25, 40, 60, 80, 100; 00129010 word[9]: 6400h, 6CA8h, 7552h, 7DDCh, 8000h, 8674h, 8F04h, 97A8h, A033h; multiply by 3.0518044E-5

Last edited by callisto; 04-07-2023 at 02:21 PM. Reason: Explain the algorithm as best as I can determine it.
callisto is offline   Reply With Quote
The Following 4 Users Say Thank You to callisto For This Useful Post:
AussieBRZ (06-19-2023), Compelica (04-08-2023), Danny318 (10-30-2023), tomm.brz (04-07-2023)