I've found a whole set of tables and parameters related to the cruise / non cruise switch over point. I'll do my best to explain how to find them - this is for the EDM Sti 2008, AZ1G202G. I managed to trace them by tracing back the cruise_nonCruise switch in my rom.
Start by finding the Ram map ratio accel / cruise parameter. I followed the Knock Correction Advance Cruise and Non Cruise maps. In the code,you will see a parameter after engine load (and before the maps):
Code:
ROM:0003DCC0 Fun_KnockCorrectionAdvanceMax: ; CODE XREF: sub_42418+DAp
ROM:0003DCC0 ; DATA XREF: sub_42418+D8o ...
ROM:0003DCC0 mov.l r14, @-r15 ; Move Long Data
ROM:0003DCC2 sts.l pr, @-r15 ; Store System Register Long
ROM:0003DCC4 fmov.s fr12, @-r15 ; Floating-point move single precision
ROM:0003DCC6 fmov.s fr13, @-r15 ; Floating-point move single precision
ROM:0003DCC8 fmov.s fr14, @-r15 ; Floating-point move single precision
ROM:0003DCCA fmov.s fr15, @-r15 ; Floating-point move single precision
ROM:0003DCCC add #-4, r15 ; Add binary
ROM:0003DCCE mov.l #RAM_EngineSpeed_0, r2 ; Move Immediate Long Data
ROM:0003DCD0 fmov.s @r2, fr15 ; Floating-point move single precision
ROM:0003DCD2 mov.l #E_Engine_Load_4ByteExt_E32, r2 ; Move Immediate Long Data
ROM:0003DCD4 fmov.s @r2, fr14 ; Floating-point move single precision
ROM:0003DCD6 mov.l #E_Map_Ratio_Cruise_NonCruise, r2 ; [value]*.3515625
ROM:0003DCD8 fmov.s @r2, fr13 ; Floating-point move single precision
ROM:0003DCDA mov.l #Map3_KnockCorrectionAdvanceMaxCruise, r4 ; Move Immediate Long Data
ROM:0003DCDC mov.l #Fun_GetMapValue3D, r14 ; Move Immediate Long Data
ROM:0003DCDE fmov fr15, fr5 ; Floating-point move
ROM:0003DCE0 jsr @r14 ; Fun_GetMapValue3D ; Jump to Subroutine
ROM:0003DCE2 fmov fr14, fr4 ; Floating-point move
If you follow the Xrefs from the Map_Ratio parameters, you will see a set of 3 adjacent code locations:

Follow the first of the 3, and that takes you to the routine that determines the actual ratio to be used.
The second reference takes you some code that either adds or subtracts a value to the Map Ratio parameter, depending on whether a switch is set to cruise or non-cruise mode, and then limits the value to between 0 and 1. This value is then loaded back into the Map Ratio parameter.
Code:
ROM:00055EA6 loc_55EA6: ; CODE XREF:
Func_Determine_Cruise_Accel_Map_Ratio:loc_55EA0j
ROM:00055EA6 mov.b r0, @(h'16,gbr) ; FFFF8A5E
ROM:00055EA8 mov.b @(h'16,gbr), r0 ; FFFF8A5E
ROM:00055EAA tst r0, r0 ; Test Logical
ROM:00055EAC mov.l #E_Map_Ratio_Cruise_NonCruise, r6 ; Move Immediate Long Data
ROM:00055EAE bf/s loc_55EBA ; Branch of False with Delay Slot
ROM:00055EB0 fmov.s @r6, fr4 ; Floating-point move single precision
ROM:00055EB0
ROM:00055EB2 mov.l #Map_Switch_Adder_Non_cruise, r2 ; Move Immediate Long Data
ROM:00055EB4 fmov.s @r2, fr9 ; Floating-point move single precision
ROM:00055EB6 bra loc_55EC0 ; This section keeps the value between 0 and 1
ROM:00055EB8 fadd fr9, fr4 ; Floating-point add
ROM:00055EB8
ROM:00055EBA ; ---------------------------------------------------------------------------
ROM:00055EBA
ROM:00055EBA loc_55EBA: ; CODE XREF: Func_Determine_Cruise_Accel_Map_Ratio+76j
ROM:00055EBA mov.l #Map_Switch_Adder_Cruise, r2 ; Move Immediate Long Data
ROM:00055EBC fmov.s @r2, fr8 ; Floating-point move single precision
ROM:00055EBE fsub fr8, fr4 ; Floating-point subtract
ROM:00055EBE
ROM:00055EC0
ROM:00055EC0 loc_55EC0: ; CODE XREF: Func_Determine_Cruise_Accel_Map_Ratio+7Ej
ROM:00055EC0 mov.l #Fun_check_high_low_thresholds, r2 ; This section keeps the value between 0 and 1
ROM:00055EC2 fldi1 fr6 ; Floating-point load immediate 1.0
ROM:00055EC4 jsr @r2 ; Fun_check_high_low_thresholds ; Jump to Subroutine
ROM:00055EC6 fldi0 fr5 ; Floating-point load immediate 0.0
ROM:00055EC6
ROM:00055EC8 mov.l #E_Map_Ratio_Cruise_NonCruise, r6 ; Move Immediate Long Data
ROM:00055ECA fmov.s fr0, @r6 ; Floating-point move single precision
ROM:00055ECC add #h'10, r15 ; Add binary
ROM:00055ECE ldc.l @r15+, gbr ; Load to Control Register Long
ROM:00055ED0 lds.l @r15+, pr ; Load to System Register Long
ROM:00055ED2 rts ; Return from Subroutine
ROM:00055ED4 nop ; No Operation
The switch at ROM:00055EA6 is cruise or non_cruise (0 or 1). You will need to resolve the indirect addressing by checking the address that is loaded into gbr at the beginning of the code. As a detour, you can verify this is the cruise_non cruise switch in another section of the rom. I scoured around tables that reference cruise and non cruise logic. Go to the Closed Loop Fueling Compensation Immediate Cruise (ECT) table location:
Code:
ROM:0008924C Map3_CLFuelingTargetCompensationImmNonCruiseECT:.data.w h'10
ROM:0008924C ; DATA XREF: sub_2DEDC+16o
ROM:0008924C ; ROM:off_2E114o
ROM:0008924C ; 16 Colones
ROM:0008924C ;
ROM:0008924C ; 3 Lignes
ROM:0008924E .data.w 3
ROM:00089250 .data.l Table_CoolantTemperature_YAxis
ROM:00089254 .data.l CLFuelingTargetCompensationImmNonCruiseECT_Load_YAxis
ROM:00089258 .data.l CLFuelingTargetCompensationImmNonCruiseECT
ROM:0008925C .data.l h'8000000 ; 16 Byts
ROM:00089260 .float 0.000015258789
ROM:00089264 .float -0.5
Follow the Xref back from the tables to the data list:
Code:
ROM:0002E104 off_2E104: .data.l Ram_MemoryStartCoolantTemperature
ROM:0002E104 ; DATA XREF: sub_2DEDC+4r
ROM:0002E108 off_2E108: .data.l Ram_CoolantTemperature ; DATA XREF: sub_2DEDC+8r
ROM:0002E10C off_2E10C: .data.l E_Engine_Load_4ByteExt_E32 ; DATA XREF: sub_2DEDC+Cr
ROM:0002E110 off_2E110: .data.l RAM_Cruise_NoCruise ; DATA XREF: sub_2DEDC+10r
ROM:0002E114 off_2E114: .data.l Map3_CLFuelingTargetCompensationImmNonCruiseECT
ROM:0002E114 ; DATA XREF: sub_2DEDC+16r
ROM:0002E118 off_2E118: .data.l Map3_CLFuelingTargetCompensationImmCruiseECT
ROM:0002E118 ; DATA XREF: sub_2DEDC+1Ar
ROM:0002E11C off_2E11C: .data.l Fun_GetMapValue3D ; DATA XREF: sub_2DEDC:loc_2DEF8r
ROM:0002E120 off_2E120: .data.l Ram_FFFF7304 ; DATA XREF: sub_2DEDC+22r
ROM:0002E124 off_2E124: .data.l Variable_flt_C7A20 ; DATA XREF: sub_2DEDC+28r
ROM:0002E128 off_2E128: .data.l Ram_FFFF7058 ; DATA XREF: sub_2D940+5E8r
ROM:0002E128 ; sub_2DF9A+18r
ROM:0002E12C off_2E12C: .data.l Ram_FFFF7380 ; DATA XREF: sub_2D940:loc_2DF2Cr
ROM:0002E130 off_2E130: .data.l Variable_flt_C7A24 ; DATA XREF: sub_2D940+608r
ROM:0002E130 ; sub_2DF9A+C6r
ROM:0002E134 off_2E134: .data.l Fun_check_high_low_thresholds
ROM:0002E134 ; DATA XREF: sub_2D940+616r
ROM:0002E134 ; sub_2D940+644r
ROM:0002E138 af3learningmax?:.float 0.5 ; DATA XREF: sub_2D940+618o
ROM:0002E138 ; sub_2D940+646o
ROM:0002E13C af3learningmin?:.float -0.5 ; DATA XREF: sub_2D940+61Co
ROM:0002E13C ; sub_2D940+64Ao
In AZ1G202G, the Ram variable being referenced above the cruise / non cruise tables was the switch. If you follow that back to the code, you will see that it is compared for status 0 or 1, and accordingly cruise or non cruise maps are chosen.
Ok - back to the map switching logic. Now to find the other related tables and parameters, take the X-ref from the Map Ratio routine to the routine that calls it. If you look at it in graph view, it's a whole collection of NOPs leading to a BSR to a routine. Following these BSRs to the routines, and one of them you will see a RAM parameter being checked for a value of 1, 2 or 3 (this paramater is the DCCD I, S, S# switch):
Code:
ROM:00055BC4 sub_55BC4: ; CODE XREF: sub_55260+7Ep
ROM:00055BC4 mov.l r13, @-r15 ; Move Long Data
ROM:00055BC6 mov.l r14, @-r15 ; Move Long Data
ROM:00055BC8 sts.l pr, @-r15 ; Store System Register Long
ROM:00055BCA fmov.s fr14, @-r15 ; Floating-point move single precision
ROM:00055BCC stc.l gbr, @-r15 ; Store Control Register Long
ROM:00055BCE mov.l #Ram_FFFF8A52, r0 ; Move Immediate Long Data
ROM:00055BD0 ldc r0, gbr ; Load to Control Register
ROM:00055BD2 add #-h'1C, r15 ; Add binary
ROM:00055BD4 mov.l #Ram_FFFF8030, r2 ; Move Immediate Long Data
ROM:00055BD6 fmov.s @r2, fr14 ; Floating-point move single precision
ROM:00055BD8 mov.l #RAM_Switch_I3_S1_SSharp2_0, r6 ; Move Immediate Long Data
ROM:00055BDA mov.b @r6, r14 ; Move Byte Data
ROM:00055BDC mov.l #Ram_FFFF6120, r6 ; Move Immediate Long Data
ROM:00055BDE mov.l #sub_22A36, r2 ; Move Immediate Long Data
ROM:00055BE0 jsr @r2 ; sub_22A36 ; Jump to Subroutine
ROM:00055BE2 mov.b @r6, r13 ; Move Byte Data
ROM:00055BE2
ROM:00055BE4 mov.b r0, @r15 ; Move Byte Data
ROM:00055BE6 extu.b r14, r0 ; Extend as Unsigned (Byte)
ROM:00055BE8 cmp/eq #1, r0 ; Sport Sharp Mode
ROM:00055BEA bt loc_55C10 ; Branch if True
ROM:00055BEA
ROM:00055BEC cmp/eq #2, r0 ; Sport Mode
ROM:00055BEE bf loc_55C08 ; I Mode
ROM:00055BEE
.
.
.
ROM:00055C06
ROM:00055C08 ; ---------------------------------------------------------------------------
ROM:00055C08
ROM:00055C08 loc_55C08: ; CODE XREF: sub_55BC4+2Aj
ROM:00055C08 cmp/eq #3, r0 ; I Mode
ROM:00055C0A bt loc_55C28 ; Branch if True
ROM:00055C0A
ROM:00055C0C tst r13, r13 ; Test Logical
ROM:00055C0E bf loc_55C28 ; Branch if False
ROM:00055C0E
There's a set of 6 2d tables (Cruise and Non Cruise for each of the 3 modes) here that are the Cruise / Non Cruise minimum and maximum thresholds for requested torque vs. RPM that determine (amongst a number of other tables and parameters) whether you switch to cruise or non-cruise mode.
Code:
ROM:00055BF0 mov.l #Table_MAP_Switch_NonCruise_REq_Torque_Thresh_Max_B, r4 ; Move Immediate Long Data
ROM:00055BF2 mov.l #Fun_GetMapValue2D_8B_16B_Float, r14 ; Move Immediate Long Data
ROM:00055BF4 mov.l #Ram_FFFF8AC0, r13 ; Move Immediate Long Data
ROM:00055BF6 mov #h'FFFFFFC8, r0 ; FFFF8A88
ROM:00055BF8 jsr @r14 ; Fun_GetMapValue2D_8B_16B_Float ; Jump to Subroutine
ROM:00055BFA fmov.s @(r0,r13), fr4 ; Floating-point move single precision
ROM:00055BFA
ROM:00055BFC mov #h'FFFFFFD4, r0 ; Move Immediate Byte Data
ROM:00055BFE fmov.s fr0, @(r0,r13) ; FFFF8A94
ROM:00055C00 mov.l #Table_MAP_Switch_Cruise_Switch_REq_Torque_Thresh_Min_B, r4 ; Move Immediate Long Data
ROM:00055C02 mov #h'FFFFFFC8, r0 ; FFFF8A88
ROM:00055C04 bra loc_55C3E ; Branch
ROM:00055C06 fmov.s @(r0,r13), fr4 ; Floating-point move single precision
Further down the code, you will find two float values being compared to a Ram parameter (which logged is airflow gs) - this is the map switching thresholds based on MAG gs values (enable non-cruise above and cruise below) - in my rom the values are 45 and 50.
Code:
ROM:00055C60 loc_55C60: ; CODE XREF: sub_55BC4+8Cj
ROM:00055C60 ; sub_55BC4+96j
ROM:00055C60 mov.l #MAP_Switch_Cruise_NonCruise_Airflow_enable_below, r2 ; Move Immediate Long Data
ROM:00055C62 fmov.s @r2, fr9 ; Floating-point move single precision
ROM:00055C64 mov #h'FFFFFFD0, r0 ; Move Immediate Byte Data
ROM:00055C66 fmov.s @(r0,r13), fr8 ; FFFF8A90
ROM:00055C68 fcmp/gt fr8, fr9 ; Floating-point compare greater than
ROM:00055C6A bf loc_55C72 ; Branch if False
ROM:00055C6A
ROM:00055C6C mov #1, r0 ; Move Immediate Byte Data
ROM:00055C6E bra loc_55C82 ; Branch
ROM:00055C70 mov.b r0, @(h'65,gbr) ; FFFF8AB7
ROM:00055C70
ROM:00055C72 ; ---------------------------------------------------------------------------
ROM:00055C72
ROM:00055C72 loc_55C72: ; CODE XREF: sub_55BC4+A6j
ROM:00055C72 mov #h'FFFFFFD0, r0 ; Move Immediate Byte Data
ROM:00055C74 fmov.s @(r0,r13), fr9 ; FFFF8A90
ROM:00055C76 mov.l #MAP_Switch_Cruise_NonCruise_Airflow_disable_above, r2 ; Move Immediate Long Data
ROM:00055C78 fmov.s @r2, fr8 ; Floating-point move single precision
ROM:00055C7A fcmp/gt fr9, fr8 ; Floating-point compare greater than
ROM:00055C7C bt loc_55C82 ; Branch if True
ROM:00055C7C
ROM:00055C7E mov #0, r0 ; Move Immediate Byte Data
ROM:00055C80 mov.b r0, @(h'65,gbr) ; FFFF8AB7
Further on there is a 2D table (11 cells) that is the intake temperature threshold versus RPM:
Code:
ROM:0008ADEC Table_Map_Switching_NonCruise_Switch_Min_Intake_Temp:.data.w h'B
ROM:0008ADEC ; DATA XREF: sub_55BC4:loc_55C82o
ROM:0008ADEC ; sub_55BC4:off_55D1Co
ROM:0008ADEC ; 11 Lignes
ROM:0008ADEC ; 16 Bits
ROM:0008ADEE .data.w h'800
ROM:0008ADF0 .data.l Table_D5480_YAxis
ROM:0008ADF4 .data.l Table_D5480
ROM:0008ADF8 .float 0.00390625
ROM:0008ADFC .float -256.0
Further down, a value of -40 is checked against a parameter - this is the coolant temperature threshold for switching (it also sits alongside the adders identfied earlier on).
If you go back to the NOP / BSR collection, another routine (to the left of this one above graphically) has some hex values (177 and FA that translate into 375 and 250) that I suspect are timers / delays for the switches to kick in, but I have not logged these locations.
Phew... ok. Now to post up the tables and scaling.