When you click on links to various merchants on this site and make a purchase, this can result in this site earning a commission. Affiliate programs and affiliations include, but are not limited to, the eBay Partner Network.
Added fan control defs for 60E0FC00 and G-ROM FlexFuel. Also updated my Ghidra environment with some more REing.. but will update the archive later since it's a pain in the ***. Guess it's also good to know the fans will turn on for a PCM temperature over a threshold hah!
My winols stuff isn't as up to date as my xdf, those fan parameter names should be disable for the temp hysteresis. You will see that the temp value is fan on but it won't go off until the temp drops under the temp - hysteresis.
Not at all familiar how Chidra really works, but got these addresses for my N3ZHEC (EU 6-port 2004)(I get the stock set values). Hopefully these are correct.
Figured I'd post this up here because I blasted out a script I think that works tonight:
Added a RomRaider definition creator for any S1 ROM to give you the option to do an immobilizer disable either WITH or WITHOUT the RKE still installed. Just run the .exe with your ROM in the same folder and it's name as an argument, or run it from the source python doing the same.
I'll run this on all known ROMs I have and update the main defs, but if anyone is REALLY HANKERING for an immo delete, this script will create the defs, and you can put them in your local copy to create your ROM.
NOTE: I have tested this on a few ROMs and it works perfectly.. but please use at your own discretion. This also is NOT a patch tool. Just running this tool on your ROM will not add an immo disable, it simply creates the definitions for your to toggle it on/off in RomRaider. You will still need to do that in order to disable the immo.
Last edited by equinox92; Aug 13, 2025 at 12:12 AM.
Question1:
Any chance to describe how can idle AFR fixed value 1:15 be changed to richer value in S1 early model?
My idle runs 950rpm target and closed loop should be on. Commanded value is 1:15 when idling.
Question2:
Have I understood correctly, AFR in open loop target map can only be 1:14,7 with value 0 and only richer(fuel map describe 1:256 uint8 steps map rich-value compared to lambda)?
Question3:
In closed loop steady load, is the system always targeting 1:14.7 AFR when the secondary-check-Lambda-sensor value oscillation is seen active?
Question1:
Any chance to describe how can idle AFR fixed value 1:15 be changed to richer value in S1 early model?
My idle runs 950rpm target and closed loop should be on. Commanded value is 1:15 when idling.
Question2:
Have I understood correctly, AFR in open loop target map can only be 1:14,7 with value 0 and only richer(fuel map describe 1:256 uint8 steps map rich-value compared to lambda)?
Question3:
In closed loop steady load, is the system always targeting 1:14.7 AFR when the secondary-check-Lambda-sensor value oscillation is seen active?
1. CL lambda trim by RPM/load tables, but no need to idle any richer or leaner than 14.7
2. Yes. In OL you can't target any leaner than 14.7 and honestly no need to ever be.
3. Somewhat yes, the stock CL target is essentially 14.7 +- 0.2 something. By default you can't target any leaner than 15.2 and richer than 12.5.
there are many reasons why you would run leaner then 14.7 in OL... its not all about max power.. you can run 16.5 in low load 30-60% for example and have significantly reduced fuel consumption for everyday driving. You cant target it obviously, you need to use "VE" table to trick it to go that lean, and it was limited due to catalytic converters, but that is something that is much better for the engine than 14.7 at same load, naturally reduces CO emissions ect...
1) I must highlight the commanded and realized AFR value when idle is active: Commanded and realized AFR is fixed to a value 15:1. This is not OpenLoop target table value. My specific question would be: Where is this fixed target idle AFR value described in ROM. To me it seems the OL map is not the source for the idle AFR when idle-control-mode is active.
My goal would be to increase change idle AFR a bit close to stoich for better idling.
There seems to be a step change in AFR command if idling or gas pedal is in use. That is why I expect there to be a specific different values for AFRs in idle and in OL-map *based control modes.
there are many reasons why you would run leaner then 14.7 in OL... its not all about max power.. you can run 16.5 in low load 30-60% for example and have significantly reduced fuel consumption for everyday driving..
You think I haven't tried it? Spoiler alert: you use _more_ fuel going leaner. You actually use less when going a tad rich - 14.5, 14.6 for highway driving. Mazda or whoever made the stock tune figured that out. There isn't a single thing that can be done to improve fuel economy. Actually I lied. Put the car on a flatbed and tow it, and it will get better fuel economy that way.
Originally Posted by naepsae
1) My specific question would be: Where is this fixed target idle AFR value described in ROM.
CL lambda trim by RPM and load. 2 tables. Those + a whole bag of other nitty gritty trims for god knows what reason.
Originally Posted by naepsae
1)My goal would be to increase idle AFR a bit close to stoich for better idling.
Stock idle AFR is 15 or so. It idles just as good on 15.5 down to 14. No need to touch it.
Originally Posted by naepsae
There seems to be a step change in AFR command if idling or gas pedal is in use.
Not by gas pedal direcly. TPS, load, rpm, ECT....
Originally Posted by naepsae
That is why I expect there to be a specific different values for AFRs in idle and in OL-map control modes.
No. You can be in idle and OL, or driving and OL, or idle and CL, or driving and CL. There is no specific table for "idle fueling". It's covered by OL enrichment tables or by CL target trim by rpm/load/ect and many others.
1) Update: Changed open loop target table value but no effect to Commanded idle AFR, still steady 15:1. Seems in my case idle control mode is there with fixed value, idle set to 950rpm. Off-throttle commanded AFR value 15:1. This is closed loop measured value aswell. I am using the Romraider definition provided by this Thread with only one available Open loop target fuel table.
Blip the throttle and AFR command reacts, returning off-throttle to steady target 15:1
These are the main fuel target correction tables, base fuel target is the base correction scaled to reflect the corrected afr target so I don't have to always add 1+- table value. The other tables are corrections of that base value, ECT corrections are + enriches the target and - leans the target. WOT correction is the same.
1) Updated solution: A work around to the Commanded 15:1 idle value is found. I modified RomRaider definition to include an existing limiting parameter 'Closed Loop Lean Limit'(there is also CL rich limit stock value 0.85, type float).
I changed CL Lean Limit from Stock 1.05 to 1.01. This resulted in commanded value change from 15:1 to 14.78:1. This value seems to have the opportunity to perform catalyst 02-sensor oscillation. I also tried value CL Lean Limit 1.00 which resulted commanded value gapping to 14.6:1 or so(less than stoich I recall).
-- and as was mentioned, the car will idle just as 'fine' with this AFR, did not gain noticeable change
Update:
Managed to identify those Close Loop correction Tables A & B (RPMvsLOAD) and Three ECTvsLOAD correction, which in this Thread given RomRaider definition matches the Undefined Tables:
Table 3D - 26 = CL Fuel correction ECTvsLOAD
Table 3D - 29 = CL Fuel correction Table A
Table 3D - 30 = CL Fuel correction Table B
Tables 3D -27 & 28 ECTvsLOAD = CL Fuel correction
These tables can be used to set OL warmup fueling... not 100% sure the units are right, but basically it's fuel bucks and multipliers.
I’ve seen these maps but can’t figure out the units sadly.This and launch control/flat shift is one of the big mysteries for me with this ecu.I can’t figure out how they work
Here is some of the ECU logic.. it's a bit out of context, but I think it'll help explain.
In red: There is the Warmup Fueling table output that is multiplied by Warmup Fueling - Load Based Multiplier to get a value
In blue: There is the Warmup Fueling - Engine Speed Based table output (there is another table for these based on some fault conditionals.. but I am only showing the 1 table during normal operation in my screenshot in the post above)
Red and blue are added together to get warmup_ol_lambda.
warmup_ol_lambda is then added to the OL_target_final_lambda to (in a bit of a convoluted way) create the output lambda for fuel volume math.
The units of the tables can be considered additional "lambda points" to enrich the fuel mixture. Kind of shitty, but I think seeing the logic makes it easier to understand. higher value = more fuel.
Last edited by equinox92; Sep 28, 2025 at 10:06 AM.